ورود

نسخه کامل مشاهده نسخه کامل : نرم افزار اکانتیگ و پیش نیاز مطالعاتی



Life24
13-05-2013, 17:36
با سلام

صرفا جهت آشنایی و یادگیری اگر کسی بخواد نرم افزار اکانتینگ مثل IBS راه بندازه. به چه پیش زمینه هایی نیاز داره؟ چه چیزهایی رو باید دقیقا و کاملا بلد باشه؟
مسلط به چه ابزارهایی باید بود؟ چه ارتباط هایی نیاز به برقراری داریم اینجا؟
فرض زبان رو سی شارپ بزاریم و پایگاه داده رو sql
حالا برای شروع و راحتی به نظرم base کار فرض کنیم بزاریم روی شبکه LAN
در حد پروژه باشه این کار. نه ابتدایی نه خیلی پیشرفته
در حد یادگیری شخصی اما کار خوب.

szh_1367
13-05-2013, 22:22
با سلام

صرفا جهت آشنایی و یادگیری اگر کسی بخواد نرم افزار اکانتینگ مثل IBS راه بندازه. به چه پیش زمینه هایی نیاز داره؟ چه چیزهایی رو باید دقیقا و کاملا بلد باشه؟
مسلط به چه ابزارهایی باید بود؟ چه ارتباط هایی نیاز به برقراری داریم اینجا؟
فرض زبان رو سی شارپ بزاریم و پایگاه داده رو sql
حالا برای شروع و راحتی به نظرم base کار فرض کنیم بزاریم روی شبکه LAN
در حد پروژه باشه این کار. نه ابتدایی نه خیلی پیشرفته
در حد یادگیری شخصی اما کار خوب.

سلام

این نرم افزار اکانتینگ چی هست ؟ مثالی ، لینکی ، اموزشی و. . .

Life24
14-05-2013, 08:40
سلام

این نرم افزار اکانتینگ چی هست ؟ مثالی ، لینکی ، اموزشی و. . .

سلام
مثل همین نرم افزار هایی که برای کنترل کاربران دیال آپ یا وی پِی *ان استفاده میشه
مثلا به طرف به مدت یک روز یا 1 ماه یا 12 ساعت بهش اکانت میده تا از سرویس استفاده کنه
حساب کاربران . تعداد بارهایی که لاگین شدن.تاریخ . اگر هزینه رو بعدا میده. مثلا به تعداد ساعاتی که رفته مبلغ میگریره و حساب میکنه پای مشتری و. ..

_H2_
14-05-2013, 20:26
سلام
اتفاقاً بطور شخصی مدتی در حال کار روی این مسئله بودم ...
شاید اولین نکته مورد مصرف و محدودیت های موجود است!!!

مثلاً معمولاً کسی از بستر انتقال Socks برای اکانتینگ شبکه داخلی استفاده نمیکند! ولی خوب در مقابل درصورت نبود محدودیت های قانونی(!) پروتکل خوبی برای کار در اینترنت است...
یا در شرایط قانونی جاری برای شبکه داخلی احتمالاً کار روی پروتکل های L2TP و PPTP بهترین نتیجه را خواهد داشت
ضمن اینکه هرکدام از اینها شرایط خودشان را دارند، ولی خوب همیشه محدودیت هایی وجود دارد! متوجه منظورم که هستید؟!
در این صورت(کار با پروتکل های استاندارشده) باید RFC های استانداردهای فوق را بدقت مطالعه کنید.

این کارها را میتوان از روش های گوناگونی انجام داد...
مثلاً ...
الف) در یک مبنای ساده میتوانید خودتان نسخه سرور و کلاینتی با پروتکل ارتباطی سفارشی خودتان در بستر TCP یا WCF ایجاد کنید یا اینکه در مقابل خود را ملزم به رعایت از خط مشی های پروتکل های موجود مثل Socks بداند.

ب) برنامه شما میتواند پلاگینی از یک نرم افزار بزرگ تر مدیریت شبکه باشد و از کنترل اصلی مسیر یابی و ترافیک شبکه دورباشد، مثل ISA/TMG

ج) برنامه شما میتواند در کنار سرویس های موجود ویندوز کار کند و فقط بخش خدمات اکانتینگ را انجام دهد که بازهم نتیجتاً از مدیریت و مسیریابی ترافیک شبکه معاف میشود، مانند استفاده از سرویس RRAS و پروتکل Radius

د) برنامه های متن بازی هم در بستر اینترنت وجود دارد که میتوان از آنها کمک گرفت و البته برخی گرفته اند!

و...

اگر کاربردتان را مشخص کنید بهتر میتوان گزینه های دیگر را کنار گذاشت و به یک مورد خاص پرداخت.
ولی در کل احتمالاً نیاز به چندریسمانی و TCP و شاید UDP و دیتابیس و WindowsService و... خواهید داشت.

البته لازم به ذکر است که برخی نرم افزارهای این حوزه با سیستم عامل و حتی سخت افزارهای خاص خودشان گره خوردند و اگر بخواهید چیزی در حد قول های این حوزه بسازید، باید انواع پرتکل های استاندارد را پشتیبانی کنید، قابلیت ریموت و سایت کنترل و گذارش و... داشته باشید.

اگر بخواهید هدف تان LAN باشد، شاید روی Radius کار کنید، بد نباشد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
رادیوس یک پروتکل اکانتینگ UDP است که میتوانید در کنار سرویس های مرکزی WindowsServer شبکه های VPN را تشکیل و پهنای باند را شمارش کنید...

در مبنای ساده تر و تشکیل یک پروتکل شخصی میتوانید روی Proxy کار کنید و درخواست های http را روی آدرس محلی 127.0.0.1 دریافت و به نسخه سمت سرور ارسال کنید
و...

Life24
15-05-2013, 08:51
سلام
ممنون از پاسخ شما

ما ابتدا از ساده ترین حالت شروع می کنیم. که وسط کار درجا نزنیم به قول معروف کار رها بشه !
والا چیزی که می خوام در حد یک پروژه هست. یک پایه و سکو پرش برای کارهای بعد میخوام.
البته من نظرم این هست که پنل تحت وب باشه.یعنی پنل مدیریت ادمین و کاربران تحت وب باشه.
یعنی اگر یکی گفت چی کار کردی بگم یک نرم افزار اکانتیگ خیلی ساده نوشتم و تست هم کردمش.
میخوام یک تجربه کاری شخصی خوب بشه. واقعا و در عمل بتونم این موارد رو بهم ربط بدم و باهاشون کار کنم.و بفهمم چی داره می گذره پشت این دکمه ها در عمل!


اگر کاربردتان را مشخص کنید بهتر میتوان گزینه های دیگر را کنار گذاشت و به یک مورد خاص پرداخت.
به نظرم برای سادگی کار در حد یک LAN کار کنیم. Base را روی ویندوز بزاریم.
مورد رو محدود کنیم به V*PN . یعنی اکانت V*PN به کاربران داخل یک LAN میدهیم تا به ما وصل شوند و اینترنت داشته باشند.
حال کار اکانتینگ انجام بشه.مثلا اکانت 1 ساعته بدیم . اکانت یک روزه بدیم.
یعنی میشه با همان RRAS . والا با RRAS و RADIUS کار کردم اما نه در حد برنامه نویسی . در حد راه اندازی RRAS و این کاربران وصل شوند و از این کارها با ویندوز سرور 2008
و RADIUS هم در این حد که تصدیق کاربران را با این RADIUS انداختم روی یک سرور دیگر .در همین حد و نه بیشتر.
من حدود 7-8ماه وقت مطالعه دارم.یعنی شش ماه پیش نیازها رو خوب یاد بگیرم بعد برم سراغ کار اصلی و پیاده کردنش.
اگر لطف بفرمائید و بگوئید که دقیقا باید چه چیزهایی کاملا مسلط بود و چه مباحثی بیشتر روش مانور بدم؟ چه پروتکل هایی در این حد کار باید بلد بود؟
اگر صلاح میدانید موضوعی بیشتر باز کنم . بفرمائید لطفا
ممنون میشم

senaps
15-05-2013, 10:22
سلام....
اتفاقا برای من هم مبحث جالبی هستش، ولی من از برنامه نویسی شبکه متنفرم! :)...

برا همین، احتمالا از WCF و سرویس ها پیش میرفتم...
انجام کار هم به این شکل بودش که یه سری انواع اکانت تعریف میکردم:
زمانی و حجمی....
حالا از نوع حجمی، مثلا اکانت های محدود به یک گیگ، 10 و بالاتر و یا کمتر و از نوع زمانی، 5 و 10 و 20 و 50 و 100 ساعته و یک‌ماهه و اینا میزدم...!!!

پس حالا من همه‌ی این گروه‌ها رو دارم....
از نوع هر کدوم از اینها که اکانت بزنی، از قواعد همون هم پیش میره...
مثلا اکانت زمانی، صرفا تا اون زمان بخصوص اعتبار داشته باشه، مگر اینکه تمدید بشه...

در نهایت، یک دیتابیس نیازه که اطلاعات مربوطه رو نیگر داره... خیلی ساده:
اکانت از چه نوعیه، یوزر نیمش چیه، پسوردش چیه؟، سایر مشخصاتش چیه و همچنین یه فایل بخصوص دیگه هم برای نگه‌داشتن لاگ کارهای صورت گرفته!! حالا به نظرم اینجا دیتابیس باشه خیلی بهتره... چون چیزی که میخواد ذخیره بشه، یه ساعت ورود و خروج، یه تاریخ، و یه مدت زمان استفاده هستش...(یا حجم مورد استفاده...)...

من زیر ساخت سیستم رو اینجوری میزدم..(تحلیل اولیه‌ام بدون هیچ دانشی نسبت به مسئله این بودش...:) )...

چیزی که هست، اینه که کنترل کنیم میزان بایت‌های ورودی و خروجی رو برای بدست اوردن حجم کلی تبادل شده‌ی دیتا... در حالت زمانی که ارزش چندانی نداشته باشه، در حالت حجمی، اگر مجموع بایت های ورودی و خروجی طی یک مدت زمان خاصی، به مقدار محدودیت حجمش رسید، اون پیغام یا پسغامی که باید بده رو بده...!! همین...

به نظرم با سرویس ها خیلی راحت تر میشه پیاده‌اش کرد و در نهایت لایه‌ی ارتباط با کاربرش میتونه به لطف سرویس محور بودن، هر چیزی باشه... وب، دسکتاپ، موبایل یا SMS ! :)..

_H2_
17-05-2013, 09:10
سلام
چون با این پروتکل کارکردید اصول را میدانید...
وقتی ما از روش هایی مثل Socks یا [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده میکنیم، نمیتوانیم ترافیک تمام پورت های TCP/UDP رایانه را کنترل و مسیریابی کنیم.
ولی در مقابل در تحسین پروتکل VPN/L2TP/PPTP میتوان گفت که این پروتکل ها دقیقاً برای پشتیبانی از کنترل ترافیک زیر ساختهای کل یک شبکه طراحی شده اند.

خوشبختانه تقریباً همه سیستم عامل ها مجهز به کلاینت قابیلت اتصال به VPN/L2TP/PPTP هستند، در نتیجه نیازی به کارخاصی در سمت کلاینت ندارید.
میماند سرور که بهترین راه شما سرویس RRAS ویندوزسرور است.
این سرویس ویندوز اصل کار مربوط به کنترل، مسیریابی و انتقال ترافیک VPN/L2TP/PPTP را انجام میدهد که در کل مورد بسیار پیچیده ای است.
ولی ذاتاً فاقد اکانتینگ AAA است، در مقابل در پیکربندی هایش امکان اتصال به یک سرور Radius را دارد.
همانطورکه قبلاً هم خدمتتان عرض کردم و احتمالاً میدانید، Radius یک پروتکل اکانتینگ صرف است.
Radius برمبنای یکسری Attribute سریالی شده روی بستر UDP کار میکند.

=====

برنامه شما باید حداقل مجهز به سه بخش اصلی باشد.
- دیتابیس و جداول مورد نیاز
(کاربران، رمزها، اطلاعات مصرف، قواعد و محدودیت های مصرف هر کاربر یا گروه و...)
احتمالاً از بهترین روش های ارتباط با دیتابیس هم میتوانید روی EntityFramework حساب کنید.

- یک ویندوزسرویس به عنوان هسته مرکزی پروژه که به پورت UDP مربوطه گوش دهد و درخواست های Radius را پس از دی-سریالی کردن، تحلیل و در دیتابیس ثبت و با قواعد مقایسه و درنهایت پاسخ دهد.
(پورت ها و IP های گوش دادن به درخواست های Radius باید از طریق جدولی حاوی تنظیمات از دیتابیس تامین شود یا حداقل فایلی در کنار exe سرویس)
برای فرمت (ساختمان و چیدمان بایتها) خواندن و پاسخ دادن درخواست های Radius رسیده باید به منابع استاندارد RFC این پروتکل مراجعه کنید.
از جمله:
RFC2865 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
RFC2869 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
و...
از معروفین ترین موارد پیاده سازی این پروتکل میتوان به پروژه متن باز سایت freeradius.org اشاره کرد.
(که البته #C نیست ولی بحرحال یک برنامه نویس با خواندنش میتواند خیلی چیزها را متوجه شود و حتی تبدیلش کند.)

- یک برنامه Management جهت ویرایش اطلاعات دیتابیس این همانطورکه خواستید میتواند یک وب سایت (مثلاً MVC) باشد (که در IIS میزبانی شود) یا یک برنامه exe معمولی (مثلاً WPF) باشد.
(شامل همان موارد: کاربران و رمزها و اطلاعات مصرف و قواعد و محدودیت های مصرف هر کاربر یا گروه و...)

=====

خیلی از موارد مورد نیاز این پروژه جزء موارد پرکاربرد دنیای برنامه نویسی است...
شی گرایی، معماری چندلایه، چندریسمانی، ارتباط با دیتابیس و...
بعد موارد فوق، مورد خاص تری که نیاز دارید، برنامه نویسی UDP/Socket ها است و باید به RFC/Radius های استانداردهای مربوطه هم مسلط باشید.

=====

دقیق نمیدانم چه کمکی نیاز داشتید، ولی تلاش کردم موارد کلی را که کمکتان کند بیان کنم، امیدوارم چیز جدیدی گفته باشم و کمکی کرده باشد.
موفق باشید.