Forwarded from Software Philosophy
امکانات جدید C# 8.0 با بوی هوش مصنوعی!
نسخه major بعدی C# 7.3 که C# 8.0 خواهد طبق برنامهریزی به همراز .Net Core 3.0 ریلیز خواهد شد و امکان آزمایش آن در Visual Studio 2019 Preview وجود خواهد داشت.
امکانات جذابی که به این زبان اضافه شده در لینک زیر شرح دادهشده که به عنوان خلاصه میتوان به امکانات زیر اشاره کرد:
- Nullable Reference Types
- Async Streams
- Ranges and Indices
- Recursive Patterns
- Target-Typed New Expressions
وقتی نام تایپ قابل استنتاج است نیازی نیست نام کلاس هنگام new کردن مشخص شود!
به نظر میرسد با توجه به تمرکز جدید مایکروسافت روی هوش مصنوعی، امکاناتی که در این نسخه به زبان اضافه شده، بیشتر با هدف سادهسازی کار برای برنامهنویسان Data Science است. همانطور که میبینید ویژگیهایی از زبان Python که موجب جذابیت این زبان برای متخصصان Data Science بوده در این لیست دیده میشوند.
برای آشنایی کاملتر این امکانات میتوانید لینک زیر را که توسط Mads Torgersen نوشته شدهاست را مطالعه کنید.
https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/36cL30mMFJK
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
نسخه major بعدی C# 7.3 که C# 8.0 خواهد طبق برنامهریزی به همراز .Net Core 3.0 ریلیز خواهد شد و امکان آزمایش آن در Visual Studio 2019 Preview وجود خواهد داشت.
امکانات جذابی که به این زبان اضافه شده در لینک زیر شرح دادهشده که به عنوان خلاصه میتوان به امکانات زیر اشاره کرد:
- Nullable Reference Types
string? s = null;
- Async Streams
await foreach (var result in GetResultsAsync())
{
if (result > 20) yield return result;
}
- Ranges and Indices
Index i1 = 3; // number 3 from beginning
Index i2 = ^4; // number 4 from end
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6"
var slice = a[i1..i2]; // { 3, 4, 5 }
- Recursive Patterns
if (p is Student { Graduated: false, Name: string name })- Target-Typed New Expressions
Point[] ps = { new (1, 4), new (3,-2), new (9, 5) }; // all Pointsوقتی نام تایپ قابل استنتاج است نیازی نیست نام کلاس هنگام new کردن مشخص شود!
به نظر میرسد با توجه به تمرکز جدید مایکروسافت روی هوش مصنوعی، امکاناتی که در این نسخه به زبان اضافه شده، بیشتر با هدف سادهسازی کار برای برنامهنویسان Data Science است. همانطور که میبینید ویژگیهایی از زبان Python که موجب جذابیت این زبان برای متخصصان Data Science بوده در این لیست دیده میشوند.
برای آشنایی کاملتر این امکانات میتوانید لینک زیر را که توسط Mads Torgersen نوشته شدهاست را مطالعه کنید.
https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/36cL30mMFJK
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Microsoft
Building C# 8.0
A first-hand look from the .NET engineering teams
Microsoft Connect(); 2018
لیست ویدئو های کنفرانس #Connect مایکروسافت
https://channel9.msdn.com/Events/Connect/Microsoft-Connect--2018
https://www.microsoft.com/en-us/connectevent/
@IranAspMvc
لیست ویدئو های کنفرانس #Connect مایکروسافت
https://channel9.msdn.com/Events/Connect/Microsoft-Connect--2018
https://www.microsoft.com/en-us/connectevent/
@IranAspMvc
نگارش نهایی NET Core 2.2 و ASP NET Core 2.2 و EF Core 2.2 منتشر شد (همین دیروز)
🔰توی پست های بعدی به بررسی تغییرات و بهبود های هر کدوم میپردازیم
لینک دانلود
https://dotnet.microsoft.com/download/dotnet-core/2.2
معرفی NET Core 2.2
https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-2-2/
معرفی ASP NET Core 2.2
https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/
معرفی Entity Framework Core 2.2
https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-entity-framework-core-2-2/
@IranAspMvc
🔰توی پست های بعدی به بررسی تغییرات و بهبود های هر کدوم میپردازیم
لینک دانلود
https://dotnet.microsoft.com/download/dotnet-core/2.2
معرفی NET Core 2.2
https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-2-2/
معرفی ASP NET Core 2.2
https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/
معرفی Entity Framework Core 2.2
https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-entity-framework-core-2-2/
@IranAspMvc
Microsoft
Download .NET Core 2.2 (Linux, macOS, and Windows)
.NET Core 2.2 downloads for Linux, macOS, and Windows. .NET is a free, cross-platform, open-source developer platform for building many different types of applications.
DotNetZoom
نگارش نهایی NET Core 2.2 و ASP NET Core 2.2 و EF Core 2.2 منتشر شد (همین دیروز) 🔰توی پست های بعدی به بررسی تغییرات و بهبود های هر کدوم میپردازیم لینک دانلود https://dotnet.microsoft.com/download/dotnet-core/2.2 معرفی NET Core 2.2 https://blogs.msdn.mi…
❇️ بررسی تغییرات و بهبود های مهم NET Core 2.2
1️⃣ کامپایل چندگانه (Tiered Compilation)
این قابلیت باعث میشه کامپایلر JIT، کد ها رو به چند روش کامپایل کنه و هر کدوم که سریع تر بود رو اجرا کنه و در نتیجه Performance بهتری داشته باشیم.
این قابلیت توی NET Core 2.1 به صورت اختیاری اومد و توی NET Core 2.2 پیش نمایش 2 به صورت پیشفرض فعال بود، ولی از اونجایی که هنوز این تکنولوژی کامل و پایدار نشده، ماکروسافت ترجیح داد اون رو توی ورژن نهایی NET Core 2.2 مثل سابق به صورت اختیاری بذاره و تصمیم داره توی NET Core 3.0 اون رو به صورت پیشفرض فعال کنه
2️⃣ مشاهده رخداد های در حال اجرای برنامه (Runtime Events)
اینکه ما بتونیم رخداد های Runtime برنامه مون رو ببینیم خیلی مفیده، مثلا میتونیم ببینیم در کامپایلر JIT و Garbage Collector و یا ThreadPool چه اتفاقی میافته و این سرویس ها چطور رفتار میکنن
این قابلیت توی ویندوز توسط ETW که مخفف Event Tracing Window هست قابل انجامه ولی اگر برنامه شما داخل یک محیط با دسترسی محدود مثل هاست یا مثلا روی Linux و Mac اجرا بشه دیگه قابل انجام نیست
اما توی NET Core 2.2 میتونین این قابلیت رو توسط کلاس EventListener فعال کنین و اتفاقات Runtime برنامه تون رو Trace کنین
نمونه کد استفاده :
https://bit.ly/2Swq9WY
3️⃣ پشتیبانی از AccessToken در SqlConnection
هم اکنون، پروایدر ADO NET برای SQL Server و SqlClient از AccessToken تولید شده توسط Active Directory، پشتیبانی میکنه
4️⃣ تزریق کد به برنامه (Injecting code prior to Main)
توسط قابلیت Startup hooks می توان کد هایی که به متد Main یک برنامه در حال اجرا، بدون نیاز به Recompile کردن آن، تزریق کرد و رفتار برنامه را تغییر داد.
به عنوان مثال از این قابلیت میتوان برای سفارشی سازی رفتار برنامه و یا Trace کردن آن استفاده کرد
توضیحات بیشتر در مورد Startup hook
https://bit.ly/2SxsgK9
5️⃣ پشتیبانی از Windows ARM32
پشتیبانی از Linux ARM32 که قبلا توی NET Core 2.1 اضافه شد هم اکنون پشتیبانی از Windows ARM32 هم توی NET Core 2.2 اضافه شده و به عنوان بخشی از انتشار Windows Server 2019 هم پشتیانی از ARM32 به نسخه Nanoserver اضافه شده.
ولی پشتبیانی از Windows ARM32 به دلیل مشکلات دیر هنگامی که توی انتشار NET Core 2.2 پیش امده فعلا قابل ارائه نیست و انشالا قراره توی نسخه 2.2.1 در ماه ژانویه 2019 اضافه بشه
________________
@IranAspMvc
1️⃣ کامپایل چندگانه (Tiered Compilation)
این قابلیت باعث میشه کامپایلر JIT، کد ها رو به چند روش کامپایل کنه و هر کدوم که سریع تر بود رو اجرا کنه و در نتیجه Performance بهتری داشته باشیم.
این قابلیت توی NET Core 2.1 به صورت اختیاری اومد و توی NET Core 2.2 پیش نمایش 2 به صورت پیشفرض فعال بود، ولی از اونجایی که هنوز این تکنولوژی کامل و پایدار نشده، ماکروسافت ترجیح داد اون رو توی ورژن نهایی NET Core 2.2 مثل سابق به صورت اختیاری بذاره و تصمیم داره توی NET Core 3.0 اون رو به صورت پیشفرض فعال کنه
2️⃣ مشاهده رخداد های در حال اجرای برنامه (Runtime Events)
اینکه ما بتونیم رخداد های Runtime برنامه مون رو ببینیم خیلی مفیده، مثلا میتونیم ببینیم در کامپایلر JIT و Garbage Collector و یا ThreadPool چه اتفاقی میافته و این سرویس ها چطور رفتار میکنن
این قابلیت توی ویندوز توسط ETW که مخفف Event Tracing Window هست قابل انجامه ولی اگر برنامه شما داخل یک محیط با دسترسی محدود مثل هاست یا مثلا روی Linux و Mac اجرا بشه دیگه قابل انجام نیست
اما توی NET Core 2.2 میتونین این قابلیت رو توسط کلاس EventListener فعال کنین و اتفاقات Runtime برنامه تون رو Trace کنین
نمونه کد استفاده :
https://bit.ly/2Swq9WY
3️⃣ پشتیبانی از AccessToken در SqlConnection
هم اکنون، پروایدر ADO NET برای SQL Server و SqlClient از AccessToken تولید شده توسط Active Directory، پشتیبانی میکنه
4️⃣ تزریق کد به برنامه (Injecting code prior to Main)
توسط قابلیت Startup hooks می توان کد هایی که به متد Main یک برنامه در حال اجرا، بدون نیاز به Recompile کردن آن، تزریق کرد و رفتار برنامه را تغییر داد.
به عنوان مثال از این قابلیت میتوان برای سفارشی سازی رفتار برنامه و یا Trace کردن آن استفاده کرد
توضیحات بیشتر در مورد Startup hook
https://bit.ly/2SxsgK9
5️⃣ پشتیبانی از Windows ARM32
پشتیبانی از Linux ARM32 که قبلا توی NET Core 2.1 اضافه شد هم اکنون پشتیبانی از Windows ARM32 هم توی NET Core 2.2 اضافه شده و به عنوان بخشی از انتشار Windows Server 2019 هم پشتیانی از ARM32 به نسخه Nanoserver اضافه شده.
ولی پشتبیانی از Windows ARM32 به دلیل مشکلات دیر هنگامی که توی انتشار NET Core 2.2 پیش امده فعلا قابل ارائه نیست و انشالا قراره توی نسخه 2.2.1 در ماه ژانویه 2019 اضافه بشه
________________
@IranAspMvc
❇️ بررسی تغییرات و بهبود های مهم ASP NET Core 2.2
پیش نیاز استفاده از این نسخه، 2017 Visual Studio ورژن 15.9 به بالا هست (البته ممکنه توی ورژن های پایین تر هم کار کنه ولی پیشنهاد میشه 15.9 به بالا نصب کنید)
نسخه پیش نمایش Visual Studio 2019 هم دیروز در دسترس قرار گرفت اگه دوست داشتین میتونین امتحان کنین (ما هم در پست های آتی بهش خواهیم پرداخت)
نسخه 2.2 شامل بهبود های Performanc ایی و بیشتر تغییراتش مربوط به ورژن های پیش نمایش قبلی 2.2 هستند
از جمله :
1️⃣ یکپارچگی بهتر با کتابخانه های Open API مثل Swagger
https://bit.ly/2Sp2GXE
2️⃣ افزایش 20درصدی پرفرمنس مسیریابی توسط قابلیت Endpoint Routing
https://bit.ly/2SvHHT8
3️⃣ تولید راحتتر لینک های مسیریابی توسط کلاس LinkGenerator
https://bit.ly/2Sw96nT و https://bit.ly/2SwYzJd
4️⃣ ارائه API های جدید Health Checks برای مانیتور کردن سلامتی برنامه
https://bit.ly/2SvdT94
5️⃣ افزایش 400 درصدی پرفرمنس برنامه های ASP Core توسط قابلیت اجرای "in-process" درون IIS (یعنی وبسایت ما دیگه به صورت proxy پیشت iis اجرا نمیشه، بلکه درون خود iis worker process اجرا میشه. به همین دلیل پرفرمنس خیلی بالایی پیدا میکنیم)
https://bit.ly/2SvJQOG
6️⃣ افزایش 15 درصدی پرفرمنس سیستم اعتبار سنجی مدل (Model Validation)
https://bit.ly/2Su6SoZ
7️⃣ پیشتیبانی پیش نمایشی از HTTP/2 در Kestrel
https://bit.ly/2SstUfT
8️⃣ بروزرسانی Template های پروژه ASP Core جهت استفاده Bootstrap 4 و Angular 6
9️⃣ کتابخانه کلاینتی Java جهت ارتباط با ASP NET Core SignalR
https://bit.ly/2Ss3Q4H
🔟 افزایش 60درصدی پرفرمنس کلاس HttpClient بر روی لینوکس و افزایش 20درصدی بر روی ویندوز
https://bit.ly/2SAfcUr
البته به هنگام معرفی Roadmap و Planning نسخه 2.2، ماکروسافت قابلیت های زیادی رو برای افزودن نام برد از جمله موارد زیر
Authorization with IdentityServer4
Open API (Swagger) driven client code generation
HTTP REPL command line tool
ولی هنوز آماده نشده و در حال تکمیل شدن هست و به زودی دردسترس قرار میگیره
* میبینیم که ماکروسافت هم با اون عظمتش، توی برنامه ریزی هاش، فردین بازی در میاره و خیلی امکانات میگه ولی نمیرسه انجامشون بده (مثل هممون :دی)
________________
@IranAspMvc
پیش نیاز استفاده از این نسخه، 2017 Visual Studio ورژن 15.9 به بالا هست (البته ممکنه توی ورژن های پایین تر هم کار کنه ولی پیشنهاد میشه 15.9 به بالا نصب کنید)
نسخه پیش نمایش Visual Studio 2019 هم دیروز در دسترس قرار گرفت اگه دوست داشتین میتونین امتحان کنین (ما هم در پست های آتی بهش خواهیم پرداخت)
نسخه 2.2 شامل بهبود های Performanc ایی و بیشتر تغییراتش مربوط به ورژن های پیش نمایش قبلی 2.2 هستند
از جمله :
1️⃣ یکپارچگی بهتر با کتابخانه های Open API مثل Swagger
https://bit.ly/2Sp2GXE
2️⃣ افزایش 20درصدی پرفرمنس مسیریابی توسط قابلیت Endpoint Routing
https://bit.ly/2SvHHT8
3️⃣ تولید راحتتر لینک های مسیریابی توسط کلاس LinkGenerator
https://bit.ly/2Sw96nT و https://bit.ly/2SwYzJd
4️⃣ ارائه API های جدید Health Checks برای مانیتور کردن سلامتی برنامه
https://bit.ly/2SvdT94
5️⃣ افزایش 400 درصدی پرفرمنس برنامه های ASP Core توسط قابلیت اجرای "in-process" درون IIS (یعنی وبسایت ما دیگه به صورت proxy پیشت iis اجرا نمیشه، بلکه درون خود iis worker process اجرا میشه. به همین دلیل پرفرمنس خیلی بالایی پیدا میکنیم)
https://bit.ly/2SvJQOG
6️⃣ افزایش 15 درصدی پرفرمنس سیستم اعتبار سنجی مدل (Model Validation)
https://bit.ly/2Su6SoZ
7️⃣ پیشتیبانی پیش نمایشی از HTTP/2 در Kestrel
https://bit.ly/2SstUfT
8️⃣ بروزرسانی Template های پروژه ASP Core جهت استفاده Bootstrap 4 و Angular 6
9️⃣ کتابخانه کلاینتی Java جهت ارتباط با ASP NET Core SignalR
https://bit.ly/2Ss3Q4H
🔟 افزایش 60درصدی پرفرمنس کلاس HttpClient بر روی لینوکس و افزایش 20درصدی بر روی ویندوز
https://bit.ly/2SAfcUr
البته به هنگام معرفی Roadmap و Planning نسخه 2.2، ماکروسافت قابلیت های زیادی رو برای افزودن نام برد از جمله موارد زیر
Authorization with IdentityServer4
Open API (Swagger) driven client code generation
HTTP REPL command line tool
ولی هنوز آماده نشده و در حال تکمیل شدن هست و به زودی دردسترس قرار میگیره
* میبینیم که ماکروسافت هم با اون عظمتش، توی برنامه ریزی هاش، فردین بازی در میاره و خیلی امکانات میگه ولی نمیرسه انجامشون بده (مثل هممون :دی)
________________
@IranAspMvc
❇️ بررسی تغییرات و بهبود های مهم EF Core 2.2
نسخه 2.2 در طول انتشار نسخه های پیش نمایشش قابلیت های مهمی رو به خودش اضافه کرد و بیش از 100 باگ گذارش شده رو برطرف کرد
کلا EF Core از اولش که اومد باگ ها و نواقص زیادی داشت و برای پروژه واقعی خیلی چنگی به دل نمیزد ولی هرچه بیشتر پیش میره پایدار تر و کامل تر داره میشه و به نحوی که الان واقعا میشه اسم که ORM کامل رو روش گذاشت
از مهم ترین تغییرات، بهبود ها و امکانات جدیدش میشه به موارد زیر اشاره کرد:
1️⃣ پشتیبانی از Spatial data (دیتا های مربوط به نقشه و فضای 2 بعدی)
مثلا برای ذخیره مختصات یک location، یا اندازه گیری فاصله بین دو location، یافتن نزدیک ترین location ها و یا ذخیره سازی انواع و اقسام اشکال (Shape) از جمله polygon و... ما نیاز به Spatial Data داریم، که این نوع توی اکثر دیتابیس ها از جمله SQL Server پشتیبانی میشه ولی قبلا توی EF Core نمیشد ازش استفاده کرد
هم اکنون EF Core 2.2 به لطف استفاده از کتابخانه جغرافیایی NetTopologySuite یا به اختصار (NTS) از این قابلیت پشتیبانی گسترده ای میکنه و محدودیت نسخه های پیش نمایش رو نداره.
در این راستا پکیج های مختلفی برای Provider های EF از جلمه SQL Server، PostgreSQL, SQLite و... ایجاد شده تا شما بتونین Spatial Data ها رو توسط EF Core داخلشون ذخیره کنین و یا بخونین ازشون و همچنین از function هاش استفاده کنین
مثلا برای استفاده از Spatial Data روی SQL Server توسط EF Core به پکیج زیر نیاز دارین
https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite/
مطالعه بیشتر:
https://docs.microsoft.com/en-us/ef/core/modeling/spatial
2️⃣ پشتیبانی از Collections of Owned Entities
توی EF Core 2.0 قابلیتی به نام Owned Entities اضافه شد که مشابه به استفاده از Complex type ها توی EF 6 بود (مشابه رابطه 1 به 1). این قابلیت توی نسخه 2.1 تکمیل تر شد و توی نسخه 2.2 ما شاهد پشتیبانی "لیستی از Owned Entities ها" هستیم (مشابه رابطه 1 به چند).
درواقع توی دتیابیس های رابطه ای، به ازای Owned Collections، جداول جدایی ایجاد میشن (دقیقا مثل رابطه 1 به چند معمولی) ولی توی دیتابیس های غیر رابطه ای Document-Oriented، به ازای Owned Collections جدول جدایی ساخته نمیشه و به صورت document داخل خود جدول مالک ذخیره میشن
جهت استفاده ازش هم باید به صورت Fluent Api اون رو Config کنین
مطالعه بیشتر:
https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities#collections-of-owned-types
3️⃣ قابلیت Query Tags
توسط این قابلیت میشه چیز خیلی خفنی نیست و فقط باعث میشه شما بتونین روی کوئری های Linq اتون یه توضیحی رو اضافه کنین و این توضیح توی کوئری SQL ساخته شده اضافه میشه و درنتیجه توی لاگ کوئری هاتون میتونین بالای سر هر کوئری، توضیحی رو که بهش اضافه کردین، مشاهده کنین
بیشتر موقع لاگ کردن کوئری هاتون مناسبه و باعث میشه بتونین راحت تر کوئری هاتون رو بررسی کنین
توضیحات بیشتر:
https://docs.microsoft.com/ef/core/querying/tags
نکته : طبق گفته های ماکروسافت این نسخه (یعنی 2.2) با نسخه قبلی (یعنی EF Core 2.1) سازگار هست و اصطلاحا Backwards Compatible هست و با خیال راحت میتونین پکیج EF پروژتون رو آپدیت کنین
🔰و اما قراره تو نسخه EF Core 3 قابلیت های جدید اضافه بشه، از جمله:
- بهبود هایی در رابطه با کوئری های Linq
- پروایدر جدید و پشتیبانی از Cosmos DB
- پشتیبانی از قابلیت های سی شارپ 8.0
- تولید View ها به هنگام Reverse POCO Generation
- قابلیت جدیدی به نام Property Bag Entities که باعث میشه بتونیم پروپرتی هایی از نوع Dictionary رو داخل دیتابیس ذخیره کنیم
- قابلیت اجرای EF 6.3 روی NET Core 3.0
_________________
@IranAspMvc
نسخه 2.2 در طول انتشار نسخه های پیش نمایشش قابلیت های مهمی رو به خودش اضافه کرد و بیش از 100 باگ گذارش شده رو برطرف کرد
کلا EF Core از اولش که اومد باگ ها و نواقص زیادی داشت و برای پروژه واقعی خیلی چنگی به دل نمیزد ولی هرچه بیشتر پیش میره پایدار تر و کامل تر داره میشه و به نحوی که الان واقعا میشه اسم که ORM کامل رو روش گذاشت
از مهم ترین تغییرات، بهبود ها و امکانات جدیدش میشه به موارد زیر اشاره کرد:
1️⃣ پشتیبانی از Spatial data (دیتا های مربوط به نقشه و فضای 2 بعدی)
مثلا برای ذخیره مختصات یک location، یا اندازه گیری فاصله بین دو location، یافتن نزدیک ترین location ها و یا ذخیره سازی انواع و اقسام اشکال (Shape) از جمله polygon و... ما نیاز به Spatial Data داریم، که این نوع توی اکثر دیتابیس ها از جمله SQL Server پشتیبانی میشه ولی قبلا توی EF Core نمیشد ازش استفاده کرد
هم اکنون EF Core 2.2 به لطف استفاده از کتابخانه جغرافیایی NetTopologySuite یا به اختصار (NTS) از این قابلیت پشتیبانی گسترده ای میکنه و محدودیت نسخه های پیش نمایش رو نداره.
در این راستا پکیج های مختلفی برای Provider های EF از جلمه SQL Server، PostgreSQL, SQLite و... ایجاد شده تا شما بتونین Spatial Data ها رو توسط EF Core داخلشون ذخیره کنین و یا بخونین ازشون و همچنین از function هاش استفاده کنین
مثلا برای استفاده از Spatial Data روی SQL Server توسط EF Core به پکیج زیر نیاز دارین
https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite/
مطالعه بیشتر:
https://docs.microsoft.com/en-us/ef/core/modeling/spatial
2️⃣ پشتیبانی از Collections of Owned Entities
توی EF Core 2.0 قابلیتی به نام Owned Entities اضافه شد که مشابه به استفاده از Complex type ها توی EF 6 بود (مشابه رابطه 1 به 1). این قابلیت توی نسخه 2.1 تکمیل تر شد و توی نسخه 2.2 ما شاهد پشتیبانی "لیستی از Owned Entities ها" هستیم (مشابه رابطه 1 به چند).
درواقع توی دتیابیس های رابطه ای، به ازای Owned Collections، جداول جدایی ایجاد میشن (دقیقا مثل رابطه 1 به چند معمولی) ولی توی دیتابیس های غیر رابطه ای Document-Oriented، به ازای Owned Collections جدول جدایی ساخته نمیشه و به صورت document داخل خود جدول مالک ذخیره میشن
جهت استفاده ازش هم باید به صورت Fluent Api اون رو Config کنین
modelBuilder.Entity<Customer>().OwnsMany(c => c.Addresses);
جهت اطلاعات بیشترمطالعه بیشتر:
https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities#collections-of-owned-types
3️⃣ قابلیت Query Tags
توسط این قابلیت میشه چیز خیلی خفنی نیست و فقط باعث میشه شما بتونین روی کوئری های Linq اتون یه توضیحی رو اضافه کنین و این توضیح توی کوئری SQL ساخته شده اضافه میشه و درنتیجه توی لاگ کوئری هاتون میتونین بالای سر هر کوئری، توضیحی رو که بهش اضافه کردین، مشاهده کنین
بیشتر موقع لاگ کردن کوئری هاتون مناسبه و باعث میشه بتونین راحت تر کوئری هاتون رو بررسی کنین
توضیحات بیشتر:
https://docs.microsoft.com/ef/core/querying/tags
نکته : طبق گفته های ماکروسافت این نسخه (یعنی 2.2) با نسخه قبلی (یعنی EF Core 2.1) سازگار هست و اصطلاحا Backwards Compatible هست و با خیال راحت میتونین پکیج EF پروژتون رو آپدیت کنین
🔰و اما قراره تو نسخه EF Core 3 قابلیت های جدید اضافه بشه، از جمله:
- بهبود هایی در رابطه با کوئری های Linq
- پروایدر جدید و پشتیبانی از Cosmos DB
- پشتیبانی از قابلیت های سی شارپ 8.0
- تولید View ها به هنگام Reverse POCO Generation
- قابلیت جدیدی به نام Property Bag Entities که باعث میشه بتونیم پروپرتی هایی از نوع Dictionary رو داخل دیتابیس ذخیره کنیم
- قابلیت اجرای EF 6.3 روی NET Core 3.0
_________________
@IranAspMvc
www.nuget.org
Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite 7.0.2
NetTopologySuite support for the Microsoft SQL Server database provider for Entity Framework Core.
نسخه پیش نمایش Visual Studio 2019 منتشر شد
بیشتر تغییرات این نسخه مربوط به ظاهر و UX اون هست که واقعا خیلی جذاب و کارآمدش کرده
تغییرات ظاهری جدید:
https://blogs.msdn.microsoft.com/visualstudio/2018/12/04/making-every-developer-more-productive-with-visual-studio-2019/
لیست کامل تغییرات + لینک دانلود VS Installer آنلاین:
https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-preview
همزمان با نسخه پیش نمایش VS 2019، نسخه پیش نمایش NET Core 3.0 هم منتشر شد که توسط این ورژن از VS قابل استفاده است
https://aka.ms/netcore3preview1
لینک دانلود NET Core 3.0 نسخه preview
https://dotnet.microsoft.com/download/dotnet-core/3.0
_____________
@IranAspMvc
بیشتر تغییرات این نسخه مربوط به ظاهر و UX اون هست که واقعا خیلی جذاب و کارآمدش کرده
تغییرات ظاهری جدید:
https://blogs.msdn.microsoft.com/visualstudio/2018/12/04/making-every-developer-more-productive-with-visual-studio-2019/
لیست کامل تغییرات + لینک دانلود VS Installer آنلاین:
https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-preview
همزمان با نسخه پیش نمایش VS 2019، نسخه پیش نمایش NET Core 3.0 هم منتشر شد که توسط این ورژن از VS قابل استفاده است
https://aka.ms/netcore3preview1
لینک دانلود NET Core 3.0 نسخه preview
https://dotnet.microsoft.com/download/dotnet-core/3.0
_____________
@IranAspMvc
#Quotes
بهترین معماری، معماری ایی نیست که بیشترین پرفرمنس، یا بهترین دیزاین پترن ها را داشته باشد!
بهترین معماری، معماری ای است، "خاص سلوشن شما" که متعادل ترین وزن بین "دیزاین پترن ها"، "قرارداد ها"، "قابلیت توسعه و نگهداری"، "تست پذیری" و "پرفرمنس" را داشته باشد
@IranAspMvc
بهترین معماری، معماری ایی نیست که بیشترین پرفرمنس، یا بهترین دیزاین پترن ها را داشته باشد!
بهترین معماری، معماری ای است، "خاص سلوشن شما" که متعادل ترین وزن بین "دیزاین پترن ها"، "قرارداد ها"، "قابلیت توسعه و نگهداری"، "تست پذیری" و "پرفرمنس" را داشته باشد
@IranAspMvc
DotNetZoom
#طنزتلخ #جالب #استارتاپ ، آنهم از نوع ایرانیش! 😐😅 @IranAspMvc
منبعش این کلیپ رو نمیدونستم
یکی از دوستان لطف کردند و منبعش رو بهم گفتند و منم منبعش رو میخوام بذارم
ولی قبلش یه درد و دل :
کاش رعایت حق کپی رایت رو از خودمون شروع کنیم و وقتی کسی مطلب خوبی تهیه میکنه و اونقدر جذاب هست که ما اون رو به اشتراک میگذاریم، منبعش رو هم با افتخار اعلام کنیم.
واقعا اون شخص هم ساعت ها وقت صرف کرده تا اون مطلب رو تهیه کرده، سزاوار نیست که حق دیده شدن و معروف شدن رو ازش صلب کنیم
بیایم به جای اینکه به مقوله پیشرفت به دید "خرچنگی" نگاه کنیم و با پا گذاشتن روی سر و گردن هم دیگه پیشرفت کنیم؛
به مقوله پیشرفت به دید "برد-برد" نگاه کنیم و با انتشار اون مطلب هم خودمون پز در کنیم و هم منبعش دیده بشه
منبع ویدئوی بالایی :
تکتاکس (اولین رسانه تصویری حوزه فناوری اطلاعات و ارتباطات ایران)
www.techtalks.ir
@techtalks_ir
یکی از دوستان لطف کردند و منبعش رو بهم گفتند و منم منبعش رو میخوام بذارم
ولی قبلش یه درد و دل :
کاش رعایت حق کپی رایت رو از خودمون شروع کنیم و وقتی کسی مطلب خوبی تهیه میکنه و اونقدر جذاب هست که ما اون رو به اشتراک میگذاریم، منبعش رو هم با افتخار اعلام کنیم.
واقعا اون شخص هم ساعت ها وقت صرف کرده تا اون مطلب رو تهیه کرده، سزاوار نیست که حق دیده شدن و معروف شدن رو ازش صلب کنیم
بیایم به جای اینکه به مقوله پیشرفت به دید "خرچنگی" نگاه کنیم و با پا گذاشتن روی سر و گردن هم دیگه پیشرفت کنیم؛
به مقوله پیشرفت به دید "برد-برد" نگاه کنیم و با انتشار اون مطلب هم خودمون پز در کنیم و هم منبعش دیده بشه
منبع ویدئوی بالایی :
تکتاکس (اولین رسانه تصویری حوزه فناوری اطلاعات و ارتباطات ایران)
www.techtalks.ir
@techtalks_ir
روش های Audit!
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
@IranAspMvc
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
@IranAspMvc
گیتهاب را خدا آزاد کرد! (البته نه به طور کامل 😏)
https://t.iss.one/AttachFiles/2
خبر خوب واسه کاربران Github اینکه، ماکروسافت امکان ساخت Repository های Private (خصوصی) رو برای همه رایگان کرد
دیشب این خبر همه جا رو ترکوند و توی هر گروهی میرفتی لایک و شادی مردم بود که همه جا موج میزد (یعنی در این حد که حتی کسی که گیتهاب رو نمیشناخت هم داشت خوشحالی میکرد 😅)
اما امروز که خبرش بیشتر پخش شده بود و محدودیت هاشو فهمیده بودن، دیگه خیلی هم واسه این خبر تره خرد نمیکردن
اینم لینک خبر :
https://blog.github.com/2019-01-07-new-year-new-github/
و اما مهم ترین محدودیت ها :
1- هر ریپازیتوری private حداکثر میتونه 3 نفر مشارکت کننده/برنامه نویس داشته باشه
2- ریپازیتوری های private نیمتونن Wiki و Github Pages داشته باشن
محدودیت های (نسبتا غیر مهم) دیگه ای هم وجود داره که از مقایسه پلن های گیتهاب میتونین ببینیدشون
https://github.com/pricing
میبینیم با این محدودیت 3 نفری که داره، دیگه زیاد مالی هم نیست، چون اکثر پروژه ها بیش از 3 برنامه نویس لازم دارن
و مثلا Gitlab و BitBucket محدودیت های کمتری توی این زمینه دارند (که متاسفانه ایرانم تحریم کردند)
اما سرویس بهتری که وجود داره سرویس Azure DevOps (یا همون VSTS سابق) ماکروسافت هست و محدودیت هاشم کمتره
- حداکثر تعداد روی 5 نفر هست (که واسه خیلی از پروژه ها مناسبه)
- واسه بحث CI/CD هم، امکان Build و Deploy رو تا 1800 دقیقه در ماه به صورت رایگان بهتون میده (که بازم واسه خیلی از پروژه ها کافیه، تازه زیادم هست)
- تازه به پروژه Github اتونم میتونه وصل بشه
- و خوشبختانه ایران رو هم تحریم نکرده؛ میشه گفت ماکروسافت جز معدود شرکت هایی هست که تحریم ها رو به طور کامل اعمال نکرده (خلاصه واسه ایرانیا که دمش گرمه)
پس ای غیر ماکروسافتی ها، به ماکروسافت ایمان بیاورید
پلن رایگان هم داره
https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
نهایتا جفت اینها (Azure DevOps و GitHub) هم مال ماکروسافتن، پس فعلا بین این دو، هنوز Azure DevOps گزینه بهتری هست
@IranAspMvc
https://t.iss.one/AttachFiles/2
خبر خوب واسه کاربران Github اینکه، ماکروسافت امکان ساخت Repository های Private (خصوصی) رو برای همه رایگان کرد
دیشب این خبر همه جا رو ترکوند و توی هر گروهی میرفتی لایک و شادی مردم بود که همه جا موج میزد (یعنی در این حد که حتی کسی که گیتهاب رو نمیشناخت هم داشت خوشحالی میکرد 😅)
اما امروز که خبرش بیشتر پخش شده بود و محدودیت هاشو فهمیده بودن، دیگه خیلی هم واسه این خبر تره خرد نمیکردن
اینم لینک خبر :
https://blog.github.com/2019-01-07-new-year-new-github/
و اما مهم ترین محدودیت ها :
1- هر ریپازیتوری private حداکثر میتونه 3 نفر مشارکت کننده/برنامه نویس داشته باشه
2- ریپازیتوری های private نیمتونن Wiki و Github Pages داشته باشن
محدودیت های (نسبتا غیر مهم) دیگه ای هم وجود داره که از مقایسه پلن های گیتهاب میتونین ببینیدشون
https://github.com/pricing
میبینیم با این محدودیت 3 نفری که داره، دیگه زیاد مالی هم نیست، چون اکثر پروژه ها بیش از 3 برنامه نویس لازم دارن
و مثلا Gitlab و BitBucket محدودیت های کمتری توی این زمینه دارند (که متاسفانه ایرانم تحریم کردند)
اما سرویس بهتری که وجود داره سرویس Azure DevOps (یا همون VSTS سابق) ماکروسافت هست و محدودیت هاشم کمتره
- حداکثر تعداد روی 5 نفر هست (که واسه خیلی از پروژه ها مناسبه)
- واسه بحث CI/CD هم، امکان Build و Deploy رو تا 1800 دقیقه در ماه به صورت رایگان بهتون میده (که بازم واسه خیلی از پروژه ها کافیه، تازه زیادم هست)
- تازه به پروژه Github اتونم میتونه وصل بشه
- و خوشبختانه ایران رو هم تحریم نکرده؛ میشه گفت ماکروسافت جز معدود شرکت هایی هست که تحریم ها رو به طور کامل اعمال نکرده (خلاصه واسه ایرانیا که دمش گرمه)
پس ای غیر ماکروسافتی ها، به ماکروسافت ایمان بیاورید
پلن رایگان هم داره
https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
نهایتا جفت اینها (Azure DevOps و GitHub) هم مال ماکروسافتن، پس فعلا بین این دو، هنوز Azure DevOps گزینه بهتری هست
@IranAspMvc
Telegram
Attach Files
https://t.iss.one/IranAspMvc/619
معرفی EntityFrameworkCore.Cacheable
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
این قابلیت باعث میشه کوئری شما به جای اینکه از دیتابیس خونده بشه، از Cache شما خونده بشه و ضمن کاهش تراکنش به دیتابیس، سرعت بالایی در واکشی کوئری هاتون داشته باشین.
واسه اینکار فقط کافیه متد Cacheable رو روی کوئری تون استفاده کنین
و بار اول از دیتابیس بخونینش؛ ولی دفعات بعد(تا زمان منقضی شدن کش) نتیجه کوئری شما از Cache خونده میشه، نه از دیتابیس
مثال :
البته نقطه ضعف این کتابخانه اینه که متد های async رو فعلا پشتیبانی نیمکنه و باید به صورت معمولی (غیر async) فراخوانیش کنین که امیدوارم این ضعفشم برطرف بشه
https://github.com/SteffenMangold/EntityFrameworkCore.Cacheable
نکته مهمی که هست اینه که همیشه استفاده از Caching مثل یه شمشیر دو لبه میمونه و ضمن همه مزیت های خوبی که داره، اگه به دقت و با علم کامل ازش استفاده نشه میتونه کل پروژه رو ببره رو هوا!
مثلا کش کردن دیتای زیاد یا با مدت طولانی میتونه رم سرور رو به ف.. بده؛ یا مثلا کش با مدت زیاد، اگه مدیریت نشه میتونه دیتا های غیر معتبر رو وارد سیستم کنه
پس مراقب خودتون و پروژه هاتون باشین ;)
#Cache #Caching #EFCore #Extensions
@IranAspMvc
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
A high-performance second-level query cache for EF Core.این کتابخونه قابلیت Caching رو روی Query های EF Core فراهم میکنه که اصطلاحا به این کار میگن سطح دوم کش (second-level) برای EF
این قابلیت باعث میشه کوئری شما به جای اینکه از دیتابیس خونده بشه، از Cache شما خونده بشه و ضمن کاهش تراکنش به دیتابیس، سرعت بالایی در واکشی کوئری هاتون داشته باشین.
واسه اینکار فقط کافیه متد Cacheable رو روی کوئری تون استفاده کنین
و بار اول از دیتابیس بخونینش؛ ولی دفعات بعد(تا زمان منقضی شدن کش) نتیجه کوئری شما از Cache خونده میشه، نه از دیتابیس
مثال :
dbContext.Booksکد بالا کوئری مورد نظر رو به مدت 60 ثانیه کش میکنه و اگر توی این مدت، مجدد همین کوئری رو فراخوانی کنین، نتیجه از کش خونده بشه
.Include(d => d.Pages)
.ThenInclude(d => d.Lines)
.Where(d => d.ID == 200)
.Cacheable(TimeSpan.FromSeconds(60))
البته نقطه ضعف این کتابخانه اینه که متد های async رو فعلا پشتیبانی نیمکنه و باید به صورت معمولی (غیر async) فراخوانیش کنین که امیدوارم این ضعفشم برطرف بشه
https://github.com/SteffenMangold/EntityFrameworkCore.Cacheable
نکته مهمی که هست اینه که همیشه استفاده از Caching مثل یه شمشیر دو لبه میمونه و ضمن همه مزیت های خوبی که داره، اگه به دقت و با علم کامل ازش استفاده نشه میتونه کل پروژه رو ببره رو هوا!
مثلا کش کردن دیتای زیاد یا با مدت طولانی میتونه رم سرور رو به ف.. بده؛ یا مثلا کش با مدت زیاد، اگه مدیریت نشه میتونه دیتا های غیر معتبر رو وارد سیستم کنه
پس مراقب خودتون و پروژه هاتون باشین ;)
#Cache #Caching #EFCore #Extensions
@IranAspMvc
GitHub
GitHub - SteffenMangold/EntityFrameworkCore.Cacheable: EntityFrameworkCore second level cache
EntityFrameworkCore second level cache. Contribute to SteffenMangold/EntityFrameworkCore.Cacheable development by creating an account on GitHub.
ModelBuilderExtensions.cs
1.2 KB
اگه از FluentAPI برای کانفیگ کردن قیود دیتابیسی در EF Core استفاده میکنین میدونین که باید هر کلاس کانفیگ رو توسط متد ApplyConfiguration روی modelBuilder اعمال کنید (درون متد OnModelCreating کلاس DbContext)
مثال :
وقتی تعداد کانفیگ های شما زیاد میشه، رجیستر کردن دستی این ها جالب نیست و بهتر میشد اگه تمام کانفیگ های FluentAPI داخل پروژه به صورت خودکار رجیستر بشن
اکستنشن متد ApplyConfigurationsFromAssembly که توی کلاس ضمیمه شده موجود هست، میاد و این کار رو توسط Reflection انجام میده. مثلا :
کد فوق میاد و تمامی کلاس های کانفیگ موجود در اسمبلی معرفی شده رو به صورت خودکار رجیستر میکنه و کار شما رو راحت میکنه
تا قبل از این، چنین متدی وجود نداشت و باید خودمون می نوشتیم،اما در ورژن 2.2 EF Core ، این متد به صورت توکار داخل کلاس ModelBuilder اضافه شده و میتونین مثل نمونه قبل ازش استفاده کنین
@IranAspMvc
مثال :
modelBuilder.ApplyConfiguration(new OrderConfiguration());
وقتی تعداد کانفیگ های شما زیاد میشه، رجیستر کردن دستی این ها جالب نیست و بهتر میشد اگه تمام کانفیگ های FluentAPI داخل پروژه به صورت خودکار رجیستر بشن
اکستنشن متد ApplyConfigurationsFromAssembly که توی کلاس ضمیمه شده موجود هست، میاد و این کار رو توسط Reflection انجام میده. مثلا :
modelBuilder.ApplyConfigurationsFromAssembly(typeof(MyDbContext).Assembly);
کد فوق میاد و تمامی کلاس های کانفیگ موجود در اسمبلی معرفی شده رو به صورت خودکار رجیستر میکنه و کار شما رو راحت میکنه
تا قبل از این، چنین متدی وجود نداشت و باید خودمون می نوشتیم،اما در ورژن 2.2 EF Core ، این متد به صورت توکار داخل کلاس ModelBuilder اضافه شده و میتونین مثل نمونه قبل ازش استفاده کنین
@IranAspMvc
بازنویسی یک برنامهی قدیمی Web Form با DDD، TDD و NET Core
پیشنهاد میکنم این مقاله بسیار طولانی و خسته کننده رو بخونین، چون موارد خیلی زیادی رو به صورت عملی یادتون میده
فقط کافیه لیست تکنولوژی ها و معماری های استفاده شده رو ببینین تا به پر مایه بودنش پی ببرین
- #DDD & #CQRS
- Using CoreDdd (a library to work with DDD and CQRS.)
- #TDD & #Unit_Testing
- Using #NUnit (a unit test framework)
- Using #Shouldly (an assertion framework for NUnit)
- Using #Nhibernate ORM & CoreDdd.Nhibernate (for persistence layer)
- Using #FluentNHibernate (for database mappings)
- #Mocking & #Fake Services
- Using #FakeItEasy (an easy mocking framework)
- Adding ASP NET Core & built-in IOC Container
- #Command_Handler Pattern
- #Domain_Events Handler Pattern
- Domain Events Message Handler Pattern
- Adding #Message_Bus
- Using #Rebus & Rebus.Async (a message bus library)
- Using Await/Async for Performance Boost
لینک مقاله :
https://bit.ly/2UpoW5F
ریپازیتوری پروژه :
https://github.com/xhafan/legacy-to-coreddd
@IranAspMvc
پیشنهاد میکنم این مقاله بسیار طولانی و خسته کننده رو بخونین، چون موارد خیلی زیادی رو به صورت عملی یادتون میده
فقط کافیه لیست تکنولوژی ها و معماری های استفاده شده رو ببینین تا به پر مایه بودنش پی ببرین
- #DDD & #CQRS
- Using CoreDdd (a library to work with DDD and CQRS.)
- #TDD & #Unit_Testing
- Using #NUnit (a unit test framework)
- Using #Shouldly (an assertion framework for NUnit)
- Using #Nhibernate ORM & CoreDdd.Nhibernate (for persistence layer)
- Using #FluentNHibernate (for database mappings)
- #Mocking & #Fake Services
- Using #FakeItEasy (an easy mocking framework)
- Adding ASP NET Core & built-in IOC Container
- #Command_Handler Pattern
- #Domain_Events Handler Pattern
- Domain Events Message Handler Pattern
- Adding #Message_Bus
- Using #Rebus & Rebus.Async (a message bus library)
- Using Await/Async for Performance Boost
لینک مقاله :
https://bit.ly/2UpoW5F
ریپازیتوری پروژه :
https://github.com/xhafan/legacy-to-coreddd
@IranAspMvc
معرفی ابزار #AutoRest
کد جنریتوری برای OpenAPI Specification که از زبان های مختلفی از جمله C#, Go, Java, Node.js, TypeScript, Python, Ruby و PHP پشتیبانی میکند
اگه توی پروژه های API تون از ابزاری مثل Swagger که بر اساس OpenAPI Specification میاد و از روی API هاتون، مستندات استانداردی رو تهیه میکنه، استفاده میکنید
میتونین در کنارش توسط ابزار AutoRest، کد های لازم برای ارتباط با API هاتون رو در سمت کلاینت در زبان های مختلف به راحتی تولید کنید
در واقع این ابزار میاد و از روی مستندات API هاتون، SDK های لازم سمت کلاینت رو (مثلا برای TypeScript) می سازه و توی پروژه Angular تون میتونین به راحتی از API هاتون استفاده کنین.
ریپازیتوری پروژه :
https://github.com/Azure/autorest
ویدئو آموزشی :
https://bit.ly/2RPEX6c
#Swagger #OpenAPI #Rest #Restful #API #CodeGenerator
_______________
@IranAspMvc
کد جنریتوری برای OpenAPI Specification که از زبان های مختلفی از جمله C#, Go, Java, Node.js, TypeScript, Python, Ruby و PHP پشتیبانی میکند
اگه توی پروژه های API تون از ابزاری مثل Swagger که بر اساس OpenAPI Specification میاد و از روی API هاتون، مستندات استانداردی رو تهیه میکنه، استفاده میکنید
میتونین در کنارش توسط ابزار AutoRest، کد های لازم برای ارتباط با API هاتون رو در سمت کلاینت در زبان های مختلف به راحتی تولید کنید
در واقع این ابزار میاد و از روی مستندات API هاتون، SDK های لازم سمت کلاینت رو (مثلا برای TypeScript) می سازه و توی پروژه Angular تون میتونین به راحتی از API هاتون استفاده کنین.
ریپازیتوری پروژه :
https://github.com/Azure/autorest
ویدئو آموزشی :
https://bit.ly/2RPEX6c
#Swagger #OpenAPI #Rest #Restful #API #CodeGenerator
_______________
@IranAspMvc
DotNetZoom via @vote
یه سوال جالب و مرتبط با برنامه نویسی! آیا شما به عنوان یه برنامه نویس، فکر میکنین برای تخلیه ذهنی و رفع دغدغه های فکری، Game میتونه کمک کنه؟ آیا خودتون هم گیمر هستین؟
anonymous poll
2- بله کمک میکنه ولی گیمر نیستم – 138
👍👍👍👍👍👍👍 39%
1- بله کمک میکنه، گیمر هم هستم – 108
👍👍👍👍👍 31%
4- خیر نه کمک میکنه و نه گیمر هستم – 89
👍👍👍👍👍 25%
3- خیر کمک نمیکنه ولی گیمر هستم – 16
👍 5%
👥 351 people voted so far.
anonymous poll
2- بله کمک میکنه ولی گیمر نیستم – 138
👍👍👍👍👍👍👍 39%
1- بله کمک میکنه، گیمر هم هستم – 108
👍👍👍👍👍 31%
4- خیر نه کمک میکنه و نه گیمر هستم – 89
👍👍👍👍👍 25%
3- خیر کمک نمیکنه ولی گیمر هستم – 16
👍 5%
👥 351 people voted so far.
DotNetZoom via @vote
به عنوان یه برنامه نویس بطور میانگین چه مدت از وقتتون در روز رو صرف Game میکنین؟
anonymous poll
1- اصلا بازی نمی کنم – 246
👍👍👍👍👍👍👍 60%
2- کمتر از 1 ساعت – 89
👍👍👍 22%
3- بین 1 تا 2 ساعت – 53
👍👍 13%
5- بیش از 3 ساعت – 12
▫️ 3%
4- بین 2 تا 3 ساعت – 7
▫️ 2%
👥 407 people voted so far.
anonymous poll
1- اصلا بازی نمی کنم – 246
👍👍👍👍👍👍👍 60%
2- کمتر از 1 ساعت – 89
👍👍👍 22%
3- بین 1 تا 2 ساعت – 53
👍👍 13%
5- بیش از 3 ساعت – 12
▫️ 3%
4- بین 2 تا 3 ساعت – 7
▫️ 2%
👥 407 people voted so far.
❇️ لطفا به هر دو نظر سنجی بالا جواب بدید👆
میتونه به نتایج جالبی منجر بشه 😉
میتونه به نتایج جالبی منجر بشه 😉