C# Programming Guide
193 subscribers
113 photos
9 videos
14 files
102 links
سلام دوستان در این کانال نکاتی در مورد مسائل پیشرفته در سی شارپ ارائه میشه که مربوط به بیش از 15 سال تجربه ی کاری من هست.
ممنون از اینکه دنبال میکنید.
اگر نکات خاصی به ذهنتون رسید با ادمین در میون بذارید
تماس با ادمین:
@Ali_Visual_Studio
Download Telegram
C# Programming Guide
Photo
4000 request per second with 50% CPU usage!!
انگولار رو که خوب تست کردم و چندتایی UI و کلاینت باهاش زدم ولی هنوزم توی کانفیگ هاش ماژول هارو قاطی میکنم، واقعا خیلی روی اعصابه همش ماژول ها و کامپوننت ها و... ها رو باید دستی اضافه کنم و با کلی خطاهای عجیب و غریب موقع کامپایل مواجه میشم که برای رفعش هم باید دقیقه ها و ساعت ها وقت بذارم.
خلاصه رفتم یکم این react هم یاد بگیرم ببینم اون چطوره فقط نیم ساعت یه بنده خدا داره یاد میده که کافیگش رو چطوری باید انجام بدم 😆مخم دیگه داره از دنیای وب تعطیل میشه بعد از ده سال هنوز از این دنیای وب خوشم نیومده و هنوز هم که هنوزه یک نفر پیدا نشده یک ابزار واقعا زیبا و بدون دردسر براش بسازه که برنامه نویس ها درگیر مسائل الکی و مسخره و پر حاشیه نشن.
واقعا باید به برنامه نویسای وب حقوق بالاتر داد 😆 درک میکنم. واقعا هم برنامه نویسای سی شارپ با هر ابزار دیگه ای کار کنن غیر این نیست که از کلمه ی آشغال براش استفاده کنن، البته سی شارپ کار آشغال کار هم کم ندیدما 😆ولی تورو خدا تمییز کد بزنید و تمییز کار کنید باور کنید من اگر کارفرما بودم حلال نمیکردم برنامه نویسی رو که کد کثیف میزنه.کامنت بزنید توی یک کلاس همه ی کدها رو ننویسید اسم های مختصر استفاده نکنید تا اینطوری عادت کنید. دیدن کدها رو برای برنامه نویس بعدی همونقدر لذت بخش کنید که UI رو برای کاربر کلاینت زیبا میکنید.
C# Programming Guide
Photo
من اینشکلی با سیگنالگو کد میزنم، دوست دارید بدونید چقدر مسائل داره توی همین چند خط هندل میشه با سیگنالگو؟ بذارید براتون توضیح میدم در ادامه ...👍
توی خط 79 کد زیر نوشته شده:
[MailChiApiSecurityPermission(IsNormalUser = true)]
وقتی این صفت رو بالای تابعم میذارم یعنی یک کاربر معمولی لاگین شده میتونه اونو صدا بزنه:
1) اگر کاربر لاگین نباشه پاسخ دریافت میکنه که دسترسی نداره این تابع رو صدا بزنه
2)اگر کاربر دسترسی IsNormal نداشته باشه پاسخ بهش داده میشه که دسترسی نداره، مثلا اگر ادمین قرار باشه تابع رو صدا بزنه من بالای تابع میگم IsAdmin = true یعنی فقط ادمین بتونه صدا بزنه یا هر دو رو میذارم، (کاملا شخصی سازی شدست شما هر پروژه ای داشته باشید میتونید یکبار اینو برای خودتون شخصی سازی کنید و همه جا استفاده کنید)

توی خط 80 نوشته شده:
ContactViewerExchange
این یک خصیصه هست که مثل خصیصه ی قبلی سیگنالگو بهم این اجازه رو میده که برای پروژه ی خودم Customize اش کنم. کارش چیه؟ کارش اینه که جدول Contact هام خصیصه های زیادی داره که من میخوام یه سری از اونا برای کاربری که فلان دسترسی رو داره بره یه سری هاش برای اونی که مثلا ادمین نیست نره... اینا توی این خصیصه که بهش DataExchanger میگیم هندل میشه که خصیصه های اضافی سمت کلاینت نمی فرستیم یا برعکس، خصیصه های اضافی از کلاینت دریافت نمی کنیم (حتی اگر بفرسته)

توی خط 81 نوشته شده:
[ActivityReferenceResolver(IsEnabledReferenceResolver = false, IsEnabledReferenceResolverForArray = false)]
این خصیصه مدیریت میکنه که برای این تابع به کلاینت خروجی های $Id و $Ref رو نفرسته چون api هست و استفاده کننده اگر ندونه سیگنالگو چیه خروجی رو نمیتونه خوب هندل کنه.البته از این خصیصه وقتی استفاده میشه که ما ReferenceResolver رو در سرورمون true کرده باشیم.به طور کلی هم $Id و $ref ها در Json برای هندل کردن اشاره گر ها استفاده میشن که خیلی هم مهم هستند و توی پروژه های بزرگ اگر اینو نداشته باشید عملا به مشکل میخورید ولی سیگنالگو اینارو براحتی هندل میکنه.

توی خط 82 یه جا نوشته:
[FilterBaseInfoValidation]FilterBaseInfo
این خصیصه در واقع ValidationRule هست که داخلش چک میکنه کاربر مقدار Index و یا length رو اشتباه نفرسته مثلا یه دفعه ده هزار تا رکورد رو Select نکنه.وگرنه خطای اعتبار سنجی دریافت میکنه.اینم قابل شخصی سازی شدن هست مثل بقیه.

در خط 84 نوشته شده:
int accountId = CurrentUserInfo.AccountId;
اینجا من آی دی کاربری که قبلا لاگین شده بود رو با یک خط کد دریافت میکنم و میدونم که کی داره این تابع رو صدا میزنه،اینم یک قابلیت جالب توی سیگنالگو هست که خیلی من دوستش دارم.

ببینید اینهمه سناریو در همین چند خط کد داره هندل میشه، یه سری سناریو های دیگه مثل خطا های داخلی که لازم نیست شما توی همه ی توابعتون try و catch بذارید جای دیگه داره هندل میشه و کد هاتون خیلی زیبا و خوانا میشه.
اجرای نرم افزار تست سیگنالگو در سه سیستم عامل ویندوز، لینوکس و مک، میتوانید این نرم افزار را در هر سیستم عاملی که میخواهید اجرا کنید و سرور های خودرا تست کنید
C# Programming Guide
اجرای نرم افزار تست سیگنالگو در سه سیستم عامل ویندوز، لینوکس و مک، میتوانید این نرم افزار را در هر سیستم عاملی که میخواهید اجرا کنید و سرور های خودرا تست کنید
با تمام مشغله های کاری ای که داشتم و بدون وجود intellisense تونستم کمتر از یک هفته تمومش کنم. فکر نمی کنم طولی بکشه که مایکروسافت اینو هم مثل زامارین بخره.
امروز دوتا آموزش تصویری جدید از سیگنالگو داریم، آموزش بعدی در حال آپلود هست.

آموزش سیگنالگو قسمت ششم:
چگونه در سیگنالگو برای کاربران و توابع خود دسترسی مشخص کنیم.

https://www.aparat.com/v/MgK4s
آموزش قسمت هفتم سیگنالگو:
آموزش ارتباط دو طرفه، دوپلکس، صدا زدن توابع و سرویس های کلاینت توسط سرور

https://www.aparat.com/v/oiM4x
شما از چه سیستمی در حال حاضر برای ارتباط بین کلاینت و سرور خود استفاده میکنید؟
anonymous poll

Asp.net or Asp.net Core – 10
👍👍👍👍👍👍👍 59%

Signal Go – 3
👍👍 18%

SignalR – 1
👍 6%

NodeJs – 1
👍 6%

WebApi – 1
👍 6%

Other – 1
👍 6%

WCF
▫️ 0%

RestApi
▫️ 0%

👥 17 people voted so far.
C# Programming Guide pinned «آموزش قسمت هفتم سیگنالگو: آموزش ارتباط دو طرفه، دوپلکس، صدا زدن توابع و سرویس های کلاینت توسط سرور https://www.aparat.com/v/oiM4x»
بین خارجی ها هم کم دلال نیستا 😆طرف دامنه ی سیگنالگو دات کام رو رزو کرده و سه هزارو سیصد دلار قیمت فروش داده بهم 😐
یکی از مهمترین کارها توی برنامه نویسی مبتدی در سی شارپ طریقه نام گذاری متغیر هاست که مایکروسافت داکیومنت گسترده ای در این زمینه برای سی شارپ نوشته:

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions
C# Programming Guide
یکی از مهمترین کارها توی برنامه نویسی مبتدی در سی شارپ طریقه نام گذاری متغیر هاست که مایکروسافت داکیومنت گسترده ای در این زمینه برای سی شارپ نوشته: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions
در اکثر موارد که در داکیومنت اومده شما از روش Pascal برای نام گذاری در سی شارپ استفاده میکنید مثلا نام یک پروپرتی در کلاس باید به این صورت باشد:
UserName
Id
FullName

برای پارامتر ها از روش Camel استفاده میکنید:
fullName
password
userName

از نام های کوتاه استفاده نکنید🚫:
FName
LName

از آندرلاین استفاده نکنید 🚫:
First_Name
Last_Name

و ....
برای EF Core یک پکیج بنام InMemory وجود داره که با نصبش براحتی میتونید برای دیتابیسون تست کیس بنویسید.خیلی کاربردی و عالی برای تست توابع سرور و کلاینتتون هست.
به نظر میاد Extension سیگنالگو روی ویژوال استادیو های قدیمی کار نمی کرد امروز مشکلش رو رفع کردم و روی ویژوال استادیو 2012 و 2017 تست گرفتم و اوکی بود، کسانی که مشکلی داشتند ان شالله رفع شده.
سایت https://www.dbdesigner.net یک سایت خوب برای طراحی سریع ساختار دیتابیسون هست، من همیشه از این سایت برای ساختار دیتابیس هام قبل از پیاده سازی استفاده میکنم، رایگانه
C# Programming Guide pinned «شما از چه سیستمی در حال حاضر برای ارتباط بین کلاینت و سرور خود استفاده میکنید؟ anonymous poll Asp.net or Asp.net Core – 10 👍👍👍👍👍👍👍 59% Signal Go – 3 👍👍 18% SignalR – 1 👍 6% NodeJs – 1 👍 6% WebApi – 1 👍 6% Other – 1 👍 6% WCF ▫️ 0% RestApi ▫️ 0% 👥 17…»