我的第一个asp.net core站点建成了!

Tilo Mitra's avatar

最近我看到asp.net core火了起来,又听说.net core和.net framework将合成一个全新的框架:.net5。到那时候,传统的WebForm将会被抛弃,这是因为虽然WebForm是像winform一样可以简单的设计、拖拽式布局,但这也免不了像winform一样的绝对布局的限制,并且直接在aspx中写C#代码需要些<%%>成对的标记,很麻烦,所以一般的webform开发一般把业务和布局分开写,这也就是所谓耦合度低。虽然上手简单,但提升较难,很难打破被限制的思维。

而asp.net core的razor视图就改变了这一点。razor视图通过@标记,可以轻松灵活地在html中访问变量,或重复输出,条件判断,异常捕获,不再需要来回切换视图和后台代码,解放了开发的思维,也不必像webform里用Response.Write输出内容,可以直接在C#代码中连续或不连续地输出。

例如,连续输出1~100的数字,用razor的话可以在cshtml中写

@for(int i=1;i<=100;i++)
{
  <a>i.ToString()</a>
}
而用webform的话就得在后台
for(int i=1;i<=100;i++)
{
  Response.Write("<a>"+i+"</a>");
}
是不是很麻烦呢?
有人会说,asp.net mvc也支持razor视图啊。那么,选择asp.net core还有诸多原因。在微软官方api中写道:

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。
ASP.NET Core 具有如下优点:
生成 Web UI 和 Web API 的统一场景。
针对可测试性进行构建。
Razor Pages 可以使基于页面的编码方式更简单高效。
Blazor 允许你在浏览器中使用 C# 和 JavaScript。 共享全部使用 .NET 编写的服务器端和客户端应用逻辑。
能够在 Windows、macOS 和 Linux 上进行开发和运行。
开放源代码和以社区为中心。
集成新式客户端框架和开发工作流。
支持使用 gRPC 托管远程过程调用 (RPC)。
基于环境的云就绪配置系统。
内置依赖项注入。
轻型的高性能模块化 HTTP 请求管道。
能够托管于以下各项:Kestrel,IIS,HTTP.sys,Nginx,Apache,Docker
并行版本控制。
简化新式 Web 开发的工具。

且asp.net core可以通过多平台生成,性能也比asp.net高,使用.net core运行时(即可跨平台)。
总之,我总结了下:
性能:asp.net core>asp.net
易学性:Webform>Razor(mvc)
可维护性:mvc>非mvc

注:文中mvc是模式,razor是视图,使用razor并非一定是mvc,但使用mvc就一定要用razor视图。
razor的学习文档