وضعیت WebAssembly در 2021 و 2022
2021 was no exception and the following are some of the new areas where you’ll now find WebAssembly
-
- The Disney+ Application Development Kit is using WebAssembly: https://medium.com/disney-streaming/introducing-the-disney-application-development-kit-adk-ad85ca139073
- A simplified version of Photoshop on the web was released: https://www.theverge.com/2021/10/26/22738125/adobe-photoshop-illustrator-web-announced
- Microsoft’s Flight Simulator has a WebAssembly-based plugin system: https://docs.flightsimulator.com/html/Programming_Tools/WASM/WebAssembly.htm
Professional REST API design with ASP.NET Core and WebAPI
This project is an example of lightweight and extensible infrastructure for building RESTful Web API with ASP.NET Core.
This example contains a number of tricks and techniques which I've learned while building APIs in ASP.NET Core.
Techniques and Features
- JWT Authentication
- Secure JWT using Encryption (JWE)
- Logging to File, Console and Database using Elmah & NLog
- Logging to sentry.io (Log Management System)
- Exception Handling using Custom Middleware
- Automatic Validation
- Standard API Resulting
- Dependency Injection using Autofac
- Map resources using AutoMapper
- Async/Await Best Practices
- Versioning Management
- Using Swagger (Swashbuckle)
- Auto Document Generator for Swagger
- Integrate Swagger and Versioning
- Integrate Swagger and JWT/OAuth Authentication
- Best Practices for Performance and Security
روش به کارگیری تقویم در Blazor
<link href="css/js-persian-cal.css" rel="stylesheet"/>
<script src="js/js-persian-cal.min.js"></script>
<input type="text" id="pcal1" />
protected override async Task OnAfterRenderAsync(bool firstRender) { int dateFieldCount = 1; if (firstRender) { for (int i = 1; i <= dateFieldCount; i++) { await JsRuntime.InvokeVoidAsync("CallAmib", "pcal" + i.ToString()); } } }
@inject IJSRuntime JsRuntime
window.CallAmib = (objCal1) => { new AMIB.persianCalendar(objCal1); }
@using Microsoft.AspNetCore.Components.Web @namespace ShamsiDatePickerBlazor.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <base href="~/" /> <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /> <link href="css/site.css" rel="stylesheet" /> <link href="css/js-persian-cal.css" rel="stylesheet" /> <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" /> </head> <body> @RenderBody() <div id="blazor-error-ui"> <environment include="Staging,Production"> An error has occurred. This application may no longer respond until reloaded. </environment> <environment include="Development"> An unhandled exception has occurred. See browser dev tools for details. </environment> <a href="">Reload</a> <a>🗙</a> </div> <script src="js/js-persian-cal.min.js"></script> <script src="js/CallAmib.js"></script> <script src="_framework/blazor.server.js"></script> </body> </html>
مشکل!!
window.CallCall = (objCal1) => { new AMIB.persianCalendar(objCal1,{ onchange: function(pdate) { DotNet.invokeMethodAsync('ShamsiDatePickerBlazor', 'DateChanged', pdate.toString()).then( (date) => { console.log(data); } ); } }); }
static string selectedDate; [JSInvokable] public static void DateChanged(string pdate) { selectedDate = pdate; }
.NET Core placed high in a web-dominated ranking of development frameworks published by CodinGame, which provides a tech hiring platform.
Frameworks: React is 2021’s most sought-after framework
Node.js, React and .NETCore are currently the most popular frameworks amongst developers.
React is the most sought-after framework: 59% of tech recruiters are on the lookout for developers who know React.
It’s a library. And therefore you can attach any javascript library of your choice as add-ons
State Management is more flexible
JSX syntax blends well together with javascript
Faster learning curve
Modern Web Development is challenging and the way we develop web apps are now different than before
You can reuse components effortlessly because they’re all just pure functions