《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#语言的各种 ...
随机推荐
- rem实现移动端自适应页面
一.把px转换成rem方案 1.cssrem插件 2.css预处理器 3.rem-unit插件 4.px2rem插件 rem就是相对于根元素的font-size来做计算,设置好根结点字体大小,子节点用 ...
- 微信小程序做radio,可以拖动进度条
很简单的一个音乐播放器 data:{ src: 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4a ...
- [PKUSC2018]星际穿越
[PKUSC2018]星际穿越 题目大意: 有一排编号为\(1\sim n\)的\(n(n\le3\times10^5)\)个点,第\(i(i\ge 2)\)个点与\([l_i,i-1]\)之间所有点 ...
- XII Open Cup named after E.V. Pankratiev. GP of Eastern Europe (AMPPZ-2012)
A. Automat $m$超过$1600$是没用的. 从后往前考虑,设$f[i][j][k]$表示考虑$[i,n]$这些物品,一共花费$j$元钱,买了$k$个物品的最大收益. 时间复杂度$O(n^5 ...
- SDOI2018:原题识别
题解: https://files.cnblogs.com/files/clrs97/old-solution.pdf Code: #include<cstdio> #include< ...
- eclipse设置properties文件的字体颜色
点击Window->preferences->搜素properties ============================ 其它设置字体颜色设置 =========== ...
- if-else案例–开关灯
首先,创建一个html页面,添加一个div盒子,用css设置相应的样式,用js获取盒子的元素,通过点击事件,设置body的背景颜色,用if..else来判断当什么状态设置相应的颜色,(swith... ...
- matplotlib 三维旋转
# 当elevation=0时,视角为沿x1负方向看,当elevation=90时,视角沿x3负方向看.# 当azimuth=0时,视角为沿x1负方向看,当azimuth=90时,视角沿x2负方向看. ...
- KeepAlive安装指南
https://blog.csdn.net/yelllowcong/article/details/78764780
- Mybatis异常--There is no getter for property named 'XXX' in 'class java.lang.String'
第一种 在service层加@Param(value="ip") void deleteIpsetup(@Param(value="ip")String ip) ...