And there you have it – an ASP.NET web app built on Windows, running seamlessly on a Mac off of a USB folder. How mind-blowing is that
ASP.NET MVC 5.2.5 منتشر شد
استفاده از WebSocket در دات نت
.NET Core 2.1.6 is available for download and usage in your environment. This release includes .NET Core 2.1.6, ASP.NET Core 2.1.6 and .NET Core SDK 2.1.500. All fixes of note can be seen in the 2.1.6 commits list.
Borrowing در Rust
Borrowing عمل ایجاد ارجاع به یک ارزش، بدون در اختیار گرفتن مالکیت است. در Rust، ارجاعات، مشابه اشارهگرهای معمولی هستند؛ اما با قوانین و محدودیتهایی اضافه شدهاند. ویژگیهای اصلی Borrowing عبارتند از:
- References اشارهگرهایی با قوانین و محدودیتها هستند.
- References مالکیت ارزشها را نمیگیرند.
دلایل Borrowing در Rust
چندین دلیل وجود دارند که چرا Borrowing در Rust سودمند است:
Performance : به کمک Borrowing، با انتقال ارجاع به یک مقدار بجای clone، عملکرد بهبود بخشیده میشود. به عنوان مثال هنگامیکه یک تابع، دارای پارامتری مانند یک رشته است، انتقال مرجع، کارآمدتر از تکرار مقدار است.
Ownership Management : در مواردی که مالکیت، مورد نیاز یا مطلوب نیست، Borrowing یک راه حل ایدهآل است. با عدم مالکیت، یک تابع نباید مسئول تصمیمگیری در مورد زمان پاکسازی یک مقدار باشد.
قوانین Borrowing در Rust
Rust دو قانون اصلی Borrowing را اعمال میکند:
- در هر زمان معین، میتوانید یک مرجع قابل تغییر یا هر تعداد مرجع تغییرناپذیر داشته باشید.
- مراجع باید همیشه معتبر باشند.
این قوانین به حل دو مشکل عمده در برنامه نویسی کمک میکنند:
Data Races : مشکل Data Races زمانی رخ میدهد که دو رشته سعی میکنند مکان حافظهی یکسانی را به طور همزمان بخوانند و یا بنویسند که منجر به نتایج غیر قطعی میشود. قوانین Borrowing در Rust تضمین میکند که از چنین درگیریهایی جلوگیری میشود.
Dangling References : یک dangling reference به حافظهی نامعتبری اشاره میکند. با اطمینان از اینکه مراجع همیشه معتبر هستند، قوانین وام گیری Rust از وقوع ارجاعات آویزان جلوگیری میکند.
ویژگیهای قابل توجه Borrowing
Immutable References by Default : در Rust، یک reference به طور پیش فرض تغییر ناپذیر است. این انتخاب طراحی بر اهمیت Borrowing برای برنامه نویسی ایمن و کارآمد تاکید دارد.
Automatic Dereferencing: در Rust ویژگی عدم ارجاع خودکار وجود دارد؛ به این معنا که توسعه دهندگان مجبور نیستند به صراحت، ارجاع را پیاده سازی کنند. این روند، کار با ارزشهای borrowed را ساده میکند.
Rust یک زبان برنامه نویسی قدرتمند است که ایمنی و عملکرد را از طریق ویژگیهایی مانند Borrowing در اولویت قرار میدهد. با درک مفهوم Borrowing و رعایت قوانین آن، توسعه دهندگان میتوانند از پتانسیل کامل Rust برای ایجاد نرم افزاری کارآمد، قابل اعتماد و همزمان استفاده کنند.
Rust یک زبان برنامه نویسی سیستمی است که برای ارائهی عملکرد و کنترل یک زبان سطح پایین و در عین حال ارائه high-level abstractions و تضمین safety، طراحی شدهاست. این یک زبان منبع باز است که در ابتدا توسط موزیلا توسعه داده شد و اکنون توسط جامعهی بزرگی از توسعه دهندگان نگهداری میشود.
سینتکس Rust شبیه به ++C است. زبان برنامه نویسی Rust با ارائه memory safety, thread safety, and zero-cost abstractions باعث میشود کمتر مستعد خطاهای برنامه نویسی رایج باشد. فلسفهی این زبان، "Fearless Concurrency" است؛ به این معنا که طراحی شدهاست تا توسعه دهندگان را قادر به نوشتن کدهای همزمان، بدون ترس از ایجاد خطاهای مرتبط با حافظه کند.
چرا باید از Rust استفاده کنیم؟
دلیل اصلی محبوبیت Rust در بین توسعه دهندگان، ویژگیهای منحصر به فرد آن است؛ از جمله:
Memory Safety: ایمنی حافظه، ویژگی اصلی Rust است. Rust از سیستم ownership و borrowing برای اطمینان از تخصیص و آزادسازی صحیح حافظه استفاده میکند. سیستم ownership، مالکیت منابع را ردیابی میکند؛ در حالیکه سیستم borrowing دسترسی به منابع را برای جلوگیری از چندین مرجع تغییرپذیر، محدود میکند. این باعث میشود، کد Rust قابل اعتمادتر باشد و کمتر مستعد خطاهای مربوط به حافظه، مانند عدم ارجاع اشارهگر تهی و سرریز بافر باشد.
Thread Safety: مدیریت thread safety را از طریق ownership و borrowing انجام میدهد. سیستم ownership تضمین میکند که فقط یک رشته میتواند در یک زمان، مالک یک منبع باشد و از data races جلوگیری میکند. سیستم borrowing دسترسی به منابع را محدود میکند تا از چندین مرجع قابل تغییر جلوگیری کند که میتوانند باعث data races شوند.
Zero-Cost Abstractions: در بسیاری از زبانهای برنامهنویسی، استفاده از abstractions مانند higher-order functions ، closures یا generics میتواند هزینهی عملکردی داشته باشد. این مورد به این دلیل است که abstractions باید به کد ماشین ترجمه شود تا بتواند بر روی CPU اجرا شود. با این حال، سیستم abstractions بدون هزینهی Rust تضمین میکند که هیچ هزینهی عملکردی با استفاده از این انتزاعها وجود ندارد.
نتیجه گیری
Rust یک زبان برنامه نویسی برای سیستمهای مدرن است که memory safety, thread safety, and zero-cost abstractions را فراهم میکند. ویژگیها و مزایای منحصر به فرد Rust نسبت به سایر زبانهای برنامه نویسی، آن را به گزینهای عالی برای ساخت سیستمهای با کارآیی بالا، ایمن و همزمان تبدیل کردهاست. syntax، پشتیبانی از پلتفرمهای مختلف و جامعهی رو به رشد Rust، آن را به زبانی ایدهآل، برای توسعه دهندگانی که میخواهند نرم افزاری قوی و قابل اعتماد بسازند، تبدیل کردهاست.
NET 5.0 Preview 3. منتشر شد
مقدمهای بر NET MAUI.
An Introduction to .NET MAUI For Mobile Development
.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML.
.NET MAUI is open-source and is the evolution of Xamarin.Forms, extended from mobile to desktop scenarios, with UI controls rebuilt from the ground up for performance and extensibility. If you've previously used Xamarin.Forms to build cross-platform user interfaces, you'll notice many similarities with .NET MAUI. However, there are also some differences. Using .NET MAUI, you can create multi-platform apps using a single project, but you can add platform-specific source code and resources if necessary. One of the key aims of .NET MAUI is to enable you to implement as much of your app logic and UI layout as possible in a single code-base.
0:00 - Setup Visual Studio and MAUI Project
00:16:25 - Create MAUI Pages with C#
00:27:42 - Create MAUI Pages with XAML
00:32:28 - Explore MAUI Layouts
00:39:38 - Static Shared Resources
00:44:36 - Platform Specific Values
00:50:11 - Page Navigation
NET 6 Preview 5. منتشر شد
We’re now in the second-half of the .NET 6 release, and starting to see significant features coming together. A great example is .NET SDK Workloads, which is the foundation of our .NET unification vision and enables supporting more application types.
NET 5.0 Preview 2. منتشر شد
Today, we’re releasing .NET 5.0 Preview 2. It contains a set of smaller features and performance improvements. We’re continuing to work on the bigger features that will define the 5.0 release, some of which are starting to show up as initial designs at dotnet/designs.