《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应用程序都将遵循类似的基本配置设计,如基础库那样,但总的来说框架是灵活的,您可以*定义自己的代码约定。
谢谢大家的阅读,如果期待我更继续更新本系统,请点一下推荐!我的博客地址:http://www.cnblogs.com/volcanocloud/
推荐阅读
-
浅谈如何在ASP.NET Core中实现一个基础的身份认证
-
在ASP.NET Core中实现一个Token base的身份认证实例
-
ASP.NET Core依赖注入系列教程之服务的注册与提供
-
asp.net core 一个中小型项目实战的起手式——Swagger配置
-
创建基于ASP.NET core 3.1 的RazorPagesMovie项目(一)-创建和使用默认的模板
-
ASP.NET Core 2.2 WebApi 系列【三】AutoFac 仓储接口的依赖注入
-
一步步完成“迷你版” 的ASP.NET Core框架
-
或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧
-
(11)ASP.NET Core 中的配置一(Configuration)
-
c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法