什么是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肯定不是同一个东西(废话,如果是同一个东西还写这么多干啥!)。
     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.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)然后发现虽然PlatformTarget一项中已经改为X64,但是在PlatformTarget的属性中Platform仍然是AnyCPU,手动修改工程文件将AnyCPU改为X64后一切正常

结尾

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

原文地址:https://www.cnblogs.com/itzhangxp/p/8322364.html

时间: 2024-10-08 20:50:44

什么是Asp.net Core?和 .net core有什么区别?的相关文章

ASP.NET 5 and .NET Core RC Ready for Production

Microsoft recently released .NET Core and ASP.NET 5 Release Candidate, supported on Windows, OS X and Linux. Microsoft states this release is ready for production and will support it. Both release candidates are considered feature complete on Windows

从零开始学 ASP.NET Core 与 EntityFramework Core 目录

从零开始学 ASP.NET Core 与 EntityFramework Core 介绍 我是一个目录,它旨在帮助开发者循序渐进的了解 ASP.NET Core 和 Entity Framework Core . 文章会随着版本进行更新,关注我获取最新版本 目标 我们将详细讨论和学习: .NET 平台 ASP.NET Core ASP.NET Core MVC ASP.NET Identity Core Entity Framework Core 适用对象 学习本书的前置条件只需要你有一点 C#

简述关于ASP.NET MVC与.NET CORE 的区别

简述关于ASP.NET MVC与.NET CORE的区别1.关于ASP.NET 关于MVC刚开始接触这个技术的时候我经常不理解他们的名字,我相信许多学ASP.NET开发人员开始接触MVC应该也和我一样产生很多为什么,也会误认为认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,深入学习后我才知道事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系,所以可以称之为ASP.NET MVC.我们可将原来的ASP.NET称为 ASP.NET

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

效果图: UEditor下载地址 https://ueditor.baidu.com/website/download.html ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 https://www.cnblogs.com/WNpursue/archive/2019/02/20/ASPNetCore-use-UEditor-Core-share.html 原文地址:https://www.cnblogs.com/yechangzhong-82621779

Introducing .NET Core(.NET Core介绍)

本菜鸟基本是个英盲,此篇外博是我用有道翻译的,好在内容还算简单,但愿不会误人子弟.英语好的同志们可直接去看原文:https://docs.asp.net/en/latest/getting-started/installing-on-windows.html,如果有人能重新翻译发布出来让大家学习那再好不过,省得我这种人一个一个地查单词. 欢迎指正! By Steve Smith 作者Steve Smith .NET Core is a small, optimized runtime that

NET Core & Entity Framework Core

本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1-1 手把手引进门 1-2 进阶 1-3 杂项 (相关理论知识) 第一篇含两个步骤. 1-1-1 ASP.NET Core & Entity Framework Core 后端(内核)含两篇 (第二篇链接) 1-1-2 ASP.NET MVC, Web API, EntityFramework &

[.NET Core] - 使用 EF Core 的 Scaffold-DbContext 脚手架命令创建 DbContext

Scaffold-DbContext 命令 参数 Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDirectory <String>] [-ContextClassName <String>] [-Tables <String>] [-DataAnnotations] [-Project <String>] [<CommonParam

net Core 通过 Ef Core 访问、管理Mysql

net Core 通过 Ef Core 访问.管理Mysql 本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1.0.0-preview2-003131 本文分为Window环境和Mac Os X环境. 相关资源下载 Visual Studio Code:https://code.visualstudio.com DotNet Core:https://dotnet.github.io/ MySql.Data.

linux下如何产生core,调试core

linux下如何产生core,调试core 摘自:http://blog.163.com/[email protected]/blog/static/19554784201131791239753/ 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开关和大小限制 1)使用ulimit -c命令可查看core文件的生成开关.若结果为0,则表示关闭了此

Linux生成core文件、core文件路径设置

1.设置core文件大小 列出所有资源的限制: ulimit -a ulimit -a.png 或者查看core file size: ulimit -c core file size:unlimited:core文件的大小不受限制0:程序出错时不会产生core文件1024:代表1024k,core文件超出该大小就不能生成了 设置core文件大小: ulimit -c fileSize 注意: 尽量将这个文件大小设置得大一些,程序崩溃时生成Core文件大小即为程序运行时占用的内存大小.可能发生堆