거의 4년 가까이 PEngine을 만들었다 엎었다 만들었다 엎었다 하는데

 

그 동안 건드려본게 좀 많다.

 

PostgreSQL, EntityFramework, ASP.NET Core MVC, WebAPI, React... 그리고 Blazor

 

웹 어셈블리를 런타임으로 해서 프론트를 C#으로 짤 수 있게 해준다고 한다.

 

 

장난하는건가?

 

성능이 처참하다. [1]

 

그러니까, 브라우저 위에 웹 어셈블리 위에 .NET 위에 블레이저를...

 

어차피 웹 어셈블리라 웬만한 브라우저는 다 될텐데 굳이 닷넷 런타임을 통째로 올려야 했나?

 

컴파일을 하면 안되는건가?

 

라고 생각할 찰나 서버사이드 블레이저라는 것을 발견했다. [2]

 

 

SignalR 이라고 하는, 마소가 만들어놓은 실시간 웹 통신 라이브러리를 이용해서 렌더링 결과를 받아와서 DOM을 변경하는 방식.

 

이러면 렌더링은 죄다 서버한테 맡겨버리지만 프론트엔드를 C#으로 짜도 클라이언트 사이드 블레이저만큼 성능 하락은 없을지도 모른다.

 

마침 MSDN에 관련 자료가 있었다.[3]

 

그래서 한번 적용해보았다.

 

App: Blazor Setup with MVC · 0x00000FF/PEngine@e423bf4

Permalink Browse files App: Blazor Setup with MVC Loading branch information Showing 9 changed files with 61 additions and 49 deletions. +11 −0 Solution/PEngine.App/App.razor +5 −0 Solution/PEngine.App/Controllers/HomeController.cs +4 −0 Solution/PEngine.A

github.com

이거면 내가 생각하는 방식의 블로그 엔진을 만들어 낼 수 있을 듯 하다.

 

그것도 완전한 C#으로!

 

Reference

[1] A Weekend with Blazor: Running C# in the Browser

https://medium.com/young-coder/a-weekend-with-blazor-running-c-in-the-web-browser-6b9439704418

 

[2] Introduction to ASP.NET Core Blazor

https://docs.microsoft.com/ko-kr/aspnet/core/blazor

 

[3] Integrate ASP.NET Core Razor components into Razor Pages and MVC apps

https://docs.microsoft.com/ko-kr/aspnet/core/blazor/integrate-components