اشتراک‌ها
ILSpy 7.0 منتشر شد

New Language Features

  • C# 9.0: record classes
  • C# 9.0: with expressions
  • C# 9.0: primary constructors
  • Support for .NET 5 custom calling conventions
  • Improved support for Unsafe-intrinsics

UI Improvements

  • Dark mode (@tom-englert in #2347)
  • .NET bundles and Nuget packages are now directly embedded in the tree view
  • Search enabled in NuGet packages
  • Added setting highlight the current line in the code view (see #2224, by @DickvdBrink)
  • Simple UI language switching support 
ILSpy 7.0 منتشر شد
اشتراک‌ها
Nebular جعبه ابزاری برای توسعه‌ی برنامه‌های Angular

Nebular is a great toolkit if you build Rich UI web-application based on Angular, and want to bootstrap your development using essential features out of the box. It provides you with a set of native Angular components, themeable components, authentication and security layers easily configurable for your API. At the same time, Nebular allows you to use it together with any other UI library you choose. 

Nebular جعبه ابزاری برای توسعه‌ی برنامه‌های Angular
اشتراک‌ها
فرآیند رندر شدن در Angular2
So how exactly is Angular2 built such that it allows for custom renderers to be created? The first thing to understand is that the internal bits of Angular2 are split into two areas: the worker (core) area and the UI area. The worker (core) area is responsible for building out the components, directives, filters, services and bootstrap code; The UI area is responible for rendering out the application in the DOM.
فرآیند رندر شدن در Angular2
نظرات مطالب
Blazor 5x - قسمت ششم - مبانی Blazor - بخش 3 - چرخه‌های حیات کامپوننت‌ها
یک نکته‌ی تکمیلی: روش جلوگیری از رندر مجدد کامپوننت‌ها
یکی از مواردی که در Blazor کارآیی را کاهش میدهد، رندر مجدد کامپوننتها بعد از فراخوانی رویدادی میباشد. به صورت پیش‌فرض، و به‌طور خودکار پس از فراخوانی یک رویداد، بلافاصله StateHasChanged کامپوننت فراخوانی می‌شود. در برخی موارد، ممکن است اجرای StateHasChanged غیرضروری باشد. بخصوص برای صفحاتی که تعداد زیادی المنت در آن قرار داشته باشد. این رندر مجدد باعث کاهش سرعت بروزرسانی UI میشود. جهت جلوگیری از اجرای خودکار StateHasChanged میتوانیم اینترفیس   IHandleEvent  را پیاده سازی کنیم که بصورت سراسری بر تمام کامپوننتهای یک صفحه تاثیر بگذارد.
@implements IHandleEvent
@code {
        Task IHandleEvent.HandleEventAsync(EventCallbackWorkItem callback, object? arg) => callback.InvokeAsync(arg);
}
 در اینگونه موارد میتوانیم UI را بصورت دستی با فراخوانی StateHasChanged   به‌روز رسانی کنیم.
نظرات مطالب
ارسال ایمیل در ASP.NET Core
- اگر این کتابخانه برای شما مفید نیست؛ از آن استفاده نکنید. ما راه حل دیگری نداریم. جای دیگری هم چیزی دیگری پیدا نمی‌کنید که در اساس با این راه حل متفاوت باشد.
- هدف از await را بهتر است در دوره‌ای که معرفی کردم (مبانی Async در C# 5) مطالعه کنید؛ چون به نظر آشنایی با آن ندارید. وجود آن نه مشکلی است و نه ربطی به قفل کردن UI دارد. البته اگر به نحو نادرستی مورد استفاده قرار گیرد، می‌تواند باعث قفل شدن UI هم شود که در آن سری با مثال بررسی شده.
- جائیکه HttpContext وجود ندارد، از آن استفاده نکنید. قالب رشته‌ای نهایی را به نحو دیگری تولید کنید.
- در این سایت برای تک ایمیل‌ها، از روش استفاده از سرویس‌های ارسال ایمیلی مانند مطلب جاری استفاده می‌شود (مانند ایمیلی که هم اکنون جهت اطلاع رسانی دریافت پاسخی به شما ارسال شد). برای ایمیل‌های با تعداد بالا از کتابخانه‌ی «DNT Scheduler» استفاده می‌شود که نسخه‌ی Core هم دارد. در Taskهایی که در اینجا تعریف می‌شوند، از بانک اطلاعاتی کوئری بگیرید و پارامترها را از آن‌ها استخراج کنید (در زمان‌هایی مشخص کوئری می‌گیرید که آیا زمان ارسال ایمیل هست یا خیر؟ اگر بله اطلاعات بیشتر را از بانک اطلاعاتی دریافت و استفاده کنید). از این لحاظ محدودیتی ندارد. مطلب «انجام کارهای پس‌زمینه» هم که عنوان شد نمونه‌ی دیگری از این نوع پیاده سازی‌ها است؛ جهت آشنایی بیشتر.
نظرات مطالب
ارسال ایمیل در ASP.NET Core
ظاهرا به خاطر استفاده از سرویس IHttpContextAccessor  در ویو رندر سرویس که پس این سرویس ارسال ایمیل به کار برده شده، نمیشه به صورت بدون await ازین توابع ارسال استفاده کرد، چون در حالت فعلی ارسال ایمیل تا اتمام کارش باعث قفل UI میشه و حالتی رو فرض کنید که با توجه به نتیجه‌ی اکشن قصد ارسال چندین ایمیل به چندین کاربر رو داریم (برای مثال نوتیفیکیشن تغییر وضعیت کالا)، پس نمیخایم از نتایج ارسال ایمیل‌ها آگاه بشیم و فقط قصد ارسال داریم، در صورت اگه با await استفاده بشن، UI قفل میشه و اگه بدون Await استفاده بشن، چون کار اکشن تمام شده و مثلا Return view انجام شده و هنوز ارسال ایمیل‌ها ناتمام هست، با خطای که نشان دهنده‌ی null بودن سرویس پرووایدر هست روبرو میشه.
لطفا راهنمایی کنید. ممنون
نظرات مطالب
MVC vs 3-Tier Pattern
به نظر من این درست نیست که بگیم mvc کلا در لایه UI می‌باشد، ببینید شما وقتی می‌خواهید یک application را توسعه بدید علاوه بر اهداف بیزینسی application که قصد توسعه ان را دارید یکسری اهداف تکنولوژیکی هم مد نظر دارید، حالا بعضی از این اهداف می‌تواند بسیار پایه ای باشد مانند اینکه شما این application  را بصورت win app , web app یا mobile app یا ترکیبی پیاده سازی کنید، وبعضی تصمیمات هم بعد از این تصمیم گیری انجام میشوند، برای مثال شما در نظر می‌گیرید که می‌خواهید این application را به صورت یک web app پیاده سازی کنید، حال شما ممکن است به عنوان طراح نرم افزار یا یک معمار یکسری concern ریز و درشت دیگر برایتان ایجاد شود، باز هم برای مثال: این application باید SOC را در تمامی سطوح درنظر بگیرد و decoupling به یک سطح مناسب برساند، ویا اینکه هدف این که لایه business را طوری طراحی کنیم که به یک repository خاص یا یک ui framework وابسته نباشد، اما هدف من از این همه اسمان ریسمان‌ها این بود که بگم که مثلا نمی‌توان گفت که فلان تکنولوژی باید در فلان موقعیت و به فلان روش استفاده شود بلکه این شما هستید که بر حسب concern‌های خود چگونه تصمیم بگیرید.
نظرات مطالب
فعال سازی و پردازش صفحات پویای افزودن، ویرایش و حذف رکوردهای jqGrid در ASP.NET MVC
- کل Kendo UI سورس باز هست. اما مجوز عمومی استفاده از آن GPL است. یعنی باید کل کارتان را سورس باز کنید یا مجوز آن‌را بخرید.
- اخیرا یک نسخه‌ی سبک‌تر از Kendo UI با مجوز BSD ارائه شده که Grid آن‌را ندارد (به عمد).
بنابراین از این لحاظ، مجوز jqGrid بهتر است. مجوز عمومی آن MIT است و در هر نوع پروژه‌ای قابل استفاده‌است. مجوز تجاری هم دارد برای حالتیکه بخواهید کامپوننت‌های ASP.NET آن‌را بخرید که ... نیازی نیست (^ و ^).
3. Can be used in proprietary works
The license policy allow you to use this piece of code even inside commercial (not open source) 
projects. So you can use this software without giving away your own (precious?) source code.

سایر مسایل خارج از بحث جاری است.
نظرات مطالب
EF Code First #1
سلام آقای نصیری
ممنون بخاطر مطالب مفیدتون. EF یک ORM قوی هست ولی بعضی مواردش هست که به نظر بنده نوعی در حد این ORM نیست.که دو موردش رو در اینجا ذکر میکنم :
1) در برنامه های چند لایه اگر لایه ها بصورت پروژه های جداگانه در نظر گرفته شده باشند باید Connection String رو در لایه UI ، BL و DAL قرار داد که به نظر من از لحاظ امنیتی درست نیست. این بهتره که در UI ما اصلا ندونیم COnnection String چی هست. البته این مورد با کد نویسی قابل حل هست ولی در کل مناسب نیست
2) من در کی از پروژه های گروهی به این مسئله برخوردم. ما در قسمت DAL فلدرهای مختلف داشتیم و هر کسی در فلدر قسمتی که کار میکرد میخواست یک دیتا مدل داشته باشه. این کار باعث میشد که به تعداد دیتا مدلها ما Connection String داشته باشیم و اگر میخواستیم از یک Connection String استفاده کنیم اسم کلاسی که تولید میشد برای همه یکسان میبود (اما در Name Space های مختلف) .

به نظر من EF از لحاظ Connection String یک مقدار ضعف داره.تا نظر دوستان چه باشه. ممنون و موفق باشید
نظرات مطالب
ASP.NET MVC #24
سری «پایه» همین مباحث است. شما با این اطلاعات راحت می‌تونید یک پروژه رو جمع کنید.
ASP.NET MVC 4 نسبت به نگارش 3 آن، آنچنان تغییرات اساسی را به همراه ندارد. یک سری افزونه جدید دارد جهت فشرده سازی اسکریپت‌ها و cssها،‌ اندکی بهبود Razor و یک سری مسایل امنیتی که من لابلای همین سری به آن‌ها اشاره داشتم و ... از این نوع مباحث + مبحث Web API رو اضافه کردن که به نوعی ترکیب WCF با ASP.NET MVC است به نحوی شکیل!
البته مجوز نگارش 4 بتای آن که در دسترس هست، Go live است یعنی می‌تونید همین الان در محیط کار ازش استفاده کنید. هر زمان که نگارش نهایی آن آمد من یک سری ارتقاء به MVC4 رو اضافه خواهم کرد.
مابقی مسایل هم بیشتر تکنیک است تا مباحث پایه. مثلا تکنیک‌های استفاده از jQuery UI در ASP.NET MVC یا استفاده از Kendo UI در ASP.NET MVC و موارد مشابه.