C# Programming Guide
سورس چت روم کلاینت و سرور
نمونه سورس کلاینت و سرور اتاق چت روم که حدود 1 سال پیش با سیگنالگو نوشتم. قابلیت های این چت روم:
1.چت و پیام رسانی کاربران
2.کاربران ادمین و غیر ادمین و قابلیت محدود کردن دسترسی کاربران
3.گفتگوی صوتی انلاین بین کاربران
4.کامنت کردن ورود و خروج کاربران
5.اجازه گرفتن کاربران جهت گفتگوی صوتی (بدون اجازه گرفتن نمیتونن صحبت کنن)
و تنظیمات اتاق و ...
1.چت و پیام رسانی کاربران
2.کاربران ادمین و غیر ادمین و قابلیت محدود کردن دسترسی کاربران
3.گفتگوی صوتی انلاین بین کاربران
4.کامنت کردن ورود و خروج کاربران
5.اجازه گرفتن کاربران جهت گفتگوی صوتی (بدون اجازه گرفتن نمیتونن صحبت کنن)
و تنظیمات اتاق و ...
C# Programming Guide
https://github.com/Ali-YousefiTelori/NoorpodConversation
نحوه ی استفاده:
1.دو تا پروژه ی سرور و کلاینت از هم تفکیک شده:
الف کلاینت:
NoorpodConversation.UI
ب سرور:
NoorpodConversation.WindowsService
2.سرور با کنسول اجرا میشه که از دیتابیس sql express استفاده میکنه خودش دیتابیس رو کنار نرم افزار میسازه و همه ی کاراش رو میکنه فقط شما باید sql express نصب کرده باشید روی سیستمی که سرور رو اجرا میکنید برای تغییر connectionstring هم به فایل NoorpodContext.cs رجوع کنید و تغییرش بدید.
3.به صورت لوکال میتونید راحت تست کنید و نام کاربری admin و رمز 123 به طور پیشفرض با کاربری ادمین ساخته میشه که میتونید لاگین کنید.
4.برای راه اندازی سرور روی شبکه یا اینترنت حتما نرم افزار سرور رو که فایل NoorpodConversation.WindowsService.exe هست توی فایروال بهش دسترسی بدید. و برای کلاینت هم توی سورس NoorpodServiceHelper.cs آدرس localhost رو (خط 63 و 66 توی سورس) به آی پی سرور خودتون (شبکه داخلی یا اینترنت) تغییر بدید تا کلاینت به اون آدرس متصل بشه.سرور تغییراتی نمیخواد.
5.سورس با ویژوال استادیو 2017 ویرایش شده نسخه های پایین تر کار نمی کنن.
1.دو تا پروژه ی سرور و کلاینت از هم تفکیک شده:
الف کلاینت:
NoorpodConversation.UI
ب سرور:
NoorpodConversation.WindowsService
2.سرور با کنسول اجرا میشه که از دیتابیس sql express استفاده میکنه خودش دیتابیس رو کنار نرم افزار میسازه و همه ی کاراش رو میکنه فقط شما باید sql express نصب کرده باشید روی سیستمی که سرور رو اجرا میکنید برای تغییر connectionstring هم به فایل NoorpodContext.cs رجوع کنید و تغییرش بدید.
3.به صورت لوکال میتونید راحت تست کنید و نام کاربری admin و رمز 123 به طور پیشفرض با کاربری ادمین ساخته میشه که میتونید لاگین کنید.
4.برای راه اندازی سرور روی شبکه یا اینترنت حتما نرم افزار سرور رو که فایل NoorpodConversation.WindowsService.exe هست توی فایروال بهش دسترسی بدید. و برای کلاینت هم توی سورس NoorpodServiceHelper.cs آدرس localhost رو (خط 63 و 66 توی سورس) به آی پی سرور خودتون (شبکه داخلی یا اینترنت) تغییر بدید تا کلاینت به اون آدرس متصل بشه.سرور تغییراتی نمیخواد.
5.سورس با ویژوال استادیو 2017 ویرایش شده نسخه های پایین تر کار نمی کنن.
پروژه ی سلامتی که اخیرآ توسط شرکت ما نوشته شده، توی این پروژه به طور کامل از تکنولوژی سیگنالگو استفاده کردیم:
https://cafebazaar.ir/app/ir.myhealthylife.app/?l=fa
https://cafebazaar.ir/app/ir.myhealthylife.app/?l=fa
cafebazaar.ir
هلثی لایف
دانلود و نصب برنامههای رایگان و غیررایگان اندروید در ایران
C# Programming Guide
پکیج entity framework بیشترین استفاده را در میان ORM ها داره که کار دیتابیسی رو برای برنامه نویسان سرور بسیار سریع و آسان میکنه به زودی آموزش هایی در رابطه با EF خواهیم داشت.
البته شما میتونید از EF برای برنامه نویسی کلاینت هم استفاده کنید که برای برنامه های Cross Platform از جمله موبایل پیشنهاد نمیشه. روش های ساده تر و سریعتر و بهتری هم هست که بعدا معرفی خواهد شد
سلام دوستان هرگونه سوال، پیشنهاد و ... در مورد SignalGo خواستید میتونید توی گروه زیر بپرسید خودم آنلاین بهتون پاسخ میدم.کسانی که مشتاق هستند که این پروژه چطوری کار میکنه و میخوان سرعت ساخت پروژه های تحت شبکشون و برنامه های سرورشون بیشتر بشه حتما پیشنهاد میکنم یک مروری بر پروژه ی سیگنالگو داشته باشن.
لینک گروه:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
لینک گروه:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
Telegram
SignalGo
ارتباط امن و سریع بین کلاینت و سرور برای ساخت نرم افزار های سرور و کلاینت و بازی های شبکه ای
آدرس گروه:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
آدرس گروه:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
دقت و معماری در برنامه نویسی مخصوصا در برنامه نویسی Back-End خیلی مهمه اگر برنامه ای نوشتید که با درست کردن بخشی از اون برنامه بخش دیگری خراب میشه و این روند همینطور ادامه داره بی تردید یه جای کار میلنگه و اون کم تجربگی برنامه نویس رو میرسونه.
یه برنامه نویس حرفه ای کاملا میدونه که چطوری بخش ها رو از همدیگه جداسازی کنه و مخلوط کردن لایه ها چه پیامد های بدی داره. ممکنه گاهی اوقات پیش خودمون یه سری مقایسه هایی کنیم مثلا بین برنامه های بزرگ و برنامه های کوچیکی که مینویسیم و برای برنامه های کوچیک توی معماری ها اهمیتی قائل نشیم بگیم مثلا اینو دو روزه تمومش میکنم نیازی نیست الکی معماری بچینم و لایه ها رو از هم جدا کنم.این کار اشتباه هست و اگر عادت کنید که برنامه های کوچیک رو درست لایه بندی کنید برنامه های بزرگ رو همیشه لایه بندی خواهید کرد.برنامه نویسی کاری هست که مو لای درزش نمیره یعنی اگر یه جا مشکلی باشه هرگز مشکل غیر منطقی نیست و قابل رفعه پس نظم توی این سیستم بسیار بسیار مهمه هرچند کار کوچیک و ناچیز باشه.
لایه های مدل و منطق رو از دیتابیس جدا کنید.لایه های سرویس رو لایه های اجرایی، به صورت Cross Platform به لایه ها نگاه کنید.یعنی حتی بخش هایی که فکر میکنید فقط مخصوص ویندوز هست رو از بخش هایی که فکر میکنید توی لینوکس و ویندوز جواب میده جدا کنید.جداسازی لایه ها پیچیدگی و به وجود اومدن باگ ها رو کم میکنه و هرچی مخلوط بودن و وابستگی ها کمتر پیچیده باشه در نتیجه با رفع مشکل در یک قسمت مشکل جدیدی در قسمت دیگه بوجود نخواهد اومد.
یه برنامه نویس حرفه ای کاملا میدونه که چطوری بخش ها رو از همدیگه جداسازی کنه و مخلوط کردن لایه ها چه پیامد های بدی داره. ممکنه گاهی اوقات پیش خودمون یه سری مقایسه هایی کنیم مثلا بین برنامه های بزرگ و برنامه های کوچیکی که مینویسیم و برای برنامه های کوچیک توی معماری ها اهمیتی قائل نشیم بگیم مثلا اینو دو روزه تمومش میکنم نیازی نیست الکی معماری بچینم و لایه ها رو از هم جدا کنم.این کار اشتباه هست و اگر عادت کنید که برنامه های کوچیک رو درست لایه بندی کنید برنامه های بزرگ رو همیشه لایه بندی خواهید کرد.برنامه نویسی کاری هست که مو لای درزش نمیره یعنی اگر یه جا مشکلی باشه هرگز مشکل غیر منطقی نیست و قابل رفعه پس نظم توی این سیستم بسیار بسیار مهمه هرچند کار کوچیک و ناچیز باشه.
لایه های مدل و منطق رو از دیتابیس جدا کنید.لایه های سرویس رو لایه های اجرایی، به صورت Cross Platform به لایه ها نگاه کنید.یعنی حتی بخش هایی که فکر میکنید فقط مخصوص ویندوز هست رو از بخش هایی که فکر میکنید توی لینوکس و ویندوز جواب میده جدا کنید.جداسازی لایه ها پیچیدگی و به وجود اومدن باگ ها رو کم میکنه و هرچی مخلوط بودن و وابستگی ها کمتر پیچیده باشه در نتیجه با رفع مشکل در یک قسمت مشکل جدیدی در قسمت دیگه بوجود نخواهد اومد.
در انتخاب بین Xamarin Forms و Xamarin Classic من Forms رو پیشنهاد میکنم. توی برنامه نویسی موبایل برای کلاسیک شما باید رابط های کاربری برای اندروید و ios و ویندوز فون رو جداگونه پیاده سازی کنید.ولی توی Xamarin forms تنها یک رابط کاربری طراحی میکنید و توی هر سه سیستم عامل خروجی میگیرید و براحتی هم میتونید همونطوری که توی کلاسیک رابط کاربری رو کاستومایز کنید و محدودیتی ندارید توی Forms هم نخواهید داشت.قبلا یه سری محدودیت ها و باگ هایی وجود داشت ولی الان دیگه نیست و روزبروز هم داره بروز رسانی میشه.
#Xamarin
#Xamarin
C# Programming Guide
در نسخه ی جدید SignalGo قابلیت درج سرویس از طریق منوی راست کلیک اضافه شده که تمامی مدل ها و کلاس ها،سرویس ها و توابع مورد نیازتون رو از سرور میگیره و توی کلاینت اضافه میکنه
با یک افزونه اضافه شده که با استفاده از اون میشه تمامی مدل ها وسرویس ها و کلاس های مورد نیاز کلاینت با پیاده سازی INotifyPropertyChanged برای مدل ها بدون دستکاری مدل های سرور رو برای کلاینتتون فراهم کنید.قابلیت جالبی که این سیستم داره اینه که میتونید مدل های جنریت شده رو با یک قابلیت تغییراتی توش ایجاد کنید که با بروز رسانی سرویس از سرور اون تغییرات از بین نرن مثلا چند تا پروپتری به کلاس یک مدل اضافه کنید.
نصب افزونه از:
https://marketplace.visualstudio.com/items?itemName=AliVisualStudio.SignalGoExtension
در صورتی که براتون سوال ایجاد شده چطوری از این سیستم استفاده کنید به گروه سیگنالگو سر بزنید:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
نصب افزونه از:
https://marketplace.visualstudio.com/items?itemName=AliVisualStudio.SignalGoExtension
در صورتی که براتون سوال ایجاد شده چطوری از این سیستم استفاده کنید به گروه سیگنالگو سر بزنید:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
Visualstudio
SignalGoExtension - Visual Studio Marketplace
Extension for Visual Studio - Add or Update Signal Go Services, this will automatic generate models and services for signalgo client side
یکی از خوبی هایی که برنامه نویسی اندروید برای برنامه نویسان سی شارپ داره اینه که علاوه بر اینکه میتونن از تمامی داکیومنت های برنامه نویسی سی شارپ برای زامارین استفاده کنند بلکه میتونن از تمامی داکیومنت های جاوا برای اندروید هم استفاده کنند، چون علاوه بر وجود اکثر کامپوننت های قابل استفاده دات نت توی زامارین تمامی کامپوننت های جاوا قابل استفاده برای سی شارپ هم وجود داره.بنابراین اگر خواستید مشکلی رو حل کنید یا قابلیتی رو اضافه کنید مثلا حذف کردن یک فایل حتما لازم نیست توی گوگل برای زبان سی شارپ جستجو کنید، میتونید برای زبان جاوا جستجو کنید و چون کدهای جاوا بسیار به سی شارپ نزدیکه به راحتی تبدیلش کنید به سی شارپ.
برای مثال برای حذف یک فایل توی دات نت (ویندوز،مک،لینوکس،اندروید،ios و ...) از کد زیر استفاده میکنیم:
این کد توی اندروید کار میکنه و فایل رو حذف میکنه.ولی جاوا کار ها اینطوری حذف میکنن توی اندروید:
توی سی شارپ برای اندروید علاوه بر روش اول که گفتم اینطوری هم میشه یعنی تبدیل کد بالا به کد زیر:
نکته:توی کد بالا من using ها رو هم گذاشتم که بدونید کامپوننت های اندروید جاوا با دات نت با هم فرق دارن.
اگر یک برنامه نویس کراس پلتفرم باشید برای حذف فایل از روش اول یعنی کامپوننت دات نت استفاده میکنید تا توی هر سیستم عامل کد جداگونه ای رو براش ننویسید (دوباره نویسی نکنید)
@csharptips
برای مثال برای حذف یک فایل توی دات نت (ویندوز،مک،لینوکس،اندروید،ios و ...) از کد زیر استفاده میکنیم:
System.IO.File.Delete("fileaddress");این کد توی اندروید کار میکنه و فایل رو حذف میکنه.ولی جاوا کار ها اینطوری حذف میکنن توی اندروید:
File dir = getFilesDir();
File file = new File(dir, "my_filename");
boolean deleted = file.delete();
توی سی شارپ برای اندروید علاوه بر روش اول که گفتم اینطوری هم میشه یعنی تبدیل کد بالا به کد زیر:
Java.IO.File dir = new Java.IO.File("folder address");
Java.IO.File file = new Java.IO.File(dir, "my_filename");
bool deleted = file.Delete();نکته:توی کد بالا من using ها رو هم گذاشتم که بدونید کامپوننت های اندروید جاوا با دات نت با هم فرق دارن.
اگر یک برنامه نویس کراس پلتفرم باشید برای حذف فایل از روش اول یعنی کامپوننت دات نت استفاده میکنید تا توی هر سیستم عامل کد جداگونه ای رو براش ننویسید (دوباره نویسی نکنید)
@csharptips
مدیریت تبادل اطلاعات در سیگناگو چیست؟
دو اتریب برای این قسمت ساخته شده با نام های CustomDataExchanger و Bind. اتریب Bind در واقع ارث برده از CustomDataExchanger برای خلاصه سازی و استفاده ی سریع
این دو اتریب در واقع برای سرور و کلاینت مدیریت میکنن که چه چیزی باید از کابل شبکه ی شما رد بشه و از کلاینت به سرور برسه یا از سرور به کلاینت برسه.بدون اینکه تغییراتی در مدل ها و کلاس هاتون ایجاد کنید و خودتون رو درگیر این کنید که باید مدل جدیدی بسازید و نگران این باشید که همه ی پروپرتی ها ارسال میشن یا نه (مثل WCF) و یا در برخی توابع چیزهایی که نمیخواهید ارسال کنید سمت کلاینت رو به صورت دستی null کنید.
چه وقتهایی این سیستم مورد استفاده ی برنامه نویسان سرور قرار میگیره؟
1.شما نمیخواهید ارسال/دریافت کنید چند مشخصه (Properties) یا یک نوع (Type) از یک یا چند کلاس رو به/از کلاینت.
2.شما میخواهید سرعت تبادل اطلاعات بین کلاینت و سرورتون رو گسترش بدید به این گونه که با محدود کردن مشخصه ها و انواع کلاس ها اون مقادیر به کلاینت ارسال نمیشن در نتیجه اطلاعات کمتری دانلود یا اپلود خواهد شد.و همچنین پهنای باند کمتری استفاده میشه و اصلا هم لازم نیست مشخصه های مدل هاتون رو تغییر بدید یا یک مدل جدید بسازید.
3.اگر شما میخواهید امنیت رو در سرورتون بالا ببرید.برای مثال شما اصلا نمیخواهید در هیچ صورتی مشخصه ی پسورد به کلاینت ارسال بشه ولی نمیخواهید هم توی هر تابعی که دارید کلاس User رو به کاربر ارسال میکنید همش پسورد رو null کنید (در صورتی که نیاز داشتید Select کنید).همچنین اگر شما دارید یک مدل رو از سوی کلاینت دریافت میکنید جهت ویرایش با این سیستم میتونید به سرور بگید که فقط مشخصه های 1 و 2 و 3 رو دریافت کن و بقیه رو چشم پوشی کنید.در این حال هر کلاینتی حتی اگر به وسیله ی هک کردن، اگر اون مشخصه ها رو بفرسته سیستم چشم پوشی میکنه و توی مدل شما ریخته نمیشه.
مثال ها و جزئیات بیشتر رو در اموزش بخش DataExchanger در گیتهاب مطالعه کنید:
https://github.com/SignalGo/SignalGo-full-net/wiki/CustomDataExchanger-and-Bind-%28Attribute%29
هر گونه سوال و پرسش در مورد سیگنالگو رو هم در گروه زیر مطرح کنید:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
دو اتریب برای این قسمت ساخته شده با نام های CustomDataExchanger و Bind. اتریب Bind در واقع ارث برده از CustomDataExchanger برای خلاصه سازی و استفاده ی سریع
این دو اتریب در واقع برای سرور و کلاینت مدیریت میکنن که چه چیزی باید از کابل شبکه ی شما رد بشه و از کلاینت به سرور برسه یا از سرور به کلاینت برسه.بدون اینکه تغییراتی در مدل ها و کلاس هاتون ایجاد کنید و خودتون رو درگیر این کنید که باید مدل جدیدی بسازید و نگران این باشید که همه ی پروپرتی ها ارسال میشن یا نه (مثل WCF) و یا در برخی توابع چیزهایی که نمیخواهید ارسال کنید سمت کلاینت رو به صورت دستی null کنید.
چه وقتهایی این سیستم مورد استفاده ی برنامه نویسان سرور قرار میگیره؟
1.شما نمیخواهید ارسال/دریافت کنید چند مشخصه (Properties) یا یک نوع (Type) از یک یا چند کلاس رو به/از کلاینت.
2.شما میخواهید سرعت تبادل اطلاعات بین کلاینت و سرورتون رو گسترش بدید به این گونه که با محدود کردن مشخصه ها و انواع کلاس ها اون مقادیر به کلاینت ارسال نمیشن در نتیجه اطلاعات کمتری دانلود یا اپلود خواهد شد.و همچنین پهنای باند کمتری استفاده میشه و اصلا هم لازم نیست مشخصه های مدل هاتون رو تغییر بدید یا یک مدل جدید بسازید.
3.اگر شما میخواهید امنیت رو در سرورتون بالا ببرید.برای مثال شما اصلا نمیخواهید در هیچ صورتی مشخصه ی پسورد به کلاینت ارسال بشه ولی نمیخواهید هم توی هر تابعی که دارید کلاس User رو به کاربر ارسال میکنید همش پسورد رو null کنید (در صورتی که نیاز داشتید Select کنید).همچنین اگر شما دارید یک مدل رو از سوی کلاینت دریافت میکنید جهت ویرایش با این سیستم میتونید به سرور بگید که فقط مشخصه های 1 و 2 و 3 رو دریافت کن و بقیه رو چشم پوشی کنید.در این حال هر کلاینتی حتی اگر به وسیله ی هک کردن، اگر اون مشخصه ها رو بفرسته سیستم چشم پوشی میکنه و توی مدل شما ریخته نمیشه.
مثال ها و جزئیات بیشتر رو در اموزش بخش DataExchanger در گیتهاب مطالعه کنید:
https://github.com/SignalGo/SignalGo-full-net/wiki/CustomDataExchanger-and-Bind-%28Attribute%29
هر گونه سوال و پرسش در مورد سیگنالگو رو هم در گروه زیر مطرح کنید:
https://t.iss.one/joinchat/CVPIBkMqzRIlK5SGpwKblQ
GitHub
SignalGo/SignalGo-full-net
SignalGo-full-net - Full version of SignalGo server and client
Forwarded from Agrin (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
سلام.
یه توصیه در مورد حریم خصوصی بدم، دوستان عزیز دقت کنند، حریم خصوصی توی نرم افزار دقیقا مثل حریم شخصی توی خونه ی شما یا هرچیزی که فقط و فقط مربوط به خود شما میشه هست.یعنی چیزی که الان توی ذهن منه فقط و فقط به من مربوط میشه و کسی حق نداره اونو بزور ازم بگیره. آیا اگر امروز دختر یا همسر یا مادر من توی خونه لباس خونگی بر تن داشته باشه من باید اجازه بدم سازمان اطلاعات یا دولت یا هر بشری همینطور سرشو بندازه پایین و وارد حریم خونه ی من بشه؟ خیر. دقیقا پاسخی که میدیم اینه:صبر کن خانواده آماده بشن بعد شما بفرمایید.
توی نرم افزار هم همینه اگر من اطلاعات شخصیم رو توی نرم افزاری دارم حفظ میکنم اون اطلاعات مربوط به من و کاملا شخصی هست بنابراین اگر کسی بخواد شنود کنه یا اون اطلاعات رو دریافت کنه باید قبلش از من اجازه بگیره تا من رمز و راز های خودم رو مراقبت کنم.
بنابراین دوستان توصیه میکنم به هیچ عنوان نرم افزاری رو نصب نکنید که از نوع برخورد اون درمورد حریم خصوصی اطلاع ندارید، میخواد نرم افزار خارجی باشه یا ایرانی.حریم خصوصی خیلی مهم و فقط و فقط متعلق به خود شماست برای همین اسمش حریم خصوصی هست نه عمومی.پس از نرم افزار هایی که حریم خصوصی شما رو حفظ نمی کنند استفاده نکنید ایرانی و خارجیش مهم نیست، مهم حمایت شما برای بزرگ کردن اینجور نرم افزار هاست.
با آروزی موفقیت، یوسفی.
یه توصیه در مورد حریم خصوصی بدم، دوستان عزیز دقت کنند، حریم خصوصی توی نرم افزار دقیقا مثل حریم شخصی توی خونه ی شما یا هرچیزی که فقط و فقط مربوط به خود شما میشه هست.یعنی چیزی که الان توی ذهن منه فقط و فقط به من مربوط میشه و کسی حق نداره اونو بزور ازم بگیره. آیا اگر امروز دختر یا همسر یا مادر من توی خونه لباس خونگی بر تن داشته باشه من باید اجازه بدم سازمان اطلاعات یا دولت یا هر بشری همینطور سرشو بندازه پایین و وارد حریم خونه ی من بشه؟ خیر. دقیقا پاسخی که میدیم اینه:صبر کن خانواده آماده بشن بعد شما بفرمایید.
توی نرم افزار هم همینه اگر من اطلاعات شخصیم رو توی نرم افزاری دارم حفظ میکنم اون اطلاعات مربوط به من و کاملا شخصی هست بنابراین اگر کسی بخواد شنود کنه یا اون اطلاعات رو دریافت کنه باید قبلش از من اجازه بگیره تا من رمز و راز های خودم رو مراقبت کنم.
بنابراین دوستان توصیه میکنم به هیچ عنوان نرم افزاری رو نصب نکنید که از نوع برخورد اون درمورد حریم خصوصی اطلاع ندارید، میخواد نرم افزار خارجی باشه یا ایرانی.حریم خصوصی خیلی مهم و فقط و فقط متعلق به خود شماست برای همین اسمش حریم خصوصی هست نه عمومی.پس از نرم افزار هایی که حریم خصوصی شما رو حفظ نمی کنند استفاده نکنید ایرانی و خارجیش مهم نیست، مهم حمایت شما برای بزرگ کردن اینجور نرم افزار هاست.
با آروزی موفقیت، یوسفی.
سلام.
دوستان WPF کار از نسخه ی آخر ویژوال استادیو استفاده کنن، توی نسخه ی 2017 دیگه نیازی به استپ کردن نرم افزار جهت انجام تغییرات توی بخش UI نیست، به صورت انلاین XAML رو تغییر میدید و رابط کاربری تغییر میکنه.مثل صفحات وب.حتی بایندیگ ها و ... هم تغییر خواهد کرد.
دوستان WPF کار از نسخه ی آخر ویژوال استادیو استفاده کنن، توی نسخه ی 2017 دیگه نیازی به استپ کردن نرم افزار جهت انجام تغییرات توی بخش UI نیست، به صورت انلاین XAML رو تغییر میدید و رابط کاربری تغییر میکنه.مثل صفحات وب.حتی بایندیگ ها و ... هم تغییر خواهد کرد.
اگر مردد هستید که برای دیتابیس سمت سرور از Entity Framework Core استفاده کنید یا Entity Framework من پیشنهاد میکنم از EF Core استفاده کنید.توی ریلیز های اخرش تقریبا همه ی امکانات EF رو داره.برای دیتابیس های سبک و کلاینت هم پیشنهادم LiteDB هست که پکیجش رو براحتی میتونید از توی Nuget پیدا و نصب، این دیتابیس کوچیک هم سبکه و هم سرعت خوبی داره و هم مالتی پلتفرم هست یعنی توی گوشی و ویندوز و مک و لینوکس هرجا خواستید میتونید ازش استفاده کنید.
تفاوت EF Core و EF در مالتی پلتفرم بودنش هست و EF فقط برای Sql و ویندوز طراحی شده ولی EF Core برای انواع دیتابیس ها بکار میره و کاملا مالتی پلتفرم ساخته شده علاوه بر اون قابلیت استفاده در سیستم عامل های دیگه جهت استفاده ی سرور رو داره.
من هر دوش رو تست کردم و واقعا Entity framework و core تحولی بزرگ در دنیای دیتابیس برای برنامه نویسان سی شارپ بودن.براحتی میتونید از طریق Linq در سی شارپ کوئری در دیتابیس بزنید.
من هر دوش رو تست کردم و واقعا Entity framework و core تحولی بزرگ در دنیای دیتابیس برای برنامه نویسان سی شارپ بودن.براحتی میتونید از طریق Linq در سی شارپ کوئری در دیتابیس بزنید.