欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【春华秋实】.NET Core之只是多看了你一眼

程序员文章站 2022-06-28 21:03:55
感官初体验 技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代。.NET也是一样,当开源、跨平台成为主流的时候,如果再故步自封,等待.NET的就是死路一条,幸好.NET Core问世了,社区反响积极而又强烈,.NET Core的生态体系不断得到丰富。作为.NET技术人员,你必须去 ......

感官初体验

技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代。.net也是一样,当开源、跨平台成为主流的时候,如果再故步自封,等待.net的就是死路一条,幸好.net core问世了,社区反响积极而又强烈,.net core的生态体系不断得到丰富。作为.net技术人员,你必须去深入了解.net core,作为非.net技术人员,.net core也值得你去关注。

.net core作为.net计划的跨平台开源版本,也是下一代.net的主力版本,现在的微软越来越开放,作为其平台技术从业者,没有理由不持续跟进。也希望通过大家的努力,打造一个庞大而又健全的.net生态体系。


补充一下,在2019年6月27日之后,.net core补丁更新将不再包含.net core 1.0和1.1的更新包或容器映像。我们应该尽快从.net core 1.x升级到.net core 2.1或2.2及以后的版本。在.net core3.0版本中,.net core 将支持winform和wpf。

本系列文章以.net core2.2及以后的版本为基础。
 

看了看

.net core最大和最具竞争力的特点就是跨平台,相较于.net如果仅绑定于windows并面向单一用户,那么其将难以在多用户服务器环境中创建高性能的应用,core使得microsoft得以将开发基础重置为以服务器为中心的模式。

下图是.net core未来的发展方向:

【春华秋实】.NET Core之只是多看了你一眼

通过上图我们可以知道,.net框架的内容丰富了,包括.net framework、.net core和xamarin微软使用.net standard library来统一整个.net框架,但是维护起来确是一个非常有成本的事情,所以有时候我会想,未来是不是只会保留.net core的内容,而移除.net framework。毕竟现在的处理只是过渡期的过渡方式,但是考虑到.net framework庞大的用户量,所以微软不敢轻易放弃对.net framework的支持。

目前的版本中,.net core主要面向web开发,asp.net core是一个跨平台的高性能开源框架,用于生成基于云且连接 internet 的新式应用程序。

我们先来看一下,asp.net core的优点:


  • 跨平台。
  • 内置依赖注入。
  • 生成 web ui 和 web api 的统一场景。
  • 针对可测试性进行构建。
  • razor pages 可以使基于页面的编码方式更简单高效。
  • 能够在 windows、macos 和 linux 上进行开发和运行。
  • 开放源代码和以社区为中心。
  • 集成新式客户端框架和开发工作流。
  • 基于环境的云配置系统。

 

举一个简单的例子,在传统的mvc下,我们使用如下方式编程:

   1:  @html.actionlink(“这是啥参数”, “这又是啥”, “我靠,这边怎么还有一个”, new { @class = "晕了"})

而在.net core下,我们可以这样:

   1:  <a asp-controller=”user” asp-action=”createuser” class=”mycss”>createuser</a>

是不是.net core下的编程更加优雅,更像是直接操作html,这种例子还有很多,需要自己多多深入了解。

定睛看

如果只是跨平台,可能还不足以吸引广大开发者,毕竟一个新的语言或者框架的问世,更需要很强的开发效率和执行效率。

.net core拥有轻型的高性能模块化 http 请求管道。能够在 iis、nginx、apache、docker 上进行托管或在自己的进程中进行自托管。使用.net core 时,可以使用并行应用版本控制。目前的asp.net core已经是一个非常成熟的产品,从asp.net mvc/web api转向非常简单。最显著的原因在于.net core应用性能的提高和占用空间的减少,这意味着无论是对于云还是私有数据中心,可真正做到在基础架构上的成本节省。

由于.net core的模块化设计,使得.net core可以更快的进行版本更新,并能够使用docker和kubernetes等容器编排工具跨平台开发和部署应用,这是一项真正的优势。同时.net core的模块化设计意味着您只包含所需的依赖关系,这就减少了项目的不必要依赖,发布包也变小了。

我们来看下techempower的测试:

这是2018年2月14日关于plaintext的测试统计,可以看到.net core的排名不是很让人满意,排在了17名,而且还有110个报错

这是2018年10月30日关于plaintext的测试统计,可以看到.net core进步明显,排在了第7名,没有报错,而且跟前面的测试结果很接近

但这并不意味着.net core的性能已经很不错了,事实上,.netcore在性能方面还有很多工作要做。虽然在techempower“纯文本”基准测试中,asp.net core的web服务器kestrel表现极佳;但在涉及数据库查询等的高级测试中,kestrel则表现不佳。在性能方面上,很多从.net framework迁移过来的代码还有很大的改进空间,相信微软也会进行深入研究,挖掘这些性能问题,并提供更好的解决方案。

如果想要了解更详细的的信息,可以打开techempower网站查看。

当然了,.net core也有很多不足的地方,比如appdomain这块的设计,之前appdomain基于windows,是对当前.net应用进程的逻辑分区,并对同一进程中的各appdomain实现了隔离,由于其特殊性,.net core尚未提供appdomain功能,希望以后会出现基于appdomain模型的解决方案。另外,.net core、.net standard和.net framework,还是比较让人感到乱的。

再也忘不掉你容颜

.net core目前依然在快速发展中,很多api不断得到丰富,同时asp.net core团队,每周都会举行一次社区直播会议,直播地址

最后奉上两张图用以展示.net core架构及其扩展组成。

下图是其扩展组成