کتاب Apps and Services with .NET 7 (برنامههای کاربردی و سرویسها با دات
نت 7)، اثر مارک پرایس بازگشته است تا شما در جالبترین و رایجترین
فناوری هایی که یک توسعه دهنده دات نت باید بداند راهنمایی کند از جمله
Blazor، .NET MAUI، gRPC، GraphQL، SQL Server، Cosmos DB، OData، OData،
SignalR، Azure Functions.
یکی از مشکلات کار با برنامههای Blazor WASM، نیاز به کار با آدرسهای رشتهای مانند زیر است:
var secretUrl = "api/WeatherForecast/_secretUrl";
var secretUrl = ApiUrls.WeatherForecast.HttpGet.SecretUrl;
به لطف استاندارد مدرن و هنوز فراگیر نشدهی 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
[_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>