《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#语言的各种 ...
随机推荐
- tap穿透之zepto的bug
一.什么是zepto tap事件穿透?tap事件穿透就是,页面和弹框上都有绑定点击事件,最上层的弹框绑定了tap事件,下层的页面绑定了click事件,在执行完上层事件后会紧接着触发下层事件,进而出现事 ...
- (二)文档请求不同源之location.hash跨域
一.基本原理 用location.hash解决域名完全不同的跨域,例如,http://www.baidu.com#helloworld中的"#helloworld"就是locati ...
- The Apache HBase™ Reference Guide
以下内容由http://hbase.apache.org/book.html#getting_started节选并改编而来. 运行环境:hadoop-1.0.4,hbase-0.94.22,jdk1. ...
- 网易im即时通讯 移动端嵌入web
近期产品需求要在wapapp 内部嵌入网易im聊天客服功能,内部需求不是很多,不过还是第一次接触,有点抓耳,,, 希望召集更多大神交流878269930 增加用户默认发送自定义消息功能:
- jmeter 使用问题
问题1:导入脚本失败,提示 解决:没有安装JMemter plugins manager插件,具体安装参考http://www.cnblogs.com/cxx1/p/7883820.html,第二步.
- React(四)组件生命周期
组件的生命周期可分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM 生命周期的方法有: componentWillMoun ...
- Web API Request Content多次读取
使用自宿主OWIN 项目中要做日志过滤器 新建类ApiLogAttribute 继承ActionFilterAttribute ApiLogAttribute : ActionFilterAttri ...
- javascript原型模式概念解读
原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象.对于原型模式,可以利用JavaScript特有的原型继承特性去创建对象的方式,真正的原型继承是作为最新 ...
- SM3杂凑算法Python语言实现——第三部分
SM3杂凑算法实现--第三部分 一.SM3 密码概述 我们首先把需要用到的算法呈现出来,最后我们再考虑如何集合为一个库的方法,这一部分我们就开始编写一个新的算法:国家商用密码标准SM3密 ...
- iconfont在线链接使用方法(转)
原文:https://blog.csdn.net/jinkingliao/article/details/51353937 基础流程就不多赘述,直接到http://www.iconfont.cn/官网 ...