《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#语言的各种 ...
随机推荐
- visual studio的包含目录配置问题
早上将一个项目从debug x64修改到release x64,然后包含目录都是直接从debug拷贝过来的,一模一样的路径,一直说无法include,并且路径中的文件都是存在的,配置页面的releas ...
- 16重新安装HA0.63
2018-02-24 14:17:46 https://home-assistant.io/docs/installation/raspberry-pi/首先安装2017-11-29-raspbian ...
- lstm bptt推导
深蓝 nlp 180429这个有详细的讲解
- (85)Wangdao.com第十八天_JavaScript NodeList 接口,HTMLCollection 接口
NodeList 接口 HTMLCollection 接口 节点都是单个对象,有时需要一种数据结构,能够容纳多个节点 DOM 提供两种节点集合,用于容纳多个节点:NodeList 和 H ...
- python函数详解
''' 函数:是一段可以重复调用的代码,通过输入的参数,返回对应的结果 名字绑定的机制,把实际参数的值与形式参数的值绑定到一起 1.函数调用的时候,实际参数的值的顺序与形式参数的顺序一一对应 2.当在 ...
- python语法_str_eval
dict1 = {} a = str(dict1) type(a) = 字符串 b = eval(a) type(b) = 字典
- chrome浏览器上传图片反应很慢,延迟很久才弹出窗口
chrome浏览器上传图片反应很慢,延迟很久才弹出窗口 一个上传图片的控件,点击按钮上传图片,用chrome(谷歌浏览器)时,点击按钮后,要等好几秒才弹出文件选择窗口 可以试一下,把网络断开,这个问题 ...
- 新人上手:如何做好一个App的推广?
App推广是现在所有公司都绕不开的槛,而一般App推广又分为线上线下两个方面,其中,App线上推广是互联网时代运营人员接触最多的一种推广方式.一款App应用推广的最终目的是为了吸引目标用户,为推销的产 ...
- 第八周 ip通信基础回顾
安装完华三模拟器,拖多台设备到工作区,全部启动及配置,建立好拓扑图,之后启动命令行终端. 配置登录用户,口令的指令有: <H3C> //用户直行 ...
- Windows下使用TeamViewer连接远程服务器,以及解决“远程桌面关闭后TeamViewer不能连接”的问题
1.本地安装TeamViewer,完成后如下: 2.远程服务器也安装TeamViewer 在本地TeamViewer中得伙伴ID,输入远程的ID,弹出如下对话框,输入密码即可. 3.这时虽然可以连接, ...