《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core
ASP.NET Core 能用于什么样的应用
ASP.NET Core 可以用作传统的web服务、RESTful服务、远程过程调用(RPC)服务、微服务,这归功于它的跨平台支持和轻量级设计。如下图所示:

什么时候选择ASP.NET Core
这个问题需要从三个方面来讨论。
1、刚学习.NET的开发人员
如果您是.NET开发新手并正在考虑使用ASP.NET Core,那么欢迎您! 微软正在推动ASP.NET Core作为Web开发初学者的一个有吸引力的选择,与其他跨平台Web框架相比,它具有如下的优势:
a、它是一个现代的,高性能的开源Web框架;
b、它使用熟悉的设计模式和范式;
c、C#是一种很棒的语言(如果你愿意,你可以使用VB.NET或F#);
d、您可以在任何平台上构建和运行(跨平台);
ASP.NET Core是对ASP.NET框架的重构,在新的.NET Core平台之上,使用了现代软件设计原理。虽然它是一个全新的平台,但.NET Core是从已经使用了十多年,获得了巨大的成功的,成熟、稳定、可靠的.NET框架重构而来,选择ASP.NET Core和.NET Core,您将获得可靠的平台以及功能齐全的Web框架。当前流行的许多Web框架都使用类似设计模式,这各ASP.NET Core没有什么不同。例如,众所周知的Ruby on Rails,它使用模型 - 视图 - 控制器(MVC)模式; Node.js,它使用管道处理请求;存在于各种各样的框架中的依赖注入。如果熟悉这些技术,学习ASP.NET Core是件很容易的事;如果不熟悉,也没关系,ASP.NET Core带你体验这些技术的最佳实践!
2、你是一个.NET开发人员,准备创建一个新项目
如果您是.NET开发人员,那么选择ASP.NET Core只是时间问题。 虽然微软承诺继续支持老版的ASP.NET框架,但很明显他们的重心在新的ASP.NET Core框架。 从长远来看,如果你愿意使用新的特性和功能,ASP.NET Core是你必然的选择。
ASP.NET Core是否适合您,很大程度上取决于您的需求和之前ASP.NET框架的体验。 跟ASP.NET框架相比,ASP.NET Core具有如下优势:
a、跨平台开发和部署;
b、高性能;
c、简化的托管模型;
d、更短的迭代和开发周期;
e、开源;
f、模块化设计;
如果您在应用中没有使用任何特定于Windows的组件,例如注册表。那么跨平台构建和部署应用程序的能力将为你打开一个进入全新的应用程序大门:它可以利用更便宜的Linux 虚拟主机,托管在云端,使用Docker容器进行可复用的持续集成,或者在Mac上编写.NET代码而无需运行Windows虚拟机。
以前的ASP.NET框架的托管模型是一个相对复杂的模型,依靠Windows IIS提供Web服务器进行托管。 在跨平台环境中,不存在这种共生关系,而是使用了另一种托管模型,它将Web应用程序与底层分开。 这促成了微软对Kestrel的开发:一个快速,跨平台的可以运行ASP.NET Core应用的HTTP服务器。下图是ASP.NET 和ASP.NET Core的托管示意图:

为了实现这一点,ASP.NET Core被设计为高度模块化,尽可能减少模块间的耦合。从一个简单的应用程序开始添加需要的库,而不是像以前的从一开始就变得臃肿的ASP.NET应用程序 。在ASP.NET Core应用中,甚至MVC也是一个可选包! 这并不意味着ASP.NET Core缺少了功能; 它仅仅是让你按需添加类库,构造灵活的,轻量的应用。它包含如下重要的组件:
a、用于定义应用程序行为的中间件“管道”(“pipeline”);
b、内建的依赖注入(dependency injection);
c、组合UI(MVC)和API(Web API)基础结构;
d、高度可扩展的配置系统;
e、异步编程;
3、将现有ASP.NET应用程序转换为ASP.NET Core
如果你的应用程序为ASP.NET Web Form 、WCF、SignalR、使用了很多ASP.NET MVC高级功能的应用,那么,不建议你将其转换为ASP.NET Core 应用。因为这些类型应用的很多特性,在ASP.NET Core 不被支持。(SignalR将在新版本中支持),如果你的应用是轻量的ASP.NET MVC应用或者你打算重新创建一个新应用时,建议使用ASP.NET Core;
谢谢你的阅读,下节见!如果期待本系列,请点一下推荐!
《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择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 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#语言的各种 ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(II)
http://blog.csdn.net/jinshengtao/article/details/17954427 <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(I)
http://blog.csdn.net/jinshengtao/article/details/17883075/ <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- 读书笔记系列01-《收获、不止Oracle》
读书笔记系列01-<收获.不止Oracle> 最近计划将看过的Oracle书籍依次系统的总结下读书笔记. 这本书是我个人觉得写的最有趣的Oracle书籍,也是我接触Oracle后第一本完全 ...
随机推荐
- 第八篇 Flask配置
Flask 是一个非常灵活且小而精的web框架 , 那么灵活性从什么地方体现呢? 列如 Flask配置,这个东西怎么用呢? 它能给我们带来怎么样的方便呢? app配置 首先展示一下: from fl ...
- JAVA时间工具类,在维护的项目里的
package com.inspur.jobSchedule.util; import org.apache.commons.lang3.time.DateUtils; import org.apac ...
- Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0 报错
此报错经常出现,项目中使用的maven版本为3.2.5版本但是去写自动化脚本又需要去3.5.2版本.经常搞混,需要记录一下: 解决如下: 再次install如下: 验证成功!
- Hadoop日志文件
初学者运行MapReduce作业时,经常会遇到各种错误,往往不知所云,一般直接将终端打印的错误贴到搜索引擎上查找,以借鉴前人的经验. 对于hadoop而言,当遇到错误时,第一时间应是查看日志,日志里通 ...
- Java 常见异常种类
Java Exception: 1.Error 2.Runtime Exception 运行时异常3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系统 ...
- mvc文件下载
public ActionResult xiazai(int id) { DataTable dt = bll.chaxun(id); //获取文件名字 var filename = dt.Rows[ ...
- DataTable数据存储问题
需求: 我想要实现这样一个效果:用户可以在表中通过右键新建行.删除行(这两个后面再写),编辑数据后进行保存.这里保存需要做一个区分,就是新增的和修改的.他们的区别就是新增的主键为空,而修改的因为原本就 ...
- java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec
java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec 这个类在 rt.jar 里面 本地开发,jre里有这个包,所以不会 ...
- laravel整合workerman做消息推送系统
官方建议分离 workerman和mvc框架的结合,我去,这不是有点脑缺氧吗? 大量的业务逻辑,去独立增加方法和类库在写一次,实际业务中是不现实和不实际的 gateway增加一些这方面的工作,但是我看 ...
- python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...