ASP.NET Core و دانت ۷، ریلیز نهایی
What’s new?
Here’s a sampling of the great new features and improvements in ASP.NET Core for .NET 7:
- Servers and runtime
- Rating limiting: Limit the rate of handled requests using flexible endpoint configuration and policies.
- Output caching: Configure output caching to reduce to more efficiently handle request.
- Request decompression: Accept requests with compressed content.
- HTTP/3: Built-in support for HTTP/3, the latest HTTP version based on the new QUIC multiplexed transport protocol.
- WebSockets over HTTP/2: Use WebSockets over HTTP/2 connections.
- WebTransport (experimental): Create streams and data grams over HTTP/3 with experimental support for WebTransport.
- Minimal APIs
- Endpoint filters: Use endpoint filters to run cross-cutting code before or after a route handler.
- Typed results: Return strongly typed results from minimal APIs.
- Route groups: Organize groups of endpoints with a common prefix
- gRPC
- JSON transcoding: Expand the reach of your gRPC services by also exposing them as JSON-based APIs
- OpenAPI with JSON transcoding (experimenal): Use experimental support for generating OpenAPI specs for your gRPC JSON transcoded services.
- gRPC health checks: Report and check the health of gRPC server apps.
- gRPC client
AddCallCredentials
: Create clients that send authorized requests using bearer tokens.
- SignalR
- Client results: Return client results to the server in response to requests from the server.
- MVC
- Nullable view and page models: Nullable page and view models are now supported to improve the experience when using null state checking.
- Blazor
- Custom elements: Build standard HTML custom elements with Blazor to integrate Blazor components with any JavaScript-based app.
- Handle location changing events: Intercept location changing events to create custom user experiences when navigating.
- Bind after/get/set modifiers: Run async logic after data binding and independently control how data binding gets and sets the data.
- Dynamic authentication requests: Create dynamic authentication requests at runtime with custom parameters to handle advanced authentication scenarios in Blazor WebAssembly apps.
- Improved JavaScript interop on WebAssembly: Optimize JavaScript interop call when running on WebAssembly using the new
[JSImport]
/[JSExport]
support. - WebAssembly SIMD & exception handling: Improve performance with .NET WebAssembly ahead-of-time (AOT) compilation using WebAssembly SIMD and exception handling support.
- :: ایران آخرین کشور جهان در رتبهبندی سرعت دانلود اینترنت | www.donya-e-eqtesad.com
- ۱۰ نکته کاربردی در طراحی وب سایت | www.webtarget.ir
- آموزش کتابخانه Microsoft Enterprise Library 5.0 - قسمت ششم | www.30sharp.com
- انتشار نگارش جدید ویراستیار (۱٫۳٫۱) و بهروزرسانی ویراستلایو | www.virastyar.ir
- اوراکل افزونههای تجاری را وارد MySQL میکند | azadrah.net
- پروژه هلال احمر SQL | pspcommunity.org
- ریسکهای freelance شدن | blog.afsharm.com
- گشت و گذار در Windows 8 | هر آنچه که ممکن است بخواهید بدانید | www.farsigeek.com
- ویندوز 8، ویندوز توسعه مایکروسافت! ارائه پیش نمایش ویژوال استودیو 2011 و دات نت فریم ورک 4.5 | www.persiadevelopers.com
- A Look At Robotics Developer Studio 4 Beta | channel9.msdn.com
- British Schoolkids To Be Taught Computer Coding | rss.slashdot.org
- Deploying a Site With Git Hooks | wekeroad.com
- Download all the Build Videos with RSS | geekswithblogs.net
- Improvements in the CLR Core in .NET Framework 4.5 | blogs.microsoft.co.il
- Internet Explorer 9 and 10 now fully pass Acid3 test thanks to criteria changes | www.winrumors.com
- My thoughts about Build, Windows 8, WinRT, XAML and Silverlight | geekswithblogs.net
- SourceMonitor V3.1.5.190 released | geekswithblogs.net
- SQL 11 (Code Name: “Denali”) – Debugging enhancements – Setting, Labeling, Using & Searching Conditional Breakpoints | beyondrelational.com
- Visual Studio 11 Developer Preview | dotnetslackers.com
- What’s new in WCF 4.5? a single WSDL file | blogs.microsoft.co.il
Go, also referred to as Golang is a program created by Google. It was designed by Ken Thompson, Rob Pike, and Robert Griesmer. Golang is one of the most rapidly growing languages in terms of popularity. Ken Thompson, Rob Pike, and Robert Griesmer created Go Language to be a language that has numerous cores, implements concurrency easily, works smoothly in a distributed environment and allows the programmer to write programs without too much hustle. Go language also has a lean and user-friendly syntax.
Static Memory
حافظهی static برای ذخیرهی باینریهای برنامه، متغیرهای استاتیک و حروف رشتهای (در Rust) استفاده میشود. اندازهی حافظه استاتیک ثابت است و در زمان کامپایل مشخص میشود. حافظهی استاتیک طول عمری برابر با عمر برنامه دارد و مقادیر آن از شروع، تا پایان برنامه، باقی میماند. پاکسازی حافظهی استاتیک به صورت خودکار انجام میشود و با پایان برنامه انجام میشود.
مواردی که در حافظه استاتیک قرار میگیرند :
- Program Binary
- Static variables
- String Literals (in Rust)
Size :
Fixed ( محاسبه در زمان کامپایل )
Lifetime : برابر با طول عمر برنامه
پاکسازی : به صورت خودکار ؛ زمانی که برنامه متوقف میشود .
حافظهی پشته، مسئول نگهداری آرگومانهای تابع و متغیرهای محلی است. پشته، شامل stack frames است که برای هر فراخوانی تابع در زنجیرهای از فراخوانیهای تابع، ایجاد میشوند (به عنوان مثال، A B را فرا میخواند، B C را فرا میخواند). حافظهی پشته به اندازهی مشخصی در زمان کامپایل نیاز دارد؛ به این معنا که آرگومانها و متغیرهای درون stack frames باید اندازههای از پیش تعیین شدهای داشته باشند. اندازهی پشته، پویا است؛ اما دارای حد بالایی ثابتی است که در هنگام راه اندازی برنامه تعریف شدهاست. حافظهی پشته، دارای طول عمری برابر با طول عمر عملکرد است و هنگامیکه عملکرد، نتیجهای را بر میگرداند، پاکسازی آن خودکار است.
بیایید نگاهی به یک مثال ساده در Rust بیندازیم تا حافظهی پشته را بهتر درک کنیم:
fn add(x: i32, y: i32) -> i32 { let sum = x + y; sum } fn main() { let a = 5; let b = 3; let result = add(a, b); println!("The sum is: {}", result); }
هنگامیکه تابع add فراخوانی میشود، یک stack frames دیگر در بالای stack frames main موجود ایجاد میشود. این stack frames جدید حاوی متغیرهای محلی x، y و sum است. مقادیر a و b به عنوان آرگومان به تابع add ارسال میشوند و به ترتیب در x و y ذخیره میشوند. پس از محاسبهی مجموع، تابع add، مقداری را بر میگرداند و stack frames آن به طور خودکار از حافظهی پشته حذف میشود.
سپس تابع main، مقدار برگشتی را از تابع add دریافت میکند و به نتیجهی متغیر اختصاص مییابد. از ماکروی println! برای چاپ نتیجه استفاده میشود. پس از اتمام اجرای برنامه و بازگشت تابع اصلی، stack frames آن نیز از حافظهی پشته حذف میشود و حافظه بهطور خودکار پاک میشود.
در این مثال، میتوانید ببینید که چگونه از stack frames برای ذخیرهی آرگومانهای تابع و متغیرهای محلی در Rust استفاده میشود. اندازهی این متغیرها در زمان کامپایل مشخص میشود و طول عمر حافظهی پشته، برابر با طول عمر تابع است. هنگامیکه تابع برمیگردد، فرآیند پاکسازی آن خودکار است و قاب پشتهی مربوطه را حذف میکند.
Heap Memory
حافظهی Heap، مقادیری را ذخیره میکند که باید فراتر از طول عمر یک تابع مانند مقادیر بزرگ و مقادیر قابل دسترسی توسط رشتههای متعدد، زنده بمانند. از آنجائیکه هر رشته دارای پشتهی مخصوص به خود است، همهی آنها یک پشتهی مشترک دارند. حافظهی Heap میتواند مقادیری با اندازهی ناشناخته را در زمان کامپایل، در خود جای دهد؛ مانند رشتههای ورودی کاربر. اندازهی پشته نیز پویا است؛ با حد بالایی ثابت که در زمان راه اندازی برنامه تعیین میشود. حافظهی Heap طول عمری دارد که توسط برنامه نویس تعیین میشود و برنامه نویس تصمیم میگیرد که چه زمانی باید حافظه تخصیص داده شود. پاکسازی حافظهی هیپ به صورت دستی است و نیاز به مداخلهی برنامه نویس دارد.
در این مثال ساده، روش استفاده از حافظهی پشته نشان داده میشود:
use std::rc::Rc; #[derive(Debug)] struct LargeData { data: Vec<i32>, } impl LargeData { fn new(size: usize) -> LargeData { LargeData { data: vec![0; size], } } } fn main() { let large_data = Rc::new(LargeData::new(1_000_000)); let shared_data1 = Rc::clone(&large_data); let shared_data2 = Rc::clone(&large_data); println!("{:?}", shared_data1); println!("{:?}", shared_data2); }
سپس دو متغیر دیگر را به نامهای shared_data1 و shared_data2 ایجاد میکنیم که با استفاده از Rc::clone، یک شیء LargeData تخصیصیافتهی مشابه را به اشتراک میگذارند. این نشان میدهد که چگونه حافظهی پشته را میتوان در بین متغیرهای متعددی به اشتراک گذاشت؛ حتی فراتر از طول عمر تابع اصلی که داده را ایجاد کرده است.
در این مثال، پاکسازی حافظهی پشته به طور خودکار توسط مکانیزم شمارش مرجع Rust مدیریت میشود (در ادامهی دوره توضیح داده خواهد شد). هنگامیکه تعداد مرجع نشانگر Rc به صفر میرسد (یعنی وقتی همهی متغیرهایی که دادهها را به اشتراک میگذارند از محدوده خارج میشوند)، حافظهی تخصیص داده شده، روی پشته تخصیص داده میشود.
این مثال نشان میدهد که چگونه میتوان از حافظهی پشته برای ذخیرهی ساختارهای داده یا مقادیر بزرگی استفاده کرد که باید بیشتر از طول عمر یک تابع باشند و چگونه میتوان حافظهی پشته را بین چندین متغیر به اشتراک گذاشت.
Security Advisory Notice for 16.6.2
CVE-2020-1108 / CVE-2020-1108.NET Core Denial of Service Vulnerability
To comprehensively address CVE-2020-1108, Microsoft has released updates for .NET Core 2.1 and .NET Core 3.1. Customers who use any of these versions of .NET Core should install the latest version of .NET Core. See the Release Notes for the latest version numbers and instructions for updating .NET Core.
CVE-2020-1202 / CVE-2020-1203 Diagnostics Hub Standard Collector Service Elevation of Privilege Vulnerability
An elevation of privilege vulnerability exists when the Diagnostics Hub Standard Collector or the Visual Studio Standard Collector fails to properly handle objects in memory.
CVE-2020-1293 / CVE-2020-1278 / CVE-2020-1257 Diagnostics Hub Standard Collector Service Elevation of Privilege Vulnerability
An elevation of privilege vulnerability exists when the Diagnostics Hub Standard Collector Service improperly handles file operations
Top Issues Fixed in Visual Studio 2019 version 16.6.2
- Visual Studio 2019 16.60 hang at run or build when modified not saved in C++/CLI project
- An unhandled exception of type 'System.NullReferenceException' occurred in Microsoft.VisualStudio.DesignTools.WpfTap.dll
- Recurring null reference when reopening documents
- "Create new project" dialog search does not find templates for third-party language providers
- IntelliSense shows that "tilde-slash" (~/) points to ASP .NET Core 3.1 project root instread of wwwroot subfolder after upgrading Visual Studio Enterprise 16.5.6->16.6.0
- Fixed a compiler error (error C2475: redefinition; 'constexpr' specifier mismatch) affecting std::atomic when compiled as C++/CX in C++17 mode.
- URL completion values and format was fixed in Razor views. App-relative URL format is now used again and the values in the URL completion list show files and folders rooted under app root, i.e. wwwroot.
- Fixed a crash when using snippets.
- Restore item templates that could be hidden by extensions.