.Net Core 使用心得与总结

使用Net Core 开发已经有一年时间了 将体会总结下

1.首先Net FrameWork 与 Net Core 最大的区别就是跨平台

    而跨平台的根本就是要适用各个平台上的Web服务器,各个服务器的启动、配置等等都是不尽相同的,如果每个服务器提供一套实现出来,如果未来出现了一个新的Web Server,然后又要增加新的实现,这会导致.NET Core应用的适用性滞后,也会很消耗人力,无法很好的达到跨平台的目标。

这时候 便需要 Kestrel -- 一个轻量级 跨平台的Web服务器。

   .NET Core 3.0下,Kestrel的集成已经相当成熟了,也提供了相应的自定义配置,以使得Kestrel的使用更加具有灵活性和可配性。它可以独立运行,也可以与反向代理服务器结合使用。Kestrel本身是不支持多个应用共享同一个端口的,但是我们可以通过反向代理服务器来实现统一对外的相同的端口的共享。

下图是Kestrel服务器运行示意图

 

 简单来说 NetCore 实质上一个控制台应用程序,但他运行起来却是一个web网站。就是因为他内置了一个Kestrel服务器,用以摆脱对IIS的依赖从而达到跨平台的目的。如上图所示  在Asp.Net Core应用程序中代码之前是一个Kestrel 服务器,在Web发起一个http请求 最终目的是进入代码,对其进行处理 。重点就是一个请求进入代码的过程。其间 需要一个来监听 解析 转发 用户请求的便是由 kestrel来完成的。在framework的时代 这一任务是由IIS来完成的,而现在,Net Core 发布在IIS上 需要一个ASP.NET Core Module 因为这时候IIS本质上 是一个反向代理  他的任务就是接收到请求 将其原封不动的转发给Kestrel服务器 然后Kestrel 负责解析请求。自此Net Core 已经完全摆脱了对IIS的依赖,内部通过kestrel实现自给自足(图中IIS仅为反向代理 也可以是Apache,Nginx)。

2.性能提升

这一点根据.Net Core团队给出的性能测试数据来看  Asp.net Core(.net core)相比与原来的Web(.net framework 4.6)程序性能提升了2300%.

 以下是 与Java 12 性能对比部分节选(数据取自张队博客)

 

 

 

以上仅是本人个人体会与总结,如有错误之处,还望斧正

 

posted @ 2020-03-09 15:26  Felix-Zhang  阅读(712)  评论(0编辑  收藏  举报