ASP.NET Core provides better support for clean, testable, maintainable architectures than any of its predecessors. Learn the underlying principles that apply to project/solution organization, how best to arrange your projects to support clean code, and how to refactor existing solutions toward this architecture. Examples will use ASP.NET Core but the principles covered apply to all languages and platforms.
اشتراکها
اشتراکها
Data Dictionary در C#.NET
اشتراکها
پیاده سازی Row Level Security در EF6
پاسخ به بازخوردهای پروژهها
استفاده از pdfreport برای اولین بار
لینک مثالها خطا میده
Source control for your project is currently unavailable. Source code cannot be accessed at this time.
You can check our System Outages page to see if this is a known issue, otherwise you can report the problem through our Contact Us page.
Now you can upgrade any .NET application to the latest version of .NET inside of Visual Studio! We are happy to introduce it as a Visual Studio extension and will upgrade your .NET Framework or .NET Core web- and desktop apps. In this video, Olia shows you how to get the extension and start to update your projects to the latest version of NET in minutes.
دات نت 7 به همراه یک Regex Source Generator توکار است که به کمک آن میتوان عبارات باقاعده را تبدیل به کدهای سیشارپ معادل آنها کرد و پیش از اجرای برنامه، آنها را کامپایل و جزئی از خروجی نهایی نمود. این روش نسبت به روش پیشین تولید کدهای معادل عبارات باقاعده در زمان اجرای برنامه، از مزایای زیر برخوردار است:
- اجرای یک عبارت باقاعده سریعتر خواهد شد. در این حالت دیگر نیازی نیست تا در حین اجرای برنامه، منتظر پردازش و تولید کدهای سیشارپ معادل آن شد.
- کدهای تولیدی پیش از کامپایل برنامه، از مزایای بهینه سازی ویژهای برخوردار میشوند که پیشتر تنها با ذکر پرچم RegexOptions.Compiled در زمان اجرا میسر میشدند.
- بعضی از سکوهای کاری مانند iOS، از تولید کد در زمان اجرای برنامه پشتیبانی نمیکنند. در این حالت یک تولید کنندهی کد سیشارپ معادل در زمان کامپایل برنامه، حداکثر کارآیی را برای اینگونه سکوهای کاری به ارمغان میآورد.
- امکان مطالعهی کدهای سیشارپ تولیدی معادل یک عبارت باقاعده، برای اولین بار پیش از اجرای برنامه میسر شدهاست.
- کدهای تولیدی معادل، قابلیت دیباگ دارند.
- میتوان با مطالعهی این کدها، نکات جدیدی را فرا گرفت!
چه عبارت باقاعدهای را میتوان به Regex source generators تبدیل کرد؟
برای استفاده از این تولید کنندهی کدهای معادل عبارات باقاعده، باید از NET 7. و C# 11 استفاده کرد. همچنین تمام پارامترهای Regex تعریف شده نیز باید ثابت باشند. برای نمونه در دو مثال زیر، در اولی، pattern ثابت است و در دومی هم pattern و هم سایر تنظیمات ذکر شده؛ بنابراین قابلیت تبدیل به روش استفاده از تولید کنندههای کد را دارند:
اما مثال زیر خیر؛ در این مثال چون pattern یک متغیر است، امکان تبدیل آن به روش تولید کنندهی خودکار کدهای معادل وجود ندارد:
روش استفاده از Regex source generators
برای تبدیل مثالهایی که عنوان شدند به نمونهی source generator، باید ابتدا یک partial method مزین شدهی به ویژگی [GeneratedRegex] را ایجاد کرد؛ برای نمونه:
سپس میتوان از این partial method، که کدهای آن به صورت خودکار تولید میشوند، در قسمتهای مختلف برنامه استفاده کرد؛ برای مثال:
اگر علاقمند بودید تا کد معادل این partial method را مشاهده کنید، بر روی آن کلیک راست کرده و گزینهی «Go to Definition» را انتخاب کنید (و یا نگه داشتن دکمهی ctrl و سپس کلیک بر روی تعریف partial متد):
همچنین ابزارهای refactoring خودکاری نیز در IDEهای جدید برای این منظور تعبیه شدهاند تا بتوان به سرعت کدهای قدیمی را به روش source generators تبدیل کرد:
و partial method تولیدی، اینبار به همراه توضیح کامل نحوهی عملکرد عبارت باقاعدهی مورد استفاده نیز هست:
- اجرای یک عبارت باقاعده سریعتر خواهد شد. در این حالت دیگر نیازی نیست تا در حین اجرای برنامه، منتظر پردازش و تولید کدهای سیشارپ معادل آن شد.
- کدهای تولیدی پیش از کامپایل برنامه، از مزایای بهینه سازی ویژهای برخوردار میشوند که پیشتر تنها با ذکر پرچم RegexOptions.Compiled در زمان اجرا میسر میشدند.
- بعضی از سکوهای کاری مانند iOS، از تولید کد در زمان اجرای برنامه پشتیبانی نمیکنند. در این حالت یک تولید کنندهی کد سیشارپ معادل در زمان کامپایل برنامه، حداکثر کارآیی را برای اینگونه سکوهای کاری به ارمغان میآورد.
- امکان مطالعهی کدهای سیشارپ تولیدی معادل یک عبارت باقاعده، برای اولین بار پیش از اجرای برنامه میسر شدهاست.
- کدهای تولیدی معادل، قابلیت دیباگ دارند.
- میتوان با مطالعهی این کدها، نکات جدیدی را فرا گرفت!
چه عبارت باقاعدهای را میتوان به Regex source generators تبدیل کرد؟
برای استفاده از این تولید کنندهی کدهای معادل عبارات باقاعده، باید از NET 7. و C# 11 استفاده کرد. همچنین تمام پارامترهای Regex تعریف شده نیز باید ثابت باشند. برای نمونه در دو مثال زیر، در اولی، pattern ثابت است و در دومی هم pattern و هم سایر تنظیمات ذکر شده؛ بنابراین قابلیت تبدیل به روش استفاده از تولید کنندههای کد را دارند:
if(new Regex("[a-z]+").IsMatch("abc")){} if(Regex.IsMatch(value, "[a-z]+", RegexOptions.CultureInvariant, TimeSpan.FromSeconds(1))){}
public static bool Match(string value, string pattern) { return Regex.IsMatch(value, pattern); }
روش استفاده از Regex source generators
برای تبدیل مثالهایی که عنوان شدند به نمونهی source generator، باید ابتدا یک partial method مزین شدهی به ویژگی [GeneratedRegex] را ایجاد کرد؛ برای نمونه:
public partial class MyRegexes { [GeneratedRegex("^[a-z]+$", RegexOptions.CultureInvariant, 1000)] public static partial Regex LowercaseLettersRegex(); }
public class RegexTests { public static bool IsLowercase(string value) => MyRegexes.LowercaseLettersRegex().IsMatch(value); }
همچنین ابزارهای refactoring خودکاری نیز در IDEهای جدید برای این منظور تعبیه شدهاند تا بتوان به سرعت کدهای قدیمی را به روش source generators تبدیل کرد:
و partial method تولیدی، اینبار به همراه توضیح کامل نحوهی عملکرد عبارت باقاعدهی مورد استفاده نیز هست:
اشتراکها
ویژگیهای جدید NET Core 3.0.
اشتراکها
gRPC در دات نت ۵
اشتراکها