برنامه نویسی تحت شبکه در سی شارپ
سلام. یک برنامه تحت سی شارپ و Sql server نوشته شده است. این برنامه 50 کاربر با سطح دسترسی های متفاوت دارد. قصد داریم این برنامه بصورت شبکه کار کنه. یعنی هر کاربر فقط برنامه را در سیستمش نصب کند و با یوزرنیم و پسوردی که از قبل داشته است ، وارد محیط نرم افزار شود.
چند تا نکته:
- برنامه در windows form نوشته شده است
- برای اتصال به دیتابیس از entity framework 6 استفاده میشه
- کامپیوتر ها با پروتکل ip4 به هم متصل هستند.
- میخوایم که دیتابیس بصورت database server باشد و حتی سرور نرم افزار ، تحت شبکه متصل شود. (نمی خوایم که برنامه در کامپیوتر سرور باشد که با خاموش شدن آن کامپیوتر ، کلاینت ها غیر فعال شوند)
حالا چند تا سوال داشتم :
1- روش و دیدگاه کلی برای این کار چیه؟
2- آیا tutorial برای این موضوع موجود است؟
3- سرعت و امنیت به چه صورت هستش؟
4- امکانش هست همین برنامه ای که بصورت single هست را بصورت شبکه کنیم؟
ببخشید تازه کار هستم و سوال ها کلی هستش. متشکر
4 پاسخ
بله حرفتون درسته. آخه یک موضوعی رو مطالعه کردم ، که اگه در برنامه نویسی تحت شبکه اکثر عملیات رو به عهده سرور بزاریم ، مثل sp ها که در دیتابیس سرور انجام میشه، سرعت کار بالاتر میره. این موضوع رو تایید میکنید؟
ممنون دوست عزیز از پاسخ کاملتون. در مورد مباحث همزمانی، که موقع insert و update و delete رخ میده، از stored procedure در sql server استفاده میکنم. برای همین موقع نوشتن این sp ها ، از دستوراتی مثل rollback tran و commit tran استفاده کردم. این موارد باعث handle شدن میشه؟ مدل استفاده شده هم ef6 code first هست.
سلام
برای شبکه کردن یک چنین نرم افزارهایی در گام اول فقط کافیه توی کانکشن استرینگت، بجای نام سرور بانک اطلاعاتی، آی پی و شماره پورت را قرار بدی. البته قبلش حتماً در مورد انواع کانشکن استرینگ مطالعه کن و مطابق با نیارت از نوع مورد نظرت استفاده کن چون بعضی وقتها ریزه کاریهای خودش رو داره که حتماً باید اونها رو در نظر بگیری.
هرموقع نرم افزارت روی هر کدوم از کلاینتها اجرا میشه اول از همه باید براش کدنویسی کرده باشی که از ارتباط با سرور و دسترسی با بانک اطلاعاتی اوکی باشه واگه نبود پیامی به کاربر داده بشه واینجاست که در ساده ترین حالت باید یک فرم رابط کاربری توی نرم افزارت ایجاد کرده باشی که نام سرور یا آی پی سرور (انتخابی و به دلخواه کاربر) + شماره پورت اسکوئل سرور (چون احتمال داره پورت به هردلیلی تغییر داده شده باشه یا بشه) قابل انتخاب توسط کاربر باشه.
نام کامپیوترهای شبکه و آی پی های اونها باید نمایش داده بشه تا کاربر فقط با انتخاب اون امکان تعیین سرور رو داشته باشه بعد از انتخال کلید (تائید) توسط کاربر، حالا باید validationهای مربوط به کانکشن انجام بشه.
از طرفی دیگه باید مسائل مربوط به جلوگیری از نوشتن اطلاعات همزمان کاربران شبکه یا به اصطلاح Concurrency را هم در نظر بگیری، من نمیدونم شما با چه تکنولوژی کار کردی؟؟!! اگه از Design Pattern و EF و از استراتژی Code-First کار کرده باشی استفاده کرده باشی که این موضوع رو بخوبی میتونی هندل کنی و در غیراینصورت حتماً اینمورد را در نظر بگیر.
در مورد سرعت و امنیت هم همه چیز بستیگ به سطح اطلاعات و کدنویسی و تکنولوژیهایی که در سمت کلاینت و هم در سمت سرور بکار میگیری داره. مثلاً اگه بانک اطلاعاتیت را روی SQL SERVER2017 اوکی کنی، در خصوص پیاده سازی امنیت اطلاعات دنیایی از امکانات با ریزه کاریهاش رو در دسترست قرار میده که از سمت کلاینت و با کدنویسی هم میتونی به خیلی از قسمتهاش دسترسی داشته باشی.
(این هم اون کلیاتی که شما میخواستی)
موفق باشی.
در پاسخ به reza_5180:
من در تعجبم که در صورتیکه شما از EF CodeFirst در حال استفاده کردن میباشید، با وجودیکه EF CodeFirst همه این عملیات + خیلی دیگه از کارها را بصورت خیلی دقیقتر از استورپروسیجرهای شما و البته بصورت DesignPattern انجام میده پس چرا شما از استورپروسیجر استفاده میکنید؟؟!!!
ظاهراً بحث در این خصوص با شما زیاده... و باید مطالعه تون رو در زمینه استفاده از تکنولوژی EF CodeFirst بالاتر ببرید و عُمقیتر مطالعه اش کنید. به عنوان مثال شما به راحتی می تونید میاحث مربوط به Concurrency یا همان همزمانی اطلاعات را با ایت تکنولوژی با یکی دو سه سطر برای کل پروژه تون هندل کنید.