本章全部摘自什么是Asp.net Core?和 .net core有什么区别? ,做加深记忆用

为什么要写这篇文章

 写这篇文章有两个原因,第一个是因为新站点创建出来后一直空置着,所以写一篇文章放在这里。第二就是因为近来在做一些基于Asp.net core平台的项目开发,也遇到了一些问题,正好趁此机会写出来,一方面算是自己知识的一个备忘,另一方面也希望对其他朋友能有所帮助

什么是Asp.Net core

我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解。微软在推出来.net core的同时为了方便一些原有的项目可以方便迁移,同时推出了Asp.net core。那么.net core和Asp.net core是不是同一个东西呢?如果不是又有什么区别呢?
  下面我们分别说明一下,首先Asp.net core和.net core肯定不是同一个东西(废话,如果是同一个东西还写这么多干啥!)。
  Kestrel:Asp.net core其实就是仍然基于.net Full Framework(最低要求Framework 4.6.2)的项目, 但同时保留了.net core一些新的设置理念,比如Asp.net core默认使用Kestrel作为Http请求的监听器,而不是使用原来庞大的Https.sys。Kestrel不仅仅是微软下一代的跨平台Http请求监听器,同时还提供了比Https.sys更轻量级以及更快速的Http请求处理。
  除此之外,Asp.net core与原来的Web设计另一个最大的区别在于Asp.net core(及.net core)完全抛弃了原来的使用管道模式来接收以及处理HttpRequest。在Asp.net core中允许处理中间件(Middleware)来对所有的HttpRequest来进行请求,当请求被接收到时,Asp.net core会调用注册的中间件(按照注册的顺序)对HttpRequest进行处理。这样做相比与原来使用HttpApplication的管道方式而言,其优势在于完全由开发人员决定HttpRequest需要执行怎么样的处理,没有多余的其他步骤。而原来的方式既使开发人员不希望对一个HttpRequest进行任何处理,但HttpApplication仍然会按照管道的设置依次创建HttpModel -> 激活HttpHandler -> 处理Session等。据.net core团队给出来的性能测试数据来看,Asp.net core(.net core)相比与原来的Web(.net framework 4.6)程序性能提升了2300%.
  而.net core其实就是保留了上面所说的优势的同时支持跨平台运行。.net core的系统是可以真正运行在除Windows以外的其他平台的。轻量级、跨平台、模块化是.net core整体的设计理念,同时也是微软产品理念转变的一个体现。.net core虽然有千般好,但是我们当前仍然没有直接使用它,因为它现在有一个致使的“缺陷”那就是生态环境,由于.net core的API已经完全重写,虽然当前已经提供了.net farework 90%以上的API,但是仍然会造成一些开发上的不便,当然这还不是最大的问题,最大的问题在于一些第三方Nuget包仍然不支持.net core。这样就会造成一些项目无法直接迁移或是迁移成本太高的问题。
  简而言之,Asp.NetCore的心和灵魂都换了,但是骨架没换。.NetCore顺带骨架都换了。

如何创建一个Asp.net core的项目

 说了这么多,我们来看一下在创建项目时Asp.net core和.net core有什么不同吧,我们以Vistual studio 2017上创建项目为例,首先打开VS2017后点击创建项目-> Asp.net core web应用,这时会弹出模版选择的窗口

  在这个选择窗口中我们可以看到在左上角的那个下拉列表中可以选择.net framework以及.net core。当我们选择.net framewrok时创建出来的项目工程即为asp.net core。项目创建成功后可以在项目的属性中看到使用的Framework版本是4.6.2。但是项目文件的组织结构已经和.net core的项目结构一样了。

Asp.net core项目的"坑"

 近期在对新的项目进行性能测试时发现系统的内存占用似乎只能使用到1.5G。经过多次测试以及代码检查终于发现新创建出来的Asp.net core的项目默认的目标平台是X86而不是AnyCPU。当尝试在VS中新目标平台改为AnyCPU时发现项目不能运行,抛出异常"无法加载 DLL“libuv”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。",无奈只能将项目的目标平台改为X64,然后发现在开发环境已经一切正常,但是当将代码部署到Azure App Service上时系统仍然不能访问,异常和上面的相同。最后无意在网上查到需要手动加一段代码在proj文件中,然后就可以将target Platform改为AnyCPU了

结尾

 好了,今天这篇文章就先写到这里,都是一些简单的东西,对于熟悉的人来说不值一提,权当个人的一个总结吧。新的一年,新的开始。继续加油,我相信.net core会使.net这个平台的开发更具潜力,同时我也相信新的一年我们会越来越好。

C# 什么是Asp.net Core?和 .net core有什么区别?相关推荐

  1. 从博客园博问站点迁移ASP.NET Core展望.NET Core

    今年年初,博客园的博问系统就已经迁移到了 ASP.NET Core on Linux并发布上线发布. 我们看到博客园发表官方博客-- .NET跨平台之旅:博问站点迁移至ASP.NETCore on L ...

  2. ASP.NET 5 and .NET Core RC 准备投入使用

    微软最近发布了.NET Core 和ASP.NET 5 的发布候选版本,可运行在Windows,OS X和linux上.微软宣布 这个发布版已准备好投入使用,并将会支持它.两个发布候选版本都是经过深思 ...

  3. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能

    ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 首先通过nuget 引用UEditor.Core,作者github:https://github.com/bai ...

  4. 使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇

    介绍 这是"使用 ASP.NET Core ,Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用"系列文章的第二篇.以下 ...

  5. 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)

    以下是手把手引进门教程,基于 ASP.NET Core, Entity Framework Core ,ABP 框架 创建Web 应用, PS: 自带自动的测试模块哦. 样例下载 (上 github  ...

  6. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于SignalR Core的文章了. 先介绍一下SignalR吧,如下: ASP.NET S ...

  7. 让我们Core在一起:ASP.NET Core amp; .NET Core

    Microsoft .NET 自 2002 年发行 v1.0 以来,已经过了近 14 个年头,在这 14 年里面,.NET 日渐成熟并成为 Microsoft 的重要开发平台之一,只要是在 Windo ...

  8. ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

    ASP.NET Core 入门教程 8.ASP.NET Core + Entity Framework Core 数据访问入门 原文:ASP.NET Core 入门教程 8.ASP.NET Core ...

  9. ASP.NET Core 和 EF Core系列教程——CRUD

    ASP.NET Core 和 EF Core系列教程--CRUD (2 / 10) CRUD 为创建.读取.更新.删除的英文首字母的缩写 作者:Tom Dykstra和Rick Anderson Co ...

  10. [52ABP]ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core

    ABP框架简介 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...

最新文章

  1. Drawable Resource 之旅(一):BitmapDrawable 详解
  2. Loadrunner无法打开浏览器的相关问题
  3. Perl 语言入门6-9
  4. 性能测试工具系列(一):性能测试工具对比分析
  5. 计算机病毒需要附着在,计算机病毒是如何传播的?
  6. apache php的日志在哪里,PHP在哪里存储错误日志? (php5,apache,fastcgi,cpanel)...
  7. 【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析...
  8. “智汇光大 E启未来” 中国光大集团ESBU协同核心系统1.0正式发布
  9. 如何为网站进行安装SSL证书
  10. java pdfptable_java Itext PDF 导出 table | 学步园
  11. 免费网站监控服务器,服务Web应用!10款免费服务器监控软件
  12. vb6 连接 mqtt 服务器
  13. mac系统添加VSCode到右键菜单
  14. Swift语言编写一个简单的条形码扫描APP
  15. linux 验证码 权限,LINUX 下验证码无法显示怎么办
  16. python解最强大脑: 黑白迭代
  17. 手机快播安卓版 Qvod player V1.0.19
  18. 自定义ListView实现任意View跑马灯效果
  19. Elasticsearch数据库all shards failed
  20. PHP 微信支付v3签名生成

热门文章

  1. luogu 3740 [HAOI2014] 贴海报
  2. Android 点击屏幕空白处隐藏软键盘
  3. 什么是 GPU 加速的计算?
  4. 免冠证件照如何制作?制作证件照的简单方法
  5. 一句话就能把你逗乐的经典笑话
  6. R软件和RStudio的入门介绍
  7. 一张图理解线性空间,度量空间,赋范空间,巴拿赫空间,内积空间,欧几里得空间,希尔伯特空间
  8. 南卡全新NEO系列骨传导耳机,主打轻运动风的南卡NEO测评!!!
  9. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
  10. 《利用python进行数据分析》第二版 第13章-Python建模库介 学习笔记