比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]
ASP.NET Core是.与.Net Core FrameWork一起发布的ASP.NET 新版本,最初被称为ASP.NET vNext,有一系列的命名变化,ASP.NET 5.0,ASP.NET MVC CORE 6.0,最后才被命名为ASP.NET Core。
ASP.NET Core是对现有ASP.NET的彻底重写,与传统的ASP.NET框架相比,它采用了完全不同的开发方法。它是开源,并且独立于平台的。
ASP.NET Core的第一个版本是1.0,是和Visual Studio 2015 Update3一起发布的。
AspNet Core和Visual Studio项目模板经过了一系列的升级,最终的项目模板连同AspNet Core 1.1一起在Visual Studio 2017上发布(目前最新版本是AspNet Core 2.1)。
既然ASP.NET是一个全新实现的框架,那么了解传统的ASP.NET和ASP.NET Core就是十分必要的。
下面的表格展示了他们的区别:
| ASP.NET | ASP.NET CORE |
| 最新版本是ASP.NET 4.6 | 最新版本是AspNet Core 2.1 |
| 它在.NetFramework上运行,或者通常称为Full .NetFramework | 它运行于.net core 和Full . NetFramework。 |
| 它只在Windows环境下运行。但是,我们有用于Linux部署的Mono,它不像.NetFramework那样是一个完整的实现 | 它是平台独立的,在所有主流平台上都可以运行 |
| 虽然Asp.Net MVC和WebAPI是开源的,但是Asp.Net FrameWork不是。 |
完全开源, GitHub:https://github.com/aspnet/home |
| 支持 Asp.Net WebForm, Asp.Net MVC 和 Asp.Net WebAPI | 不支持Web Form,支持Asp.Net MVC 和 Asp.Net WebAPI |
| Asp.Net不是模块化框架。它需要在机器或服务器上安装.Net FrameWork。 |
ASP.NET CORE是模块化框架,即应用程序可以使用最少的框架组件来运行。它所需要的框架组件只能包含在应用程序中,这与传统的Asp.Net不同,它在整个Net框架中运行。 所有组件都可以作为Nuget包使用。 |
| 在部署之前需要在服务器上装.NetFramework |
不需要在服务器上安装.NET Core Framework就可以部署。 |
| 在请求管道上包含许多默认组件,还有一些额外的开销,像是页面ViewState,这都会降低性能。 |
由于它的模块化本质,它比传统的Asp.Net表现得更好。 |
| 支持OWIN与PKatana库,不能在没有 System.Web.dll实现ASP.NET应用程序,因此实现OWIN应用程序或与主机无关的应用程序是困难的。 |
支持OWIN规范,对其有新的实现。 更多关于OWIN: http://www.codedigest.com/posts/1/what-is-owin-a-beginners-guide |
| 严重依赖System.Web.dll,所以它只能与IIS一起使用 |
不依赖于System.Web.dll,还有IIS |
| 支持应用领域的应用程序隔离,内置的代码访问安全策略的安全性 |
不支持应用程序域和代码访问安全策略 |
| 它只能承载在IIS上,虽然IIS是免费的,但是Windows操作系统是付费的 |
它有自己的跨平台webserver名为Kestrel。Asp.Net核心应用程序可以由Kestrel托管在最常见的web服务器(如Nginx、Apache、IIS等)后面。这些web服务器充当反向代理,将请求转发给Kestrel服务器。它可以自托管。 更多关于Kestrel:http://www.codedigest.com/quick-start/5/learn-kestrel-webserver-in-10-minutes |
| 支持httphandler和httpmodule来进行请求/响应过滤等 |
支持Asp.Net Core中间件(由OWIN中间件演化而来)。 |
| 虽然支持命令行,但不像ASP.NET CORE那么完整。 |
包含一个名为dotnet CLI的跨平台命令行接口。 |
| 通过FormsAuthentication HttpModule支持表单验证。 |
支持Cookie身份验证中间件,以提供表单身份验证。 |
| Web.config支持. Appsettings还有其他一些的配置 |
不支持Web.config,AppSettings是基于json的配置文件appSettings.json的一部分。 |
| Global.asax文件或支持应用程序级事件的HttpApplication对象 |
没有Global.asax文件.只有 Startup 类作为类型的实现 |
| 支持C#,VB,还有其他一些编程语言 |
只支持C#, F#. 以后可能会支持VB. |
| 支持 WCF,WPF 和 WF |
不支持WCF、WPF和WF。支持WCF客户端库。 |
| Asp.Net MVC 和 WebAPI are 独立的框架。 |
WebAPI和ASP.NET MVC 控制器合并了,是单一的框架。 |
| 依赖注入可以使用DI容器(如Unity、StructureMap、Autofac等) |
依赖注入是Asp.Net MVC的一部分 |
| 容器支持没有ASP.NET CORE好 |
最适合用于基于容器的部署,比如Docker。 |
Visual Studio IDE的区别:
| ASP.NET | ASP.NET CORE |
| 所有主流版本都支持 | 从 Visual Studio 2015 Update 3开始支持. 现在的版本是Visual Studio 2017 |
| 不支持跨平台IDE | 有一个跨平台IDE版本Visual Studio Code |
| 支持Nuget包管理器并在packages.config维护包中的依赖项 | Nuget依赖项是项目文件的一部分 |
| 与ASP.NET COORE相比有繁重的项目文件 | 有一个简化和精益的项目文件。在VS 2015年支持Project.json用于维护移动在项目内的文件 |
| 没有内置支持的Bower。我们需要手动操作来集成Bower。 | 支持客户端包管理器,如Bower。更多关于Bower:http://www.codedigest.com/quick-start/7/learn-bower-package-manager-in-10-minutes |
| 内部不支持gulp和grunt,我们需要手工工作来整合gulp和grunt。 | 支持客户端任务运行程序,如gulp,grunt。 |
| 在项目内部管理静态文件和脚本文件 | 所有静态内容和客户端脚本现在都是wwwroot文件夹的一部分 |
| 代码更改后需要重新编译 | 不需要重新编译,刷新浏览器即可。 |
ASP.NET和ASP.NET Core的相似性:
| ASP.NET | ASP.NET CORE |
| 支持Entity Framework | 支持Entity Framework Core |
| 支持Asp.Net MVC | 支持Asp.Net MVC Core |
| 有Nuget包支持Asp.Net MVC, WebAPI和其他微软框架 | 主要依赖于Nuget包 |
| 适用于.NetFramework CLR和基类库 | CLR和基类库有新的实现 |
| 支持IIS | 由一个新的HttpModule被叫做ASP.NET CORE Module提供IIS支持 |
| 支持SignalR | 支持SignalR |
| 支持异步编程 | 支持异步编程 |
原文链接:http://www.codedigest.com/posts/18/difference-between-aspnet-and-aspnet-core
比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]的更多相关文章
- ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core
ABP框架简介 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 【ASP.NET Core】在Win 10 的 Linux 子系统中安装 .NET Core
在上一篇文章中,老周扯了一下在 Windows 10 中开启 Linux 子系统,并且进行了一些简单的设置.本篇咱们就往上面安装 .net core . 老周假设你从来没有用过 Linux,所以,接着 ...
- Docker----与Asp.net core 的完美结合,在docker容器中创建Asp.Net Core 项目
在腾讯云上买了一个小容量的服务器,搭建一个docker环境后,可以尝试做一些单系统做起来很麻烦的东西.譬如说,你在windows OS或UbuntuOS中,突然想玩CentOS了,你可以选择将电脑再装 ...
- 《ASP.NET Core In Action》读书笔记系列四 创建ASP.NET Core 应用步骤及相应CLI命令
一般情况下,我们都是从一个模板(template)开始创建应用的(模板:提供构建应用程序所需的基本代码).本节使用 Visual Studio 2017 .ASP.NET Core2.0和 Visua ...
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
项目开发中的一些注意事项以及技巧总结 1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...
- 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2)
前言: 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(65)-MVC WebApi 用户验证 (1) 回顾上一节,我们利用webapi简单的登录并 ...
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限
开发了一个导入TXT文件的功能,执行过程中出错.提示:.....ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限.ASP.NET 有一个在应用程序没有模拟 ...
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...
随机推荐
- windows下,下载pip安装
windows下,下载pip安装 https://pypi.python.org/pypi/pip#downloads 找到source那个压缩文件,下载下来解压. 参考: windows下面安装Py ...
- 语句调优基础知识-set statistics time on
set statistics time on --清空缓存数据 dbcc dropcleanbuffers go --清空缓存计划 dbcc freeproccache go set statisti ...
- EOS智能合约开发(二):EOS创建和管理钱包
上节介绍了EOS智能合约开发之EOS环境搭建及启动节点 那么,节点启动后我们要做的第一件事儿是什么呢?就是我们首先要有账号,但是有账号的前提是什么呢?倒不是先创建账号,而是先要有自己的一组私钥,有了私 ...
- c/c++ allocator 使用
allocator 使用 作用:只开辟空间,不调用构造函数 操作一览表 allocator<T> a 定义一个名为a的allocator对象,它可以为类型为T的对象分配内存 a.alloc ...
- Python爬虫之Urllib库的基本使用
# get请求 import urllib.request response = urllib.request.urlopen("http://www.baidu.com") pr ...
- Python 入门:基本语法
对于多数从其他编程语言转入Python的来说,或多或少会有些不习惯.如果沿用其他编程语言的语法来写Python代码,那么碰壁是不可避免的了. 本文是基于我看了两个小时的官方文档(Python 2.7 ...
- C#基础知识之读取xlsx文件Excel2007
读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已. 具体代码实例: public static DataTable GetExcelT ...
- JavaScript getFullYear() 方法
JavaScript Date 对象 定义和用法 getFullYear() 方法可返回一个表示年份的 4 位数字. 语法 dateObject.getFullYear() 返回值 当 dateObj ...
- flask的migrate
https://blog.csdn.net/kevin_qq/article/details/51777190 这个方法可以: https://www.cnblogs.com/caicairui/p/ ...
- Linux 内核学习经验总结
Linux 内核学习经验总结 学习内核,每个人都有自己的学习方法,仁者见仁智者见智.以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下. 内核学习,一偏之见:疏漏难 ...