<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blazor &#8211; achraf ben alaya</title>
	<atom:link href="https://achrafbenalaya.com/category/blog/blazor/feed/" rel="self" type="application/rss+xml" />
	<link>https://achrafbenalaya.com</link>
	<description>Tech Blog By Achraf Ben Alaya</description>
	<lastBuildDate>Sun, 10 Jan 2021 13:44:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>

<image>
	<url>/wp-content/uploads/2022/02/cropped-me-scaled-1-32x32.jpeg</url>
	<title>blazor &#8211; achraf ben alaya</title>
	<link>https://achrafbenalaya.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">189072172</site>	<item>
		<title>The Differences Between Blazor Server And Blazor  WebAssembly</title>
		<link>https://achrafbenalaya.com/2021/01/10/the-differences-between-blazor-server-and-blazor-webassembly/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-differences-between-blazor-server-and-blazor-webassembly</link>
					<comments>https://achrafbenalaya.com/2021/01/10/the-differences-between-blazor-server-and-blazor-webassembly/#respond</comments>
		
		<dc:creator><![CDATA[achraf]]></dc:creator>
		<pubDate>Sun, 10 Jan 2021 13:42:29 +0000</pubDate>
				<category><![CDATA[blazor]]></category>
		<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/?p=965</guid>

					<description><![CDATA[If you didn’t hear about it yet ,Blazor is a revolutionary client-end User Interface framework developed by Microsoft’s mighty ASP.NET Expert team. Since its launch, it has become a big talking point among the tech organizations and Developer community. Blazor offers an amazing ability to code enriched web User Interfaces/User Experiences by using CSS, C#, and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If you didn’t hear about it yet ,Blazor is a revolutionary client-end User Interface framework developed by Microsoft’s mighty ASP.NET Expert team. Since its launch, it has become a big talking point among the tech organizations and Developer community. Blazor offers an amazing ability to code enriched web User Interfaces/User Experiences by using CSS, C#, and HTML instead of using JavaScript, a proposition most of the Developers have been dreaming of for long .</p>
<h1><strong>What is Blazor?</strong></h1>
<p>Blazor is an open-source and freely available framework, which allows developers to develop highly interactive web applications by using C# programming language. It allows a single programming language C#, HTML or Razor to write both the Client-side and Server-side code. Blazor achieves this by using .NET runtime which is compiled into WebAssembly bytecode. The .NET runtime functions into the browser and can allow any .NET DLL to execute, including the code we have written in C# programming language.</p>
<p>Blazor is composed of two hosting Models and we are going to see them one by one</p>
<p><strong>1-Blazor server side</strong></p>
<p><strong>2-Blazor WebAssembly</strong></p>
<ul>
<li>
<h1>Blazor server side</h1>
</li>
</ul>
<p>With the Blazor Server hosting model, the app is executed on the server from within an ASP.NET Core app. UI updates, event handling, and JavaScript calls are handled over a SignalR connection.</p>
<p>A Blazor application can easily run on an ASP.NET core backend and could be accessed easily by a browser. The ASP.NET Core applications can either be running on IIS or could be hosted as self-contained applications. Blazor application or website could be accessed by any browser at client-side. Blazor Server utilizes a JavaScript file to function and use CSS and HTML to render its user interface (UI). Here it is important to note that Blazor Server does not use WebAssembly.</p>
<ul>
<li>
<h1> Blazor WebAssembly</h1>
</li>
</ul>
<p>The second Blazor hosting model is running client-side in the browser on WebAssembly. The Blazor app, its dependencies, and the .NET runtime are downloaded to the browser. The app is executed directly on the browser UI thread. UI updates and event handling occur within the same process. The app&#8217;s assets are deployed as static files to a web server or service capable of serving static content to clients.</p>
<p>Blazor WebAssembly is supported by all the renowned modern web browsers available in the market for both mobile and desktop. Its execution is quite like JavaScript, where it allows the WebAssembly applications to execute securely on the end-users device, that too within the browser’s security sandbox. It offers an ability to the applications so that they could be deployed as a true standalone static site, without any .NET server component. The applications can be amalgamated with ASP.NET Core, which ensures a full stack web development with the help of .NET ecosystem, that is where the application code can be effortlessly shared with the server and the client.</p>
<p>&nbsp;</p>
<ul>
<li>
<h1>Difference : (what should I use ?)</h1>
</li>
</ul>
<p>If you are going to develop a standard application that will be used even with a very bad internet connection than the WebAssembly is the ideal one because it can run without server connection,</p>
<p>More than that ,the  WebAssembly application offer offline mode ,the application can continue to run even without internet connection while the server application become useless in this case.</p>
<p>The Web assembly application will be download by the end user and will run on the browser ,so here we don’t need to scale anything ,while on the server side , Microsoft says that a server with a single CPU and 3.5 Ram can handle 5K concurrent connections .</p>
<ul>
<li>
<h1>In Summary</h1>
</li>
</ul>
<p>Keep it simple and build something small, with a couple of screens, just to see how each of the hosting models work and than you can go and start building your own project .</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://achrafbenalaya.com/2021/01/10/the-differences-between-blazor-server-and-blazor-webassembly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">965</post-id>	</item>
		<item>
		<title>Blazor Write C# instead of JavaScript to Build a Client-Side Single-Page App</title>
		<link>https://achrafbenalaya.com/2020/04/19/blazor-write-c-instead-of-javascript-to-build-a-client-side-single-page-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blazor-write-c-instead-of-javascript-to-build-a-client-side-single-page-app</link>
					<comments>https://achrafbenalaya.com/2020/04/19/blazor-write-c-instead-of-javascript-to-build-a-client-side-single-page-app/#comments</comments>
		
		<dc:creator><![CDATA[achraf]]></dc:creator>
		<pubDate>Sun, 19 Apr 2020 14:32:05 +0000</pubDate>
				<category><![CDATA[blazor]]></category>
		<guid isPermaLink="false">https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/?p=376</guid>

					<description><![CDATA[What Is Blazor ? Blazor is a new experimental web UI framework from the ASP.NET team that aims to brings .NET applications into all browsers (including mobile) via WebAssembly. It allows you to build true full-stack .NET applications, sharing code across server and client, with no need for transpilation or plugins. So ,Blazor is a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>What Is Blazor ?</strong></p>
<p>Blazor is a new experimental web UI framework from the ASP.NET team that aims to brings .NET applications into all browsers (including mobile) via WebAssembly. It allows you to build true full-stack .NET applications, sharing code across server and client, with no need for transpilation or plugins.</p>
<p>So ,Blazor is a web framework that, in short, allows you to write C# and HTML to create client-side single-page applications.</p>
<p>This tutorial will take you through installing Visual studio preview,blazor template, setting up your Blazor app, and interacting with new APIs via swagger.</p>
<p>&nbsp;</p>
<p>Youtube Video</p>
<div>
<p><iframe title="Blazor (Preview 8) a new framework for .NET client apps CRUD using Entity Framework and Web API" width="500" height="281" src="https://www.youtube.com/embed/pBabp7hKH1k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
</div>
<p id="setup" class="post-content-header"><strong>Setup</strong></p>
<p>&nbsp;</p>
<p>First we need to ensure that Visual Studio allows preview versions of .NET Core SDK . In Visual Studio navigate to Tools &gt; Options, make sure the option underlined below turned ON.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/01.png" width="1024" height="573" /></p>
<p>&nbsp;</p>
<p>Next we need to install the newest template from this Link . or all you need to do is to open CMD or power shell and Excute this commande :</p>
<p>dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview8.19405.7 Now , we have our Blazor template installed , let’s create our Project :</p>
<p><strong>Demo App</strong></p>
<p><img decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/02.png" width="1015" height="703" /></p>
<p><img decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/03.png" width="1020" height="700" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/04.png" width="1024" height="478" /></p>
<p>As you can see we Have three projects , Client ,Server and Shared . Now we need to install some Nugets to use EF core and present our Api in a beautiful way .</p>
<p id="entity-framework-ef-core" class="post-content-header"><strong>Entity Framework (EF) Core</strong></p>
<p>Entity Framework (EF) Core is Microsoft’s cross platform Object Relational Mapper (ORM). EF Core provides abstractions over different data stores and manages database resources automatically. EF Core targets .NET Core, meaning it’s cross platform, it can run on Windows, Mac and Linux. EF Core shouldn’t be confused with regular Entity Framework (EF), the older .NET Framework version. Every web app needs a data source, and EFCore is a great way to interact with a SQL database. So lets walk through the process of adding EF Core to our new Blazor Demo App.</p>
<p>Make sure to check the preview as in picture below :</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/05.png" width="1024" height="453" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/05.png" width="1024" height="453" /></p>
<p>Or you just can use The Package manager console to install :</p>
<p>Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools Swashbuckle.AspNetCore Let’s Code First , let’s Add our Model to our Demo.shared Project :</p>
<h6><code> </code></h6>
<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="enlighter">public class Persons
{
public int ID { get; set; }
public string Name { get; set; }
public string Age { get; set; }
public bool Visible { get; set; }
public string Urd { get; set; }

}</pre>
<h6><code> </code>Now , We need to add the DB context to our Server project</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="enlighter">public class PersondbContext : DbContext
{
public PersondbContext(DbContextOptions&lt;PersondbContext&gt; options) : base(options)
{
}
public DbSet&lt;Persons&gt; Person { get; set; }
}</pre>
<h6><code></code><code></code></h6>
<h6><code></code><code></code></h6>
<p>Next , inside startup we need to add a couple of lines :</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/06.png" width="930" height="351" /></p>
<h6><code></code></h6>
<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="enlighter">services.AddDbContext&lt;PersondbContext&gt;(
options =&gt; options.UseSqlServer("Server=localhost; Database=PersonDB; Trusted_Connection=True; MultipleActiveResultSets=True"));
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(c =&gt;
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});</pre>
<h6><code></code></h6>
<h6><code></code><code></code></h6>
<p>And , inside Configure Method we have to Enable swagger</p>
<p><code></code></p>
<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="enlighter">// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =&gt;
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});</pre>
<p>&nbsp;</p>
<p>Now , we have to update our database using migrations .</p>
<p>Enable-Migrations: Enables Code First Migrations in a project. Add-Migration: Scaffolds a migration script for any pending model changes. Update-Database: Applies any pending migrations to the database. Get-Migrations: Displays the migrations that have been applied to the target database. Add-migrations DemoApp Update-database After this , we need to create our controller :</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/07.png" width="1024" height="626" /></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/08.png" width="608" height="253" /></p>
<p>And now we will have our controller published .</p>
<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="enlighter">using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using youtubeDemo.Server;
using youtubeDemo.Shared.Model;
namespace youtubeDemo.Server.Controllers {
[Route("api/[controller]")]
[ApiController]
public class PersonsController: ControllerBase {
private readonly PersondbContext _context;
public PersonsController(PersondbContext context) {
_context = context;
}
// GET: api/Persons
[HttpGet]
public async Task &lt; ActionResult &lt; IEnumerable &lt; Persons &gt;&gt;&gt; GetExperience() {
return await _context.Experience.ToListAsync();
}
// GET: api/Persons/5
[HttpGet("{id}")]
public async Task &lt; ActionResult &lt; Persons &gt;&gt; GetPersons(int id) {
var persons = await _context.Experience.FindAsync(id);
if (persons == null) {
return NotFound();
}
return persons;
}
// PUT: api/Persons/5

[HttpPut("{id}")]
public async Task &lt; IActionResult &gt; PutPersons(int id, Persons persons) {
if (id != persons.ID) {
return BadRequest();
}

_context.Entry(persons).State = EntityState.Modified;
try {
await _context.SaveChangesAsync();
} catch (DbUpdateConcurrencyException) {
if (!PersonsExists(id)) {
return NotFound();
} else {
throw;
}
}
return NoContent();
}
// POST: api/Persons
[HttpPost]
public async Task &lt; ActionResult &lt; Persons &gt;&gt; PostPersons(Persons persons) {
_context.Experience.Add(persons);
await _context.SaveChangesAsync();
return CreatedAtAction("GetPersons", new {
id = persons.ID
}, persons);
}
// DELETE: api/Persons/5
[HttpDelete("{id}")]
public async Task &lt; ActionResult &lt; Persons &gt;&gt; DeletePersons(int id) {
var persons = await _context.Experience.FindAsync(id);
if (persons == null) {
return NotFound();
}
_context.Experience.Remove(persons);
await _context.SaveChangesAsync();
return persons;
}
private bool PersonsExists(int id) {
return _context.Experience.Any(e =&gt; e.ID == id);
}
}
}</pre>
<p>&nbsp;</p>
<p><code></code></p>
<h6><code></code></h6>
<p>Now we need to create our PersonPage.razor</p>
<h6><code> </code></h6>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="enlighter">@page “/PersonPage” @using youtubeDemo.Client.Shared @using youtubeDemo.Shared.Model @inject HttpClient Http @using System.Linq
&lt;h1&gt;Demo for Youtube Person Project&lt;/h1&gt;
&lt;table width="100%" style="background:#05163D;color:honeydew"&gt;
&lt;tr&gt;
&lt;td width="20"&gt; &lt;/td&gt;
&lt;td&gt;
&lt;h2&gt; Add New Person &lt;/h2&gt;
&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td align="right"&gt;
&lt;button class="btn btn-info" @onclick="(async () =&gt; await AddNewPerson())"&gt;Clear&lt;/button&gt;
&lt;/td&gt;
&lt;td width="10"&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="2"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;div class="container"&gt;
&lt;div class="row"&gt;
&lt;div class="col-6"&gt;
&lt;form&gt;
&lt;div class="form-group"&gt;
&lt;label for="email"&gt;Person Id&lt;/label&gt;
&lt;input type="text" class="form-control" @bind="PersonG.ID" readonly /&gt;
&lt;/div&gt;
&lt;div class="form-group"&gt;
&lt;label for="Person"&gt;Name:&lt;/label&gt;
&lt;input type="text" class="form-control" @bind="PersonG.Name" placeholder="Person Name" /&gt;
&lt;/div&gt;
&lt;div class="form-group"&gt;
&lt;label for="pwd"&gt; Age:&lt;/label&gt;
&lt;input type="text" class="form-control" @bind="PersonG.Age" placeholder="Age" /&gt;
&lt;/div&gt;
&lt;div class="form-group form-check"&gt;
&lt;label class="form-check-label"&gt;
&lt;input type="checkbox" @bind="PersonG.Visible" class="form-check-input" /&gt;Make It Visible ?
&lt;/label&gt;
&lt;/div&gt;
&lt;div class="form-group" hidden&gt;
&lt;label for="IsVisible"&gt;IsVisible&lt;/label&gt;
&lt;input type="text" class="form-control" bind="@PersonG.Visible.ToString()" value="@PersonG.Visible.ToString()" readonly /&gt;
&lt;/div&gt;
&lt;button type="button" class="btn btn-success" @onclick="(async () =&gt; await AddPerson())" style="width:220px;"&gt;Save&lt;/button&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table width="100%" style="background:#0A2464;color:honeydew"&gt;
&lt;tr&gt;
&lt;td width="20"&gt; &lt;/td&gt;
&lt;td&gt;
&lt;h2&gt;Blood Details&lt;/h2&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="2"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
@if (Person == null)
{
&lt;p&gt;&lt;em&gt;Loading...&lt;/em&gt;&lt;/p&gt;
}
else
{
&lt;table class="table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Person ID&lt;/th&gt;
&lt;th&gt;Person Name&lt;/th&gt;
&lt;th&gt;Person Age&lt;/th&gt;
&lt;th&gt;Added Time&lt;/th&gt;
&lt;th&gt;Visible&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
@foreach (var _Person in Person)
{
&lt;tr&gt;
&lt;td&gt;@_Person.ID&lt;/td&gt;
&lt;td&gt;@_Person.Name&lt;/td&gt;
&lt;td&gt;@_Person.Age&lt;/td&gt;
&lt;td&gt;@_Person.Urd&lt;/td&gt;
&lt;td&gt;@_Person.Visible&lt;/td&gt;
&lt;td&gt;&lt;button class="btn btn-primary" @onclick="@(async () =&gt; await EditPerson(@_Person.ID))" style="width:110px;"&gt;Edit&lt;/button&gt;&lt;/td&gt;
&lt;td&gt;&lt;button class="btn btn-danger" @onclick="@(async () =&gt; await DeletePerson(@_Person.ID))"&gt;Delete&lt;/button&gt;&lt;/td&gt;
&lt;/tr&gt;
}
&lt;/tbody&gt;
&lt;/table&gt;
}
@functions {
Persons[] Person;
Persons PersonG = new Persons();
string ids = "0";
bool showAddrow = false;
protected override async Task OnInitializedAsync()
{
Person = await Http.GetJsonAsync&lt;Persons[]&gt;("/api/Persons/");
}
async Task AddNewPerson()
{
PersonG = new Persons();
}
// Add New Blood Details Method
async Task AddPerson()
{
PersonG.Urd = (System.DateTime.Now).ToShortDateString().ToString();
if (PersonG.ID == 0)
{
await Http.SendJsonAsync(HttpMethod.Post, "/api/Persons/", PersonG);
}
else
{
await Http.SendJsonAsync(HttpMethod.Put, "/api/Persons/" + PersonG.ID, PersonG);
}
PersonG = new Persons();
Person = await Http.GetJsonAsync&lt;Persons[]&gt;("/api/Persons/");
}
// Edit Method
protected async Task EditPerson(int Id)
{
ids = Id.ToString();
PersonG = await Http.GetJsonAsync&lt;Persons&gt;("/api/Persons/" + Convert.ToInt32(Id));
}
// Delte Method
protected async Task DeletePerson(int Id)
{
ids = Id.ToString();
await Http.DeleteAsync("/api/Persons/" + Convert.ToInt32(Id));
Person = await Http.GetJsonAsync&lt;Persons[]&gt;("/api/Persons/");
}
}</pre>
<h6><code> </code></h6>
<p>&nbsp;</p>
<h6><code></code><code></code></h6>
<p>our page is ready now , we have to add it to our menu inside NavMenu.razor :</p>
<h5></h5>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="enlighter">&lt;li class="nav-item px-3"&gt;
&lt;NavLink class="nav-link" href="/PersonPage"&gt;
&lt;span class="oi oi-ellipses" aria-hidden="true"&gt;&lt;/span&gt; Person
&lt;/NavLink&gt;
&lt;/li&gt;</pre>
<h5></h5>
<p>&nbsp;</p>
<p>Now , if you start the project or use command Dotnet run you can run the project :</p>
<h6><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/09.png" width="1024" height="534" /></h6>
<p><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/10.png" width="1024" height="538" /></p>
<p>Links :</p>
<p>Demo Person Project : <a href="https://github.com/achrafbenalaya/DemoPersonAppYoutube">https://github.com/achrafbenalaya/DemoPersonAppYoutube</a></p>
<p>Patient Project presented in demo : <a href="https://github.com/achrafbenalaya/BlazorAppointmentAppYoutubeDemo">https://github.com/achrafbenalaya/BlazorAppointmentAppYoutubeDemo</a></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium" src="https://achrafbenalaya.github.io/Achrafbenalayablog/img/post11/11.png" width="1920" height="1080" /></p>
<p>Happy Blazor Day  =)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://achrafbenalaya.com/2020/04/19/blazor-write-c-instead-of-javascript-to-build-a-client-side-single-page-app/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">376</post-id>	</item>
	</channel>
</rss>
