في الآونة الأخيرة ، قمنا بترقية ASP.NET Core إلى الإصدار 2.1. أحد زملائنا في المنصة ، زميلنا ديفيد فاولر ، شارك بعض ميزاته المفيدة التي لا يعرفها سوى عدد قليل من الناس. بالإضافة إلى ذلك ، بالإضافة إلى الميزات السرية التسعة لـ ASP.NET Core ، ستجد تحت قائمة التخفيضات قائمة بالابتكارات الرئيسية مع جميع الروابط المفيدة. انضم الآن!

تم إصدار الإصدار 2.1 من النظام الأساسي المفتوح لـ ASP.NET ، وقام المطور Fowler
بتغريد بعض ميزاته المفيدة التي لا يعرفها سوى عدد قليل من الأشخاص. بالطبع ، أصبح النظام الأساسي الآن أسرع ، ولكن هناك أيضًا عدد من الميزات الجديدة وأفضل الممارسات التي تستحق الدراسة بمزيد من التفصيل.
يعمل ASP.NET Core الآن مع نموذج الاستضافة الجديد. تشكل تطبيقات .NET
وبدء المضيف .
المضيف مسؤول عن تشغيل التطبيقات وإدارة دورة حياتها. الهدف من المضيف العام هو فصل توجيه HTTP عن واجهة برمجة تطبيقات مضيف الويب حتى تتمكن من إنشاء المزيد من البرامج النصية على المضيف. تعمل الرسائل والخلفية والمهام الأخرى بخلاف HTTP بشكل أفضل مع ميزات المضيف العام من طرف إلى طرف مثل التكوين وحقن التبعية (DI) والتسجيل.
هذا يعني أنه الآن بالنسبة للبرامج النصية بدون استضافة الويب ، لا يوجد فقط WebHost ، ولكن أيضًا المضيف العام. في الوقت نفسه ، سيكون العمل مناسبًا مثل ASP.NET Core ، ولكن سيكون لديك أيضًا ميزات جديدة ، مثل DI ، وتسجيل الدخول والتكوين.
يمكن العثور على نموذج كود للمضيف العام
على GitHub .
باستخدامه ، يمكنك تشغيل عمليات خلفية طويلة في كل من المضيف العالمي وفي تطبيقات الويب الخاصة بك. قدم ASP.NET Core 2.1
دعمًا لفئة BackgroundService الأساسية ، مما يسهل إلى حد كبير إنشاء حلقة طويلة غير متزامنة. نموذج التعليمات البرمجية للخدمة المستضافة موجود أيضًا
على GitHub .
إنشاء مهمة خلفية مؤقتة بسيطة:
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; }
سهل!
يمكنك الآن استضافة ASP.NET Core داخل خدمة Windows! لقد طلب العديد من المستخدمين إضافة هذه الميزة. لم تعد بحاجة إلى IIS لاستضافة ما تريد. ألق نظرة على
Microsoft.AspNetCore.Hosting.WindowsServices على NuGet
والوثائق التفصيلية حول استضافة تطبيق ASP.NET Core الخاص بك على Windows كخدمة Windows بدون IIS.
public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); }
كما هو الحال دائمًا ، تنفيذ بسيط ودقيق باستخدام مصدر على GitHub.
[assembly: HostingStartup(typeof(SampleStartups.StartupInjection))]
سيكون من المثير للاهتمام بالنسبة لك ، تأكد من الانتباه لهم. يمكنك إنشاء حزم تستخدم كأدوات مساعدة لشفرة المصدر الموزعة من خلال مصدر مشترك. بين بعضنا البعض ، نسميها "حزم المصدر المشتركة". يتم
استخدامها في ASP.NET Core في كل مكان ، عندما تحتاج إلى مشاركة شيء ما ، ولكن لا يمكن الوصول إليه بشكل عام من خلال واجهة برمجة التطبيقات. ثم سيتم استخدام الرمز الخاص بك ، ولكن لن يكون هناك تبعيات على الحزمة النهائية.
يتم استخدامها في CSPROJ
بهذه الطريقة . انتبه إلى سمة
PrivateAssets :
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" />
إذا كنت بحاجة إلى استخدام طريقة في نوع من خلال الانعكاس ، ويمكن أن تكون هذه الطريقة غير متزامنة ، فإن وظيفة
ObjectMethodExecutor المحسنة والمرنة ، والتي نستخدمها في كل مكان في قاعدة كود ASP.NET Core ، ستساعدك.
يستخدم الفريق هذا الرمز في MVC لاستدعاء طرق التحكم الخاصة بك. يستخدمون هذا الرمز في SignalR لاستدعاء طرق المحور. يعمل مع الأساليب المتزامنة وغير المتزامنة. يمكن أن تعمل أيضًا مع الكائنات المتوقعة المخصصة ومهام سير العمل غير المتزامنة.
طريقة صغيرة مطلوبة بشكل متكرر. إذا كنت لا تحب ما يتم عرضه بعد بدء تشغيل برنامج تشغيل dotnet عند استضافة تطبيق الويب (طباعة معلومات الربط) ، فيمكنك استخدام طريقة ملحق SuppressStatusMessages الجديدة.
WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>();
في الإصدار 2.1 ، أصبح من السهل تكوين المعلمات التي تتطلب خدمات لها. في السابق ، كان عليك إنشاء نوع تم الحصول عليه باستخدام IConfigureOptions ، والآن يمكنك القيام بكل ذلك في ConfigureServices باستخدام AddOptions ‹TOptions›
public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); }
عادة لا توجد حاجة لتكوين IHttpContext ، لكن الكثيرين يريدون معرفة
كيفية القيام بذلك ، ويعتقد البعض أنه يجب القيام بذلك تلقائيًا. لا يتم تسجيله بشكل افتراضي ، لأن وجوده يؤدي إلى انخفاض في الأداء. ومع ذلك ، في ASP.NET Core 2.1
، تمت إضافة العلاقات العامة لطريقة التمديد ، والتي
ستسهل العملية إذا كنت ترغب في ذلك.
services.AddHttpContextAccessor ();
لذا ، فإن ASP.NET Core 2.1
جاهز للإصدار .
الميزات الجديدة في هذا الإصدار:
تحقق من
قائمة التغييرات في ASP.NET Core 2.1 في مستندات ASP.NET Core لمعرفة المزيد حول هذه الميزات. يتم توفير قائمة كاملة بجميع التغييرات في الإصدار الجديد في
ملاحظات الإصدار .
جربها! خذ
دورة QuickStart ويمكنك إنشاء تطبيقات ويب أساسية في 10 دقائق.