اشتراک‌ها
کتاب Apps and Services with .NET 7

کتاب Apps and Services with .NET 7 (برنامه‌های کاربردی و سرویس‌ها با دات نت 7)، اثر مارک پرایس بازگشته است تا شما در جالب‌ترین و رایج‌ترین فناوری هایی که یک توسعه دهنده دات نت باید بداند راهنمایی کند از جمله Blazor، .NET MAUI، gRPC، GraphQL، SQL Server، Cosmos DB، OData، OData، SignalR، Azure Functions. 

کتاب Apps and Services with .NET 7
اشتراک‌ها
تولید URLهای strongly typed در برنامه‌های Blazor WASM

یکی از مشکلات کار با برنامه‌های Blazor WASM، نیاز به کار با آدرس‌های رشته‌ای مانند زیر است:

var secretUrl = "api/WeatherForecast/_secretUrl";
کتابخانه‌ی فوق، این مشکل را برطرف کرده و به صورت خودکار بر اساس Action Methods موجود، نمونه‌ی strongly typed آن‌ها را تولید می‌کند:
var secretUrl = ApiUrls.WeatherForecast.HttpGet.SecretUrl;
تولید URLهای strongly typed در برنامه‌های Blazor WASM
اشتراک‌ها
تحقق یک رویا: پشتیبانی توکار از دات نت در همه مرورگرهای مدرن

به لطف استاندارد مدرن و هنوز فراگیر نشده‌ی WebAssembly ، امروزه همه‌ی مرورگر‌های مدرن می‌توانند بجای اجرای جاوا اسکریپت، یک زبان bytecode استانداردِ سطح پایین و شبیه به زبان اسمبلی را اجرا کنند. استفاده از WebAssembly می‌تواند موجب اجرای سریع‌تر کد و کاهش حجم آن شود. اما مهمترین مزیت این هست که امروز می‌توانیم همه‌ی زبان‌های قدرتمند، نظیر سی شارپ را به نحوی کامپایل کنیم که خروجیِ نهایی، منطبق با استاندارد webassembly باشد و به صورت native در مرورگرها، دات نت را اجرا کنیم.

کامپایل سی شارپ به WebAssembly توسط تیم Mono مایکروسافت انجام شده و عمده مشکلات فنی سر راه برداشته شده‌اند. اما برای اینکه عملا بشود از دات نت در مرورگر‌ها استفاده کرد، مایکروسافت در پی پیاده سازی پروژه‌ی جاه طلبانه‌ای به نام Blazor می‌باشد. در واقع Blazor فریم ورک Client-Side مبتنی بر دات نت خواهد بود؛ الهام گرفته از فریم ورک‌های کنونی (مانند Angular و React) و رقیبی جدید برای آن‌ها. فریم ورک Blazor هم مانند آن‌ها حول مفهوم Component شکل گرفته‌است. کامپوننت‌هایی که کلاس‌های سی شارپی هستند و با زبان Razor توسعه داده شده‌اند. 

استفاده از دات نت در مرورگر‌ها می‌تواند موجب این شود که کد بیشتری را بین سرور و کلاینت بتوانیم به اشتراک بگذاریم و نیاز به دوباره کاری در هر دو سمت را نداشته باشیم. علاوه بر این توسعه دهندگان سی شارپ کمی بیشتر به مفهوم Full Stack Developer نزدیک خواهند شد.

همچنین با استفاده از WebAssembly می‌توانیم به تمام کتابخانه‌های موجود جاوااسکریپتی هم دسترسی داشته باشیم و محدودیتی در این زمینه وجود ندارد. همچنین می‌توان DOM را هم از این طریق مدیریت و دستکاری کرد.

در حال حاضر تیم AspNet عهده دار کار بر روی پروژه‌ی Blazor  شده‌است. از نوشته‌های آن‌ها چنین بر می‌آید که تا نهایی شدن این پروژه هنوز باید صبر کنیم.  

تحقق یک رویا: پشتیبانی توکار از دات نت در همه مرورگرهای مدرن
نظرات مطالب
دستیابی به HttpContext در Blazor Server
اگر می‌خواهید اطلاعاتی نظیر کاربر را دریافت کنید آنگاه می‌توانید AuthenticationStateProvider را در DbContext تزریق کنید. یک نمونه پیاده سازی در  SO.
اما دسترسی به HttpContext در هیچ کجای برنامه Blazor Server غیر از Host.cshtmlـ مقدار تضمین شده درستی را در بر نخواهد داشت. همچنین می‌توانید با اضافه کردن خط زیر در استارت آپ برنامه، با تزریق وابستگی، به HttpContext، در سرویس‌ها به آن دسترسی داشته باشید. ()Services.AddHttpContextAccessor
نظرات مطالب
Blazor 5x - قسمت چهارم - مبانی Blazor - بخش 1 - Data Binding
- کامپوننت InputText نیازی به رخداد ذکر شده ندارد؛ چون خاصیت Value آن دوطرفه است و همچنین Value آن با V بزرگ است و نه کوچک و بهتر است این موارد کوچک و بزرگ را با هم ترکیب نکنید. پشت صحنه‌ی روش طراحی آن‌را کمی بالاتر توضیح دادم: «یک نکته‌ی تکمیلی: روش تعریف data binding دو طرفه در کامپوننت‌ها»
نظرات مطالب
Blazor 5x - قسمت 34 - توزیع برنامه‌های Blazor بر روی IIS
یک نکته‌ی تکمیلی: چگونه برنامه‌های blazor server را پس از برقراری ارتباط قطع شده، به صورت خودکار راه‌اندازی مجدد کنیم؟
[_Host.cshtml]

<script src="_framework/blazor.server.js"></script>
<script>
window.Blazor.defaultReconnectionHandler.onConnectionDown = function () {
     setTimeout(function () {
             location.reload();
     }, 7000);
}

window.Blazor.defaultReconnectionHandler._reconnectCallback = function (d) {
    document.location.reload();
}
</script>