《ASP.NET Core In Action》读书笔记系列一 ASP.NET Core 的诞生
最近打算系统学习一下asp.net core ,苦于没有好的中文书藉,只好找来一本英文的 《ASP.NET Core In Action》学习。我和多数人一样,学习英文会明显慢于中文。希望与我相同情况的人避免这样的低效,决定把书重要的部分提取出来分享给大家。
ASP.NET Core是微软ASP.NET Web框架的最新版本。于2016年6月发布,相比之前ASP.NET有很多增量更新。 ASP.NET Core通过进行重大的体系结构调整来提高开发人员的工作效率和向后兼容性。重新设计Web框架和构建方式。 ASP.NET Core很多功能来至之前ASP.NET,但它是一个新的框架,整个技术堆栈全被重写,包括Web框架和底层平台。 与其他现代框架相比,它有更新的定位和目标。同时保留以前ASP. NET 的优点。
ASP.NET的优点和局限性
要知道微软决定构建新框架的原因,我们得了解现有ASP.NET Web框架的优点和局限性。
ASP.NET的第一个版本于2002年作为.NET Framework 1.0的一部分发布。相比当时传统的ASP和PHP,ASP.NET Web Forms允许开发人员使用图形设计器、简单的像Windows应用中的事件模型快速创建Web应用程序。但随着时间的推移,web开发生态发生很大的改变。ASP.NET Web Form 遇到了许多问题,尤其是在构建大型的应用程序时,缺乏可测试性,复杂的有状态模型以及对生成复杂的HTML使得客户端开发变得异常困难,这些导致开发人员选择了别的开发平台。为了扭转这种局面,微软于2009年发布了第一版的ASP.NET MVC,它基于MVC模式(模型 - 视图 - 控制器),这种Web设计模式广泛用于Ruby on Rails,Django和Java Spring等框架。它允许UI元素与应用逻辑分离,易于测试,并提供能控制HTML生成过程的能力。ASP.NET MVC自首次发布以来已经进行了四次迭代,但它们都建立在由System .Web.dll库提供的底层框架上,该库是.NET Framework的一部分,包含了ASP.NET在构建web 应用时的所有核心代码,因此它依赖于Windows。这种依赖性既带来了优点又带来了缺点。一方面,ASP.NET框架是一个经过实战考验的可靠平台,是在Windows上构建现代应用程序的绝佳选择。它提供的众多的功能已经多年运用于web应用系统,这是从事windwos web 应用开发人员所熟知的。另一方面,这种依赖性导致它更新速度很慢,至多只能第每年发布一次,因为对System.Web.dll的修改涉及到了NET Framework 。另外它Windows Web主机Internet信息服务(IIS)的耦合,阻止了它在非Windows平台上的使用。
近年来,许多Web开发人员开始关注跨平台Web应用,可以在Windows、Linux和macOS运行的框架。同时,微软也感觉到,是时候创建一个不再依赖于Windows的框架了,于是ASP.NET Core诞生了。
什么是ASP.NET Core?
ASP.NET Core的四个主要目标:
1、跨平台运行和开发;
2、采用模块化架构,便于维护;
3、完全开源;
4、适应当前Web开发趋势,例如:客户端应用程序和部署到云环境;
为了实现这些目标,Microsoft需要一个可以提供 ,用于创建List(列表)和dictionaries(词典)等基本对象,以及执行简单的文件操作的底层库的平台。到目前为止,ASP.NET开发一直专注于,依赖于Windows专用的.NET Framework。对于ASP.NET Core,它是Microsoft创建的一个在Windows上运行的轻量级平台,Linux和macOS称之为.NET Core,如下图所示。
.NET Core与.NET Framework共享许多相同的API,但它更小,目前只实现了.NET Framework提供的功能的一个子集,它提供更简单的实现和编程模型的目标,是一个全新的平台,而不是.NET Framework的分支,尽管它们使用许多相似的API代码。
仅使用.NET Core,就可以构建运行跨平台的控制台应用程序。 微软创建了ASP.NET Core作为控制台之上的附加层应用程序,例如:将控制台应用程序转换为Web应用程序涉及添加的库。如下图所示:
最上面的 .NET Core console 可以运行在 ASP.NET Core web Server中,微软提供了一个跨平台的默认实现--Kestrel, web application 逻辑层在Kestrel中运行, 通过添加相应的类库来增加应用的功能,比如:日志记录(Logging)、Html 生成。
ASP.NET Core由许多小型库组成,可以根据应用的需要添加相应的库,很少有应用会用到所有的可用库。有一些常用的库,几乎会出现在每个应用程序中,例如:读取应用程序 配置文件、日志记录。其他类库可建立在这些基础库之上,例如第三方提供的通过Facebook或Google登录的库。在ASP.NET Core中使用的大多数库都可以在GitHub上(https://github.com/aspnet)找到。例如Kestrel Web Server和日志库、例如第三方认证库以及更多的外围库。所有ASP.NET Core应用程序都将遵循类似的基本配置设计,如基础库那样,但总的来说框架是灵活的,您可以自由定义自己的代码约定。
谢谢你的阅读,下节见!如果期待本系列,请点一下推荐!
《ASP.NET Core In Action》读书笔记系列一 ASP.NET Core 的诞生的更多相关文章
- 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?
在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...
- asp.net MVC4 框架揭秘 读书笔记系列3
IIS/ASP.net管道 本节全部用图形表示便于理解和记忆 1.3.1 IIS5.x与asp.net 1.3.2 IIS 6.0与asp.net 1.3.3 IIS7.0与asp.net 基于IIS ...
- 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1
创建好项目后,解决方案资源管理器窗口里我们看到,增加了不少文件夹及文件,如下图所示: 在解决方案文件夹中,找到项目文件夹,该文件夹又包含五个子文件夹 -Models.Controllers.Views ...
- 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core
ASP.NET Core 能用于什么样的应用 ASP.NET Core 可以用作传统的web服务.RESTful服务.远程过程调用(RPC)服务.微服务,这归功于它的跨平台支持和轻量级设计.如下图所示 ...
- asp.net MVC4 框架揭秘 读书笔记系列2
1.2 MVC 变体 MVC 是一种Pattern 另外一种说法是ParaDigm 范例 模式和范例的区别在于前者可以应用到具体的应用上,而后者则仅仅提供一些指导方针 1.2.1 MVP Model ...
- asp.net MVC4 框架揭秘 读书笔记系列1
1.1 传统MVC 名词解释 Autonomous View. AV. 自制视图 GUI图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式 ...
- 《ASP.NET Core In Action》读书笔记系列,这是一个手把手的从零开始的教学系列目录
最近打算系统学习一下asp.net core ,苦于没有好的中文书藉,只好找来一本英文的 <ASP.NET Core In Action>学习.我和多数人一样,学习英文会明显慢于中文.希 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
随机推荐
- vscode断点调试本地客户端文件
一.安装chrome,安装vscode,打开vscode编辑器,安装插件Debugger for Chrome 二.新建文件 1.目录结构 . ├── index.html ├── index.js ...
- day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告
一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...
- 07_ for 练习 _ sumOfOdd
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 根据屏幕自适应宽度:@media
@media screen and (min-width: 1490px){ .w1224{ width: 1400px !important; }}@media screen and (max-wi ...
- git开发过程中的使用流程
001.创建仓库 002.新建项目 003.初始化仓库 这一步不需要做 git init : 文件夹中会多出一个隐藏的.git文件 004.克隆项目 git clone <项目地址> 0 ...
- 为ivew的Page组件的跳页增加跳页确定按钮
首次使用vue做后台管理项目,首次使用ivew框架,好不容易所有的功能都做完了,前几天产品经理让在每个列表的跳页后面加个‘确定’按钮,说没有确定按钮有点反人类,心想那还不分分钟的事儿嘛,立马回个‘好的 ...
- js取整数、取余数
js取整数.取余数 取整 1.取整 // 丢弃小数部分,保留整数部分 parseInt(5/2) // 2 2.向上取整 // 向上取整,有小数就整数部分加1 Math.ceil(5/2) // 3 ...
- direction: rtl;
这个属性,有点无语,费了点时间. <style type="text/css"> .hao {direction: rtl;}</style> <se ...
- oo第二次总结
第五次作业 度量分析 因为第五次作业是在第三次作业的基础上改的,所以出现了与第三次作业一样的问题,即圈复杂度超标和嵌套现象严重.同时,由于对多线程的不熟悉,将一些功能集中的放入了一个类里,这也是McC ...
- html实现调用jar包
整体思路:html引用URL protocol-本地注册表key,key对应某一c#写的exe可执行文件,由exe可执行文件调用cmd,cmd执行jar包. 1.添加注册表: Windows Regi ...