C# Programming Guide
193 subscribers
113 photos
9 videos
14 files
102 links
سلام دوستان در این کانال نکاتی در مورد مسائل پیشرفته در سی شارپ ارائه میشه که مربوط به بیش از 15 سال تجربه ی کاری من هست.
ممنون از اینکه دنبال میکنید.
اگر نکات خاصی به ذهنتون رسید با ادمین در میون بذارید
تماس با ادمین:
@Ali_Visual_Studio
Download Telegram
در نظر داشته باشید که برای استفاده از این سیستم باید پکیج System.ValueTuple رو نصب کرده باشید روی پروژتون
برای اینکه بتونید همیشه سریع کد بزنید سعی کنید عادت کنید به استفاده از Code Snippets ها، قطعه کد ها به شما کمک میکنن تا با تایپ چند کاراکتر و سپس استفاده از دابل تب کد کامل براتون تایپ بشه در این حالت شما میتونید مقادیر رو هم تعویض کنید.در ادامه یک ویدئوی کوتاه براتون میذارم که بدونید از Code Snippets ها چطوری استفاده کنید.دابل تب به این معنی هست که شما کلید Tab کیبرد رو دوبار پشت سر هم بزنید.
This media is not supported in your browser
VIEW IN TELEGRAM
انواع Code Snippets ها رو میتونید از لینک مایکروسافت ببینید:

https://msdn.microsoft.com/en-us/library/z41h7fat.aspx
همیشه وقتی میخواید از یک لیستی آیتم های خاصی رو دریافت کنیدبهتره که از Linq استفاده کنید، هم راحت تره هم خوانا تره هم باعث میشه رفع باگ و مشکل براتون راحت تر باشه، قدیم ها که Linq نبود ما همیشه مجبور بودیم از for و foreach استفاده کنیم یا حتی اینارو تو در تو هم بنویسیم.
C# Programming Guide
همیشه وقتی میخواید از یک لیستی آیتم های خاصی رو دریافت کنیدبهتره که از Linq استفاده کنید، هم راحت تره هم خوانا تره هم باعث میشه رفع باگ و مشکل براتون راحت تر باشه، قدیم ها که Linq نبود ما همیشه مجبور بودیم از for و foreach استفاده کنیم یا حتی اینارو تو در…
شما میتونید انواع شرط ها و کوئری هایی که میخواید رو توی Linq بزنید و حتی میتونید خروجی مورد نظرتون رو هم به کلاس دیگه یا یک کلاس dynamic جدید تغییر بدید در این صورت فقط کافیه دستور اخر select رو تغییر بدید تا خروجی مورد نظرتون تغییر کنه مثلا بنویسید:
select new {x.Name,Age=x.Age}
آیا interface ها همیشه برای مرتب سازی و زیبا سازی و بالا بردن خوانایی پروژه طراحی و ساخته میشن یا اینکه در مواقعی هم روی پرفرمنس و سرعت پردازش اطلاعات میتونن تاثیر گذار باشند؟
#Interface
#Performance
C# Programming Guide
Photo
گاهی وقت ها برای راحتی کار خودمون عملا همیشه در حال استفاده از enum ها و type های مختلف هستیم در حالی که به عملیات محاسباتی که میرسه همیشه مجبور میشیم شرط های اضافه بذاریم.این قضیه علاوه بر اینکه کد مارو از حالت زیبا بودن و تمیز بودن خارج میکنه در پروژه های خیلی بزرگ باعث افت سرعت خواهد شد، افت سرعتی که شاید چیزی رو کند نکنه ولی از نظر یک برنامه نویس حرفه ای میتونست این افت هم وجود نداشته باشه.
C# Programming Guide
Photo
برای مثال کد بالا میتونست به این صورت هم نوشته بشه، تفکیک کلاس ها + تفکیک عملیات محاسباتی که سیستم مجبور نباشه هر بار که بخواد محاسبات رو انجام بده مجدد یه چیزی رو بررسی کنه.
مثال صدا زدن توابع
دوستانی که WPF کار میکنن و نرم افزار های دسکتاپ مینویسن این ویدئو رو پیشنهاد میکنم حتما ببینن:
https://www.youtube.com/watch?t=28&v=c_AB_XSILp0
C# Programming Guide
دوستانی که WPF کار میکنن و نرم افزار های دسکتاپ مینویسن این ویدئو رو پیشنهاد میکنم حتما ببینن: https://www.youtube.com/watch?t=28&v=c_AB_XSILp0
همونطور که میبینید شما میتونید با ساختار XAML در wpf براحتی برای مک و لینوکس هم نرم افزار طراحی کنید در واقع یک طرح میزنید و روی ویندوز و مک و لینوکس اجرا میکنید.
C# Programming Guide
ابن پروژه هم پیشنهاد میکنم بهش نگاه بندازید: https://www.cshtml5.com/
با این هم میتونید با همون ساختار WPF و XAML طراحی سایت کنید...
پروژه ی اپن سورسی هست به نام SignalGo که ارتباط بلادرنگ یا همون Real-Time رو براتون خیلی آسون میکنه که میخوام از این پس بیشتر در موردش صحبت کنیم.این پروژه ای هست که یکی دو سالی میشه طراحی و و پیاده سازیش کردم و طراحی یک سرور و ارتباط کلاینت با اون رو برای شما بقدری آسون و سریع میکنه که میتونید باهاش یک سرور با بیش از صدها جدول و توابع رو کمتر از یک ماه پیاده سازی کنید و ده ها سرور رو همزمان مدیریت کنید بدون اینکه دغدغه مشکلات ودسترسی ها و امنیت و سرعت و ... داشته باشید.
C# Programming Guide
پروژه ی اپن سورسی هست به نام SignalGo که ارتباط بلادرنگ یا همون Real-Time رو براتون خیلی آسون میکنه که میخوام از این پس بیشتر در موردش صحبت کنیم.این پروژه ای هست که یکی دو سالی میشه طراحی و و پیاده سازیش کردم و طراحی یک سرور و ارتباط کلاینت با اون رو برای…
پروژه ی SignalGo چیست؟
سیگنال Go پروژه ای هست که ارتباطات بلادرنگ (Real-Time) رو برای برنامه نویسان سرور و کلاینت فراهم میکنه.

به این صورت که سرور بر حسب یک ادرس و پورت خاص اجرا میشه و کلاینت ها با استفاده از همون آدرس به اون سرور متصل میشن و داده ارسال میکنند و داده دریافت میکنند.این ارتباط کاملاً Duplex یعنی دو طرفه می باشد.
پروژه هایی نظیر SignalR و WCF هم در مجموعه ی این نوع پروژه ها قرار میگیرن.

چرا ما شروع کردیم به نوشتن SignalGo ؟

اولین مشکل ما ارتباط سخت بین کلاینت و سرور در جاوا و سی شارپ بود.برنامه نویسان شرکت ما که جاوا کار بودند بسیار براشون سخت بود که به سرور دات نت با سیگنال R وصل شن و منیج کردن کد ها و مشکلات تبدیل کد و هندل کردن به وجود میومد که مارو بر این کرد تا این سیستم رو از پایه طراحی کنیم.

پروژه ی سیگنال Go یک پروژه ی Open Source و متن باز هست که طراحی و معماری اون به شکلی انجام شده که سرعت انجام کار و تبادل اطلاعات رو چندین برابر بیشتر میکنه و اطمینان بیشتری به برنامه نویس میده.

برتری های SignalGo نسبت به SignalR در چیست؟

1.دسترسی دقیقتر به کلاینت ها مثل WCF
2.تضمین کردن رسیدن اطلاعات به دست کلاینت (همچنین برعکس)
3.دریافت خروجی از کلاینت زمانی که توابع کلاینت صدا زده میشود.
4.سرعت بیشتر
5.کد تمیز تر با خوانایی بیشتر
6.قابلیت آپلود و دانلود Stream
7.قابلیت ارتباط UDP برای انتقال صوت و تصویر

برتری های SignalGo نسبت به WCF در چیست؟

1.کراس پلتفرم بودن در حالی که WCF مخصوص ویندوز طراحی شده.
2.منیج راحت تر، تنظیمات کمتر و سرعت بیشتر.

در حال حاضر سرور و کلاینت دات نت و کلاینت جاوا و جاوا اسکریپت در github در دسترس هست.

سورس سرور و کلاینت:

https://github.com/SignalGo/SignalGo-full-net

سورس کلاینت جاوا:
https://github.com/SignalGo/client-java


نصب از طریق nuget:

نسخه ی سرور
https://www.nuget.org/packages/SignalGo.Net.Server/

نسخه ی کلاینت
https://www.nuget.org/packages/SignalGo.Net.Client/

نسخه ی جاوا اسکریپت
https://www.nuget.org/packages/SignalGo.JavaScript.Client/
Media is too big
VIEW IN TELEGRAM
ویدئوی معرفی سیگنالگو و قابلیت ها و مقایسه با SignalR و WCF