1、.NET Framework 与 .NET Core区别
1、ASP.NET Core (.NET Core)
使用.Net Core运行时的ASP.NET Core可以支持跨平台(Windows, Mac, and Linux (包括Docker)),服务器不需要安装.Net Core,它的依赖与应用程序捆绑在一起。而且它是高性能的开源的框架。它能够在您自己的进程中托管IIS,Nginx,Apache,Docker或自托管。ASP.NET Core完全作为NuGet包发布。这允许您优化您的应用程序,使其仅包含必要的NuGet包。实际上,面向.NET Core的ASP.NET Core 2.x应用程序只需要一个NuGet包。应用程序表面积较小的好处,可以有更严格的安全性,更少的服务和更高的性能。可以使用 Kestrel web server。可以使用Visual Studio Code写代码。它现在还不支持Aspx, WPF, WCF and WebServices。它内置依赖注入的支持。可以使用coreclr,它是带有.net core的asp.net核心的运行时。
2、ASP.NET Core (.NET Framework)
使用.NET Framework运行时的ASP.NET Core可以支持桌面应用,也可以说是完整版。但这些应用程序只能在Windows上运行,但有关ASP.NET Core的其他所有内容的行为方式都相同。另一方面,.Net框架在2005年之前就开始了,它不断添加新功能,使其成为一个复杂的框架和更重的框架。它不是跨平台的。它支持Aspx,WPF,WCF和WebServices。
根据以往的测试数据,两者都将具有比ASP.NET 4.6更高的性能,但.NET Core目前是最高的:
- ASP.NET 4.6: <50k req/sec
- ASP.NET Core (CLR): 400k req/sec
- ASP.NET Core (.NET Core, Linux): 900k req/sec
- ASP.NET Core (.NET Core, Windows): >1.1m req/sec
3、.Net Framework运行图
4、.Net core运行图
5、.NET生态系统图:
- Xamarin:无庸置疑,当您想使用C#构建移动(iOS,Android和Windows Mobile)应用程序时,Xamarin是您唯一的选择。
- .NET Framework:支持Windows和Web应用程序。今天,您可以使用Windows窗体,WPF和UWP在.NET Framework中构建Windows应用程序。ASP.NET MVC用于在.NET Framework中构建Web应用程序。
- .NET Core:是一种新的开源和跨平台框架,用于为包括Windows,Mac和Linux在内的所有操作系统构建应用程序。.NET Core仅支持UWP和ASP.NET Core。UWP用于构建Windows 10目标Windows和移动应用程序。ASP.NET Core用于构建基于浏览器的Web应用程序。
我们应该选择哪一个平台:
在未来一年左右,可能你根本不想选择.NET Framework。 目前来讲:.NET Framework是一个更好的选择**:**
- 没有时间学习新技术。
- 需要一个稳定的工作环境。
- 有近斯发版计划。
- 已经在处理现有应用并扩展其功能。
- 已经拥有一支具有.NET专业知识和构建生产就绪软件的现有团队。
- 不想处理持续的升级和更改。
- 使用Windows窗体或WPF构建Windows客户端应用程序
.NET Core是一个更好的选择**:**
- 想要在Windows,Linux和Mac操作系统上定位您的应用程序。
- 不怕学习新事物。
- .NET Core尚未完全成熟,不害怕出现问题和修复问题。
- 一个刚刚学习.NET的学生。
- 喜欢开源。
下面也许帮助做决定:
需要高性能稳定没有UI界面 | .NET Core性能更好 |
---|---|
支持Docker容器 | 都支持,但.NET Core支持的可能更好。 |
命令行上的大量回复 | .NET Core支持得更好 |
有跨平台的需求 | .NET Core |
使用微服务 | 都支持,但.NET Core是为当下需求而设计的。 |
以用户界面为中心的Web应用程序 | 在.NET Core赶上之前,.NET Framework是更好的。 |
使用Windows窗体和WPF的Windows客户端应用程序 | .NET Framework |
已经有预先配置的环境和系统 | .NET Framework更好 |
需要马上构建布署稳定的版本 | .NET Framework更成熟 |
存在经验丰富的.Net团队 | .NET Core有一个学习的曲线。 |
时间不是问题。时间是可以接受的。不急于部署。 | .NET Core 是 .NET的未来。 |
1,. net是微软很多年前开发的一套用于Windows平台的框架,他跳过了直接对Windows api的调用,实现Windows编程。后期Windows已经集成了. net。而这个. net的全称就叫. net framework
2,微软当初希望. net framework可以跨平台,但是因为. net framework高度依赖Windows api,所以最终没有达到微软的期望,于是重新开发了. net core,一个真正可以跨平台的框架。
3,从. net core 3版本开始,本来应该是要迭代到版本4的,但是微软改名部认为4不好听,并且和现在.net framework 4(简称.net 4)的名称近似,容易让人混淆,所以直接毙掉.net framework的开发,并且. net core也跳过版本4的命名,直接成为.net5。并且宣布以后只有一个.net。
4,所以以后就只有. net,没有core也没有framework。
2、.NET Core与ASP.NET Core区别
1、.NET Core简介
.NET Core是适用于 windows、linux 和 macos 操作系统的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台 (Windows、Mac OSX、Linux) 能力的应用程序开发框架 (Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台,也是微软在一开始发展时就开源的软件平台 [1]2、ASP.NET Core简介
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core,您可以:- 创建 Web 应用程序和服务、IoT 应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .NET Core 或 .NET Framework 上运行。
3、.NET Core和ASP.NET Core区别
1).NET Core是运行时。它可以执行为其构建的应用程序。ASP.NET Core是构成一个用于构建Web应用程序的框架的库的集合。ASP.NET Core库可以在.NET Core和“完整.NET Framework”(Windows附带许多年)上使用。 2)使用.NET Core的 ASP.NET CORE-所有依赖项都是自包含的,可以使用大多数Nuget包,不能使用Windows特定的包,可以在Windows,Linux,Mac上执行 3)使用.NET Framework的 ASP.NET CORE-大多数依赖项都是自包含的,仅在Windows上执行,将有权访问Windows特定的Nuget软件包,需要在计算机上安装有针对性的.NET Framework版本。 微软在推出来.net core的同时为了方便一些原有的项目可以方便迁移,同时推出了Asp.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%.
3、ASP.NET 5与.NET Core区别
1、ASP.NET 5(ASP.NET Core 1.0)
ASP.NET 5是下一代ASP.NET,它为Web和云场景提供了熟悉的现代框架。它包括ASP.NET MVC的下一个版本,Web API,Web页面和SignalR。它是一种高性能和模块化设计,并且支持完全并行,可以无缝地从内部迁移到云。这些产品由ASP.NET团队与开源开发人员社区合作开发。我们一起致力于为Web开发创建最佳平台。ASP.NET 5重命名为ASP.Net Core 1.0。
2、.NET Core
.NET Core是小型优化运行时,是ASP.NET Core的基础。它目前在Windows,Linux和Mac上运行。它是一种高性能和模块化设计,支持在Web服务器上拥有多个应用程序,每个应用程序都有自己的.NET Core运行时副本,可以实现完整的并排体验,并且可以轻松采用新版。 .NET Core版本不会影响其他应用程序,这使得.NET Core架构从当前的经典.NET 4.6跃升。这些产品由.NET团队积极开发,并与开源开发人员社区合作。我们一起致力于通过新功能和新方案改进和扩展.NET平台。
.NET Core有两个主要组件。它包括一个与.NET Framework CLR相同的代码库构建的小型运行时。.NET Core运行时包含相同的GC和JIT(RyuJIT),但不包括应用程序域或代码访问安全性等功能。运行时通过Microsoft.Core CLR包在NuGet上提供。
.NET Core还包括基类库。这些库与.NET Framework类库的代码大致相同,但已经考虑(删除依赖项)以使我们能够发布一组较小的库。这些库在NuGet.org上作为System.* NuGet包提供。
4、ASP.NET Core与ASP.NET区别
1、ASP.NET Core(ASP.NET Core 简介)
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。2、ASP.NET(ASP.NET 简介)
ASP.NET 是一个成熟的框架,提供在 Windows 上生成基于服务器的企业级 Web 应用所需的所有服务。3、ASP.NET Core与ASP.NET对比:
ASP.NET Core | ASP.NET |
---|---|
针对 Windows、macOS 或 Linux 进行生成 | 针对 Windows 进行生成 |
Razor 页面 是在 ASP.NET Core 2.x 及更高版本中创建 Web UI 时建议使用的方法。 另请参阅 MVCWeb API 和 SignalR。 | 使用 Web 窗体、SignalR、MVC、Web API、WebHooks 或网页 |
每个计算机多个版本 | 每个计算机一个版本 |
使用 C# 或 F# 通过 Visual Studio、Visual Studio for Mac 或 Visual Studio Code 进行开发 | 使用 C#、VB 或 F# 通过 Visual Studio 进行开发 |
比 ASP.NET 性能更高 | 良好的性能 |
选择 .NET Framework 或 .NET Core 运行时 | 使用 .NET Framework 运行时 |
比上面的表格可以看出,ASP.NET Core比ASP.NET有更高的性能,并且ASP.NET Core支持跨平台,开发工具也有更多的选择。要想未来从事.NET开发或现在已经是.NET程序员,我们应该考虑要开始学一下.NET Core了。它应该是未来的发展方向。
ASP.NET Core是一个跨平台,高性能的开源框架,用于开发更加符合现代现代思想的Web应用程序,更符合互联网平台,而且它让基于“云”的开发方式更加简单。
ASP.NET Core是基于ASP.NET 4.x 系列的重新设计的。出于这个原因,它最初称为ASP.NET 5,但后来重命名为ASP.NET Core 1.0。
ASP.NET Core 完全由现有的ASP.NET 4.x重写,其架构更改使其更具模块化,可扩展,开源,轻量级,高性能和跨平台的Web框架。
5、ASP.NET和ADO.NET区别
asp.net与ado.net主要在框架、技术、交互、方式4个方面有区别,具体的区别如下:1、框架不同:
asp.net是微软公司的.Net技术框架下的B/S(网页方向)框架技术。 ado.net则是由asp.net编程语言编写的数据访问层的总括.。2、技术不同:
asp.net是用来编写动态网页。 ado.net是用来进行数据交换的技术。3、交互不同:
asp.net是微软在.net Framework提供的,用于开发web应用程序的类库,封装在System.Web.dll中,对应程序中是System.Web这个命名空间。 ado.net对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。ado.neet类在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。4、方式不同:
ASP.NET是一种开发技术。 ADO.NET只是一种访问数据库的方式。 1.ADO.net它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持。Asp.net是动态服务器页面,用户可以和他进行交互,经常通过ADO.net读取和更新数据。 2.ASP.NET是建立在公共语言运行库上的编程框架,可用于在服务器上生成 Web 应用程序。ADO.NET是一种基于标准的程序设计模型,可以用来创建分布式应用以实现数据共享。 3.ASP.NET可以看成是.NET的一部分,可以用于动态网站制作的一项技术,当然也可以作项目。ADO.NET是.NET Framework中的一套类库,看作一个文件夹吧,里面的文件就是那些能够访问数据库的类。 4.ASP.NET是微软在.net Framework提供的,用于开发web应用程序的类库,封装在System.Web.dll中,对应程序中是System.Web这个命名空间。ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。 5.ado.net是数据库的一种访问方式,不能与asp.net相提并论,asp.net是基于.NetFramdwork 的网站开发技术。在数据库访问主要使用ADO.NET方式,主要表现对象为:DataSet 内存加载数据方式。6、ADO与ADO.NET 的区别
ADO与ADO.NET 都是一种数据库访问的方式,都是从最基本的Connection(连接)对象开始的,可以说ADO.NET是ADO的一种改进版,在ADO的基础之上ADO.NET 统一了数据容器类编程接口,无论你打算用哪种编写哪种应用程序,都可以通过同一组类来处理数据 。
在ADO的基础上,ADO.NET做了很多的改进,以下是它们区别:
1、对象不同:
ADO使用的是OLEDB接口并基于微软的COM技术,而ADO.NET有自己的ADO.NET接口并且基于微软的.NET体系架构。
2、存储对象不同:
ADO以Recordset记录集形式进行存放,ADO.NET是以DateSet数据集形式进行存放。记录集看起来更像一个单表,如果要让Recordset以多表的方式就必须在SQL中进行多表连接,反之,数据集是一个或多个表的集合,它就相当于是内存中的一个数据库,数据库内存放的是DataTable对象,也就是我们平时所说的表。
3、连接方式不同:
ADO在与数据库连接后,会一直保持连接,直到断开(为连接而设计)。而ADO.NET读取完所需要数据之后,会自动断开连接。当需要更新数据时,会再次连接。也就是说ADO.NET读取数据库中的数据有两种方式:一种是基于在线的连接方式,一种是基于离线的非连接方式。为什么会有这两种方式呢?我想主要是由于ADO.NET 取消了以往的Recordset 对象,而采用DataSet的缘故吧。
Dataset,它相当于是内存中的一个数据库,它是不依赖与数据库的独立数据集合,所谓独立就是说,即使是断开数据链路或者是关闭数据库,它仍然是可以使用的。Dataset内部是用XML(可扩展标记语言)来描述数据的。在访问数据的时候,ADO.NET会利用XML制作数据的一份副本,也就是说只有在这段时间内是需要在线的。而在ADO中,xml只不过是一种输入和输出格式。
此外:由于Dataset内部是用XML(可扩展标记语言)格式来描述数据的,所以ADO.NET对数据类型没有限制。而Com技术要求使用的数据类型必须是符合Com规范,所以ADO对数据类型有限制要求。
7、Asp.net MVC 与 Asp.net Web API 区别
在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一下简单的AJAX请求,那么为何微软又推出Web API这么个东西呢?接下来我们来比较一下。二者(Asp.net MVC 与 Asp.net Web Api)何时用?
1、Asp.net MVC 是用来创建返回视图(Views)与数据的Web应用,而Asp.net Web API是一种简单轻松地成熟的HTTP服务,它只返回数据,不返回视图(Views)。
2、Asp.net Web API可以通过.Net Framework来帮助我们构建REST-ful服务,而且他支持内容协商(根据客户端能接受的格式要求,返回相应的JSON,XML,ATOM),同时Asp.net Web API支持自我宿主(self-hosting),而MVC并不支持(只能宿主在IIS中)。
3、Asp.net Web API可以返回特定的数据类型,比如JSON,XML,或者其他在请求头中定义的数据格式。而MVC只能利用Json Result返回JSON数据类型。
4、Asp.net Web API 根据HTTP 谓语动词来映射Action,但MVC只是映射 Action 名称。
5、Asp.net Web API 一种全新的框架,它是Asp.net Framework 核心库的一部分。在Asp.net Web API 一些存在MVC中的特征(model binding、filters、路由)是存在System.Web.Http程序集中,而MVC是存在System.Web.Mvc中。因此,Web API 可以和Asp.net一起使用,也可以做独立的服务层。
6、如果在一个项目中融合Web API和MVC controller,用于处理复杂AJAX请求,这些请求可能返回JSON,XML或者其他数据格式。这就是Web API 自我宿主(Web API self-hosting)。
7、如果融合MVC和Web API 控制器(controller),而且需要集成认证,这时,需要创建两个过滤器(Filters),一个MVC的,另一个Web API的,因为他们两个是不相同的。
8、总之,WebApi在提供数据方面,是比MVC更加轻量的架构。
MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据
Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式
Web API支持Self Host,MVC目前不支持
Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作
Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同
Web API非常适合构建移动客户端服务
8、ASP.NET和ASP区别
ASP与ASP.NET是Microsoft公司在Web应用程序开发上的两项重要技术。
ASP(Active Server Pages)
是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。ASP优势在于:
- 运用ASP可以将VBscript、javascript等脚本语言嵌入到HTML中,便可以快速完成网站的英语程序,无需编译,可在服务器端直接执行。
- 容易编写,可使用普通的文本编辑器编写,如记事本就可以完成
- 由脚本在服务器上而不是客户端运行,用户端的浏览器不需要提供任何别的支持,这样大大提高了用户与服务器之间的交互速度。
- 通过内置的组件实现更加强大的功能,如使用ADO可以轻松的访问数据库。
ASP的不足在于:
- 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
- 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
- 弱类型造成潜在的出错可能:只支持两种非类型的语言:VBScript和JavaScript,尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
- 功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP。
- 缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
ASP.NET
它不是ASP的简单升级,它不仅吸收了ASP的技术的优点并改正了ASP中的某些错误,更重要的是,它借鉴了java,VB语言的开发优势,从而成为Microsoft推出的新一代Active Server pages。成为全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。其中全新的技术架构会让编程工作变得简单。
ASP.NET优势在于(也是与ASP的区别):
- 支持强类型语言.如C#、VB等二十多种语言来直接开发网页。
- 页面将被编译而不是解释,执行一次以后就无需再次编译,这样它们的执行速度就比ASP页快,增加了安全性和可靠性。
- 提供声明性服务器控件,减少代码行数。
- 使用了面向对象的设计来实现的,把界面设计和程序设计以不同的文件分离开,所以可以通过继承机制支持代码重用。
- 具有Trace的内置方法,可以帮助对页面进行调试。
- 在ASP.NET中,置于应用程序的BIN目录中的任何组件将自动对应用程序可用,无需注册组件.
其劣势在于:
安全性:ASP.NET运行于IIS之上,这是个曾无数次遭受攻击的系统
总结
Asp.net是在Asp的基础上发展出来的,解决了ASP内包含的一些不足之处,并发展了一些新的功能,所以Asp.net具有着相对于ASP强大的优越性。
ASP与ASP.NET区别如下: (1)开发语言不同:ASP的开发语言仅局限于使用non-type脚本语言,给客户端脚本添加代码和给页面添加ASP代码的方法是一样的。 ASP.NET的开发语言更为广泛,可以使用符合.NET Framework规范的任何一种功能完善的strongly-type编程语言(比如Visual Basic、C#)。 (2)运行机制不同:ASP是解释型的编程框架,因没有事先编译,而是一边解释一边执行,故而页面的执行效率相对比较低。ASP.NET是编译型的编程框架,服务器上运行的是已经编译好的代码,因此可以利用早期绑定来实时编译,进而提高执行效率。 (3)运行环境不同:ASP的运行环境是Windows操作系统及IIS。ASP.NET的运行环境除了Windows操作系统及IIS,还需要安装.NET Framework。 (4)开发方式不同:ASP将用户界面层和应用程序逻辑层的代码混合写在一起,因此在维护和重用方面比较困难。ASP.NET将用户界面层和应用程序逻辑层的代码分离开,程序的复用性和维护性都得到了提高。 (5)诞生的时间不同:1996年11月,Microsfot公司推出了ASP(Active Server Pages)技术。2002年01月,Microsfot公司推出了ASP.NET技术。