معرفی 2 ASP.NET Core 2.0 Preview

چهارشنبه 21 تیر 1396

چندی قبل در کنفرانس Build 2017 نسخه ASP.NET Core 2.0 منتشر شد. بعد از دو ماه با ترکیب کردن بازخودها و امکانات جدید نسخه Preview 2 توسط تیم ASP.NET منتشر شد. حال در این پست میخواهیم امکانات جدید را مورد بررسی قرار بدهیم.

معرفی 2 ASP.NET Core 2.0 Preview

بروزرسانی Visual Studio  و ASP.NET Core 2.0 Preview 2

اگر آخرین نسخه Visual Studio  2017 Preview را برروی سیستم خود ندارید میتوانید از Http://www.visualstudio.com/vs/preview آن را دانلود کنید. همچنین میتوان آن را با استفاده از Visual Studio Installer بروزرسانی کنید. میتوان آن را در منوی برنامه های خود پیدا کنید.

پس از آن قصد داریم اخرین نسخه .NET Core SDK 2.0 را نصب کنیم. این بسته .NET Core CLI  و .Net Core Runtime را بروزرسانی می کند. برای به دست آوردن نسخه جاری .NET Core باید دستور زیر را اجرا کنید:

dotnet –-version

کاربران ویندوز میتوانند با استفاده از CMD  یا Power Shell دستور بالا را اجرا کنند.

کاربران لینوکس میتوانند با استفاده از Terminal خود دستور بالا را اجرا کنند.

اگر نسخه دریافتی “2.0.0-preview2-006497” بود شما آخرین نسخه را نصب کرده اید در غیر این صورت میتوان از اینجا آن را دانلود کنید.

قالب های SPA برای همه

زمانی که شما Visual Studio  خود را بروزرسانی کردید و یک وب سایت از نوع ASP.NET Core ایجاد کردید، قالب های زیر برای شما نمایش داده می شود.

این قالب ها برای React و Angular در دسترس است. همچنین این قالب ها برای کسانی که از .NET Core CLI یا همان خط فرمان استفاده میکنند،در دسترس می باشد. این را هم باید اضافه کنیم که قالب های Angular مختص به نسخه 4 این فریم ورک می باشد.

.NET Framework  و ASP.NET Core

شما میتوانید برنامه های ASP.NET Core را با .NET Framework در قالب های Visual Studio انتخاب کنید.

ارتقا Kestrel

در این نسخه شما گزینه هایی برای محدود کردن پیکربندی Kestrel دارید. این محدودیت ها میتوانند از طریق پراپرتی های محدود کننده که در کلاس جدید KestrelServerOption وجود دارد اعمال شوند شما میتوانید محدودیت های زیر را اعمال کنید:

1)حداکثر Client Connections

2)حداکثر سایز Request Body

3)حداکثر Request Body Data Rate

حداکثر Client Connections

حداکثر تعداد همزمان Connectionها میتوان به شکل زیر تنظیم شود:

.UseKestrel(options =>
{
    options.Limits.MaxConcurrentConnections = 100;
    options.Limits.MaxConcurrentUpgradedConnections = 100;
}

توجه کنید که دو محدودیت وجود دارد. یک بار که Connection از Http به یک پروتکل دیگر ارتقا داده شود(مثال: روی یک درخواست WebSockt)، دیگر بیش از حد مجاز شمارش نمی کند زیرا ارتقا آن محدودیت خود را دارد.

حداکثر سایز Request Body

برای تنظیم محدودیت پیش فرض در کل برنامه:

.UseKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 10 * 1024;
}

کد زیر برروی تمامی درخواست ها تاثیر می گذارد، مگر این که بر روی یک درخواست مشخص شده لغو شود.

app.Run(async context =>
{
 context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 10 * 1024;
}

اگر برنامه هنوز شروع به خواندن آن کرده باشد  شما می توانید محدودیتی روی درخواست اعمال کنید ، در غیر این صورت  یک استثنا throw می شود. یک property به نام IsReadOnly وجود دارد که می گوید اگر Request Body  شما فقط در وضعیت فقط خواندنی باشد، به این معنی است که برای محدود کردن آن دیر شده است.

حداکثر request body data rate

برای تنظیم کردن پیش فرض کم ترین request rate:

.UseKestrel(options =>
{
    options.Limits.RequestBodyMinimumDataRate = 
        new MinimumDataRate(rate: 100, gracePeriod: TimeSpan.FromSeconds(10));
}

برای تنظیم کردن per-request:

app.Run(async context =>
{
    context.Features.Get<IHttpRequestBodyMinimumDataRateFeature>().MinimumDataRate = 
        new MinimumDataRate(rate: 100, gracePeriod: TimeSpan.FromSeconds(10));
}

نحوه کار کردن آن به شرح زیر است:

Kestrel هر ثانیه بررسی می کند که اگر داده ای در rate(bytes/second)  مشخص شده، در حال آماده است اگر rate کاهش یابد، زمان اتصال به پایان رسیده است. در این بازه زمانی میزان زمانی که Client برای ارسال آن دریافت می کند به حداقل می رسد بنابراین rate در آن زمان بررسی نمی شود. این کار برای جلوگیری از قطع شدن Connection ها می باشد که ابتدا داده ها را به عنوان یک rate آهسته به TCP ارسال می کنند.

پشتیبانی Razor از سی شارپ 7.1

موتور Razor برای کار با کامپایلر جدید Roslyn بروزرسانی شده است و این بروز رسانی شامل پشتیبانی از امکانات جدید C# 7.1 می باشد. امکانات جدید شامل “Default Expression”,”Inferred Tuple Names” و “Pattern-Matching With Generics” . برای استفاده از C# 7.1 در پروژه خود کد زیر را در فایل csproj وارد کنید:

<LangVersion>latest</LangVersion>

C# 7.1 در وضعیت Preview می باشد و شما میتوانید برای مرور امکانات به اینجا مراجعه کنید.

پشنتیبانی از Http Hander پیشرفته برای Range, ETag و آخرین بروزرسانی ها

زمانی که از MVC برای ارسال FileStreamResult یا FileContentResult استفاده میکنید ، شما این امکان را دارید که ETag و آخرین زمان ویرایش را روی محتوای ارسال شده تنظیم کنید. شما میتوانید با کد های زیر این مقدار ها را روی محتوای بازگردانده شده تنظیم کنید:

var data = Encoding.UTF8.GetBytes("This is a sample text from a binary array");
var entityTag = new EntityTagHeaderValue("\"MyCalculatedEtagValue\"");
return File(data, "text/plain", "downloadName.txt", lastModified: DateTime.UtcNow.AddSeconds(-5), entityTag: entityTag);

فایل بازگردانی شده برای بازدید کننده شامل مقدار های آخرین ویرایش و ETag می باشد.

اگر محتوای درخواست بازدید کننده برنامه با یک Rang Request Header باشد، ASP.NET آن را تشخیص می دهد و آن را مدیریت می کند. اگر محتوای درخواست به طور جزئی تحویل داده شود ASP.NET به درستی آن را تنظیم و بازمیگرداند. برای استفاده از این امکانات نیازی نیست آن را جایی تنظیم کنید ASP.NET  به طور خودکار آن ها را مدیریت می کند.

PageFilter های جدید برای صفحات Razor

فیلتر های صفحه (IPageFilter,IAsyncPageFilter) به شما اجازه می دهد قبل یا بعد از اجرای صفحه، کدهایی را اجرا کنید.

مانند action فیلتر ها که به شما اجازه می دادند قبل یا بعد از اجرا شدن action، کد های دیگری را اجرا کنید.  همچنین PageFilterها میتوانند به صفحه های اجرا شده یا کد های مقداردهی شده قبل از اتصال مدل تاثیر بگذارند. در 2 Preview شما میتوانید page Filter ها را به صورتی Globally یا در قرارداد مدل برنامه اضافه کنید. در Preview 2 شما نمی توانید از attributeها استفاده کنید.

پشتیبانی از Azure App Service

ASP.NET Core Preview 2 میتواند بدون هیچ تغییری برروی سرویس های Azure قرار گیرد.

امکانات به تعویق افتاده:

برخی از امکانات در نسخه Preview 1 حذف شدند تا زمان بیشتری برای توسعه ASP.NET Core 2.0 داشته باشند. تیم ASP.NET قصد دارد این امکانت را در نسخه بعدی اضافه کنند این امکانات شامل :

-.NET Core Identity به عنوان یک سرویس، شامل پشتیبانی از مسائل احراز هویت و access token ها با استفاده از OpenId و OAuth 2.0

- طرح پیکربندی پیش فرض برای پیکربندی کردن HTTPS ، گواهینامه ها و احراز هویت

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید