ASP.NET Core 企业级支架构简介和框架汇总

ASP.NET Core 企业开架构概述

企业支付框架包括垂直方向架构和水准方向架构。垂直方向架构是凭借一个应用程序的是因为下到上折加多重合的架构,同时这样的次第同时为整体式程序。水平方向架构是因以格外运分成多稍微的施用实现系统功能的架构,同时这样的系叫做分布式系统。在架设上java和.net世界都起优良之框架支持构建垂直和水准方向架构。ASP.Net
Core非常轻量且持有十分高之属性,不仅契合做整体式程序,也非常适合做分布式系统。随着微服务的起,各种语言的混杂使用是单趋势。

  • ASP.NET Core
    企业开发架构概述

    • 一如既往、
      垂直方向架构

      • 1.
        基本上重合架构

        • 1.1
          领域模型
        • 1.2
          存储仓库
        • 1.3
          服务
        • 1.4
          UI
      • 2.
        名列前茅框架

        • 2.1
          数据存储框架

          • 2.1.1
            数据看辅助
          • 2.1.2
            对象-关系映射
        • 2.2 MVC
          框架

          • 2.2.1
            经典MVC模式
          • 2.2.2
            后端MVC模式
          • 2.2.3
            典型框架
          • 2.2.4
            MVC模式总结
        • 2.3
          IOC框架

          • 2.3.1
            概念
          • 2.3.2
            典型注入框架
    • 其次、
      水平方向架构

      • 1.
        SOA架构

        • 1.1
          简洁版架构
        • 1.2
          服务的基本要素
        • 1.3
          服务治理
      • 2.
        微服务架构

        • 2.1
          简洁版架构
        • 2.2
          服务的基本要素
        • 2.3
          服务治理
      • 3. 整体式 vs SOA架构 vs
        微服务架构
      • 4.
        SOA典型框架
      • 5.
        微服务典型框架
      • 三、
        总结

相同、 垂直方向架构

1. 多交汇架构

子架构通过序包或程序的隔断构建松耦合的行使。我们以近年来盛行的胡葱架构模型进行解析,如图

MyBatis 1

1.1 领域模型

包括世界实体/存储接口/服务接口,是普程序的中心。

  • 贫血型

万一拿大气之业务逻辑委托为服务接口实现者,领域模型显示格外瘦小,就可称作贫血型。这种模型下之小圈子对象只是意味着“状态”。“行为”(也叫做逻辑、过程)放在了N层结构的Logic/Service/Manager层中。优点是易理解和促成,缺点是随着工作发展模型会难以表达业务领域。目前众标准软件架构是这种模式。

贫血型的概括图示:

MyBatis 2

  • 充血模型

假若当世界模型中落实重点的事务逻辑,把不便利实现之事体(比如汇率结算,地理坐标解析等)委托为服务接口实现啊,此时世界模型显示粗壮,就得叫充血模型。这种模型下之小圈子对象既意味着“状态”又发生”行为“,领域对象期间尚经过聚合在一个根(聚合根),然后由穷对象保证状态的一致性(类似于数据库表之间的羁绊一致性)。优点是范易于跟进业务发展,容易通过重构表达时的事情领域;缺点是毋庸置疑控制。

充血模型的简易图示:

MyBatis 3

1.2 存储仓库

天地模型中之靶子由被创造出来后不见面直接留在内存中活动,当她不活动经常会给持久化到数据库被,然后当需要之时光便见面重建该对象;重建对象就是是基于数据库中就囤积的对象的状态又创设目标的长河。可见持久化和重建对象是一个同数据库打交道的进程。从更广义的角度来明,程序会如集合一样打有类似集合的地方根据某条件得到一个要部分目标,往集中增长对象要移除对象。也就是说,这即需提供平等种植机制,可以供类似集合的接口来帮程序管理对象。仓储虽是冲这样的思考被规划出的。

贫血型生的储存仓库:实现实体对象的CRUD.

充血模型生的积存仓库:创建聚合根对象,实体对象的创造/更新/删除的作为由聚合根完成

1.3 服务

一般有三栽服务:应用服务、领域服务、基础服务。

MyBatis 4

  • 应用服务

    调用领域服务,形成工作流程,提供事物上下文。应用服务可以直接也UI提供服务要直接作为API暴露出。

  • 世界服务

    于切切实实一个事情上下文中提供劳务。比如订单生成服务提供订单的变迁功能,订单的跟踪服务提供订单的行信息。

  • 基础服务

    基本功服务提供的凡与业务无一直关联之家伙协助服务。比如日志,安全,通信,事件总线等等。

1.4 UI

提供应用程序界面,支持用户输入。高效之UI开发往往会依赖UI框架,比如MVC框架。

UI框架比较多,比如MFC,WinForm,Asp.net WebForm,Asp.net
MVC,Structs等等。

综上:洋葱模型的诸层由他到内之单独为据,简单直接的狂跌了代码之间的耦合度

2. 名列前茅框架

2.1 数据存储框架

2.1.1 数据看辅助

立刻仿佛框架往往提供了扳平效仿操作连接/命令/结果集的接口。用户优先发起连接,发生sql命令,然后拿走结果集为按行(又被记录)方式进行遍历。不同的数据库需要相应的数据库让及贯彻,但对用户来说操作数据的点子还是千篇一律的。

优点

  1. 修原始sql,执行效率高。
  2. 持连接对象,可以打定义事物的倡导,提交或者回滚。
  3. 可本着不同数量存储方定义数据访问库。
  4. 貌似比较轻量,依赖少。

缺点:

  1. 修sql容易失误,随着数据库的演变,sql的秘密错误必须依赖充分的单元测试才会清除。
  2. 数据库的演变,sql重构难度会慢慢增大。
框架 特点 开发语言
JDBC 简单易学,上手快,非常灵活构建SQL,效率高 Java
ADO.NET 接口清晰,支持离线遍历数据集,支持数据库和非数据库数据源 C#
2.1.2 对象-关系映射

对象-关系映射(Object-Relational
Mapping,简称ORM),以面向对象的开发方法实现多少的增删改查。

优点

  1. 增强开支效率,降低开发成本
  2. 假使支付尤其对象化
  3. 可移植
  4. 好挺有益地引入数缓存等等的增大功能

缺点

  1. 自动化进行关系数据库的炫耀需要吃系统性能。其实这里的性质消耗还未坏,一般的话都足以忽略的(除非在性特别重要应用)。
  2. 于拍卖多表联查、where条件复杂之类的询问时,ORM的语法会变得复杂。

典型框架

框架

特点

支出语言

Dapper

一半电动;轻量级;自己写sql语句,可操作性强,小巧

C#

Entity Framework

活动;较重量级;支持写linq和原生sql,功能强大

C#

Hibernate

Hibernate功能强大,数据库无关性好,O/R映射能力高,需要上HQL,精通的难度高

Java

iBATIS

化名为MyBatis,入门简单,即效仿就用;功能于简陋,需要被写sql语句

Java / NET

2.2 MVC 框架

  • Model

担负提供界面绑定的数,以及业务逻辑处理

  • View

负责提供用户和以内的互界面。不同类别的应用交互界面不同,可以是桌面程序窗口以及web页面。

  • Controller

荷征集用户输入事件,并分配事件叫对该事件感兴趣之范处理。对MVC的明难题在于控制器的解读,在底下我们会为此经典MVC模式后端MVC模式分析。

2.2.1 经典MVC模式

这种模式大量就此在复杂交互界面的桌面应用程序,比如MFC框架;以及web富应用框架中,比如AngularJS
1(尽管有人叫为MVVM框架)。

MyBatis 5

控制器管输入事件通报给对拖欠事件感兴趣之范(步骤3),模型更新自己的状态并引起视图更新(步骤4),然后拿履新事件通报控制器(步骤5),此时若有针对该更新事件感兴趣之模子会愈来愈拓展处理(步骤6)。事实上控制器和模型中成了订阅/发布关系。

MVVM框架:把Controller变成了ViewModel,它同View进行双向绑定:View的改,自动反映在
ViewModel,反之亦然。

MyBatis 6

2.2.2 后端MVC模式

自web应用普及起来来,涌现了累累后端MVC模式,比如JAVA的Structs,.NET的Asp.net
MVC等。由于页面在浏览器中显得,用户输入通过http到达后端,在后端看来MVC模式默认如下图所示:

MyBatis 7

及经典MVC模式不同,控制器直接沾输入事件(http请求),调用对应之模子,模型处理完后传递视图对象(VO)给控制器,控制器找到确切的视图并传递VO给视图,视图产生html/json/文件流等资源,应用程序根据资源类型Response结果。通常后端MVC的支配负责之处理比较简单;而复杂的用户输入好据此前端MVC框架实现(类似经典MVC模式)。

2.2.3 典型框架
框架 特点 开发语言 前后(端)
Asp.net MVC 支持WebForm和Razor C#
Nancy 轻量,支持WebForm和Razor,路由更灵活 C#
Struts2 JSP上的MVC先驱,但比较重量,封装简陋 java
SpringMVC 开发效率和性能高于Struts2,100%零配置 java
AngularJS 功能完整,支持双向绑定,开发效率高,运行效率一般,v2版本推翻v1,性能上提高,开发更组件化 js
React 思路新颖,运用Virtual Dom技术,性能高;但目标是UI组件,需配合其他库搭建完整MVC框架 js
Vue 非常小巧,核心库专注视图层。需要搭建其他组件实现完整MVC框架 js
2.2.4 MVC模式总结

范负责提供视图数据及业务逻辑处理,视图负责提供用户交互界面,控制器将输入事件分配到对拖欠事件感兴趣之模子。控制器居于主导位置,类似于力量胶水,但效果就限于胶水是她是的定位;避免写副过多事情逻辑代码使控制器变得复杂,难以保障。

MVC模式之价在重新好的拍卖洋葱架构的UI层

2.3 IOC框架

2.3.1 概念

用现实生活中例子引入:由于汽车因轮胎,如果按正为据,则汽车厂商用依据轮胎供应商能提供的车胎来定义自己之接口(螺丝,大小相等)。但如果依倒置一下(让轮胎厂商凭借汽车厂商),则汽车厂商就待定义自己之接口(螺丝,大小等)由轮胎厂商去按此法标准生产,就成为现在汽车行业的事例。这种依赖倒置是一个合计概念,需要一个器皿来贯彻,这就是IOC框架。

MyBatis 8

  • 倚倒置(Dependency Inversion Principle, 英文缩写为DIP)

自从依赖具体类易为乘抽象就深受依赖倒置,这是千篇一律种植设计原则。

  • 支配反转(Inversion of Control,英文缩写为IoC)

凭借倒置的同一种植实现方式,通常用于构建框架,比如WinForm,WebForm程序中公可从定义具体的窗口类,然后于窗口初始化和虚函数里面写代码,框架会遵循好的平等效仿流程运行:启动具体窗口,调用初始化方法,在不同的运行节点调用对应之虚函数。运行控制权始终在框架手中要不是咱形容的代码。

  • 仰注入(Dependency Injection,英文缩写为DI)

赖注入也是恃倒置的一律种具体落实,是类库设计的等同种植常用模式。类库基于依赖模式设计:调用者依赖让接口,而不是切实的兑现,调用者在运转时给注入所依赖接口的现实贯彻。注入方法不在此地赘述。

  • IOC框架

IOC框架包括了控制反转和负注入力量。以下通过QA的艺术来读懂IOC框架:

Q: IOC的操纵是对呀的支配?

A: 是对应用程序中目标的缔造和生命周期的主宰。

Q: 正向决定是什么则?

A: 由应用程序new对象,并以宜的时候释放对象。

Q: 反转控制是啊则?

A:
对象的创办和生命周期管理由IOC框架控制,而不是应用程序控制,这种状况和刚刚奔控制相反就称为反转控制。

Q: 控制反转带来了啊利益?

A:
控制反转不仅减轻了应用程序的代码复杂性,更叫IOC框架的扩展性带来好处,比如IOC框架可以兑现目标单例模式,多例模式,引入事物管理,日志管理,安全管理等等功能,比如Spring产品家族。

Q: 依赖是什么?

A:
依赖包括:临时用,关联,聚合,组合,依赖关系从左到右增强。可以参考UML相关概念描述。

Q: 注入的目的是呀?

A:
使得对象足以靠抽象,而无是切实落实类似。主要利益是给应用程对象期间松耦合

2.3.2 典型注入框架

框架

特点

付出语言

Unity

包含于微软企业库中,性能稳定

C#

Autofac

轻量,性能非常高

C#

Spring

净重,功能强大

java

老二、 水平方向架构

大抵层架构适合整体式程序,即一个程序实现了网全套效能。随着企业层面越来越不行,会对不断的初需求与需求变动,在一个次中展开扩张变得愈加难开展。同时给大并发的事体要,程序于一个进程要基本上独过程面临运行都难以克服一个失效运行的机能代码造成的特性瓶颈。
人人找到了解决办法:将先后功能划分成服务程序,各服务程序于档次方向上互动开发与布置,由API连接各个服务,这种方法若降低服务中的耦合,部署更加灵活,性能调优可以本着单身的劳动。

1. SOA架构

面向服务的系统布局(英语:service-oriented
architecture)是构造分布式计算的应用程序的同样种艺术。它用应用程序功能作为劳务提供给最终用户或者其它服务使。
她以开放标准、与软件资源进行互并利用表示的正统措施。

1.1 简洁版架构

MyBatis 9

1.2 服务的基本要素

MyBatis 10

  • Policy(策略)

服务提供者有时候会要求服务消费者以及某种政策通信。比如要求顾客提供安全标识,才能够取有项服务。

  • Endpoint(终结点)

终结点是一个描述提供或受劳务之章程,包括网络协议,域名还是IP,端口信息。

  • Contracts(合约)

劳务合同是劳动提供者(通常是长途的)和使用者(客户)之间采用合同语言(XML、JSON、Java
Object等)约定数据输入和多少输出的平等卖协议。

  • Messages(消息)

劳提供的信息,应满足服务的合同。

1.3 服务治理

劳动治理SOA最特别的话题,涵盖了以下内容:

  • 服务概念(服务的限定、接口及鄂)
  • 劳务配置生命周期(各个生命周期阶段)
  • 劳版本治理(包括兼容性)
  • 服务迁移(启用及退役)
  • 劳务登记中心(依赖关系)
  • 劳信息模型(规范数据模型)
  • 服务监视(进行问题确定)
  • 劳务所有权(企业团体)
  • 劳动测试(重复测试)
  • 劳安全(包括可领之掩护范围)

为化解以上问题,最为盛行的做法在SOA架构中益ESB(Enterprise
Service Bus,即企业服务总线)集成。

2. 微服务架构

微服务是SOA的升华版本,把服务就微型化。

2.1 简洁版架构

MyBatis 11

2.2 服务之基本要素

MyBatis 12

微服务架构下通过REST
API提供取服务,所以未强调策略和合约,只要服务提供方暴露终结点和提供信息就是足够了。

2.3 服务治理

SOA会遇见的治理问题,在微服务中千篇一律会暴露出来。由于微服务系统受到劳动数量还多,生产条件受到冒出的各种题材更是突出。一部分口看微服务架构应该是失去中心化,不需要ESB的中介作用,事实上也微服务的网关可以有ESB的部分效能,比如安检查/事物管理/复杂的行事流程等功能。

3. 整体式 vs SOA架构 vs 微服务架构

框架 前期开发效率 迭代开发效率 扩展能力 维护性
整体式 中,通常越来越低
SOA架构 中,趋势比较平稳
微服务架构 高,趋势比较平稳

一旦是微集体,中小项目用整体式开发还好;如果出雅量要么难以重构的残存代码建议采用SOA架构;比如是崭新的类还预测未来见面火速迭代成那个类别虽然建议用微服务架构。

4. SOA典型框架

框架 特点 是否开源
WCF 微软出品,目前仅在windows下运行。它支持HTTP、TCP、命名管道之间的单向和双向消息通信,此外,在第三方扩展的帮助下,还支持任何基于消息的传输格式。 客户端开源
Spring Integration 基于Spring的轻量级开源框架,是一个干净、简练的EAI手段,也是很好的ESB产品替代者。现在的ESB方案沉重且很难引入到一些环境中。Spring Integration则是一个功能强大、低摩擦的替代方案,它能温和地解决一些最复杂的集成问题。
Mule ESB 它不是仅仅一个集成框架,而是一个包括一些额外功能的完整ESB ,Mule的Studio提供了一个很好的和直观的可视化设计。比Spring集成它更像是一个DSL。这一点很重要,如果集成逻辑比较复杂。
Apache Camel Apache Camel几乎和Mule ESB相同。你能想到的几乎每一个技术,提供很多很多的组件(比Mule ESB甚至更多)。如果没有可用的组件,你可以很容易地创建自己的组件

5. 微服务典型框架

Dubbo Spring Cloud Surging
开发语言 Java Java C#
开发方 阿里 Spring社区 个人
维护状态 不再继续维护 活跃 一般
互联网应用案例 阿里、京东、当当等 联通 华为 东软 暂无
基于协议 可选,默认dobbo http IPC
可用的语言 Java 所有语言 C#
分布式事物
无状态部署
服务器治理 服务发现、服务路由、服务负载均衡、服务列表、服务分组、服务依赖管理、服务权重、服务授权、服务直连、上下文隐式传参、分组聚合、结果缓存 除dubbo有的外:服务网关、断路器、服务跟踪、消息总线、批量任务 提供高性能RPC远程服务调用,采用Zookeeper、Consul作为surging服务的注册中心,集成了哈希,随机,轮询作为负载均衡的算法,RPC集成采用的是netty框架,采用异步传输
分布式配置 第三方
单元测试 支持 支持 未知

微服务思想要以劳动之自治,减少因)和治理(一个保险安全之网关),它鼓励混合使用顺手的编程语言、开发框架,以减掉高效开发及部署系统跟软硬件条件里的吹拂,比如企业内发生java和.net开发组织则可以Spring
Cloud下用Asp.net core做平台开发微服务程序。

三、 总结

对于整体式程序还是一个劳动作为整体式程序开发
,可以应用洋葱模型架构。在拍卖数据时用数据存取框架,对于UI可以采用服务器端MVC和客户端MVC框架。对于有着遗留程序的系可动用SOA架构来整合系统功能;如果系统越来越复杂,负载压力以不同程序功能上未抵好使微服务架构。在新的将成为大型应用的网采取微服务架构也是天经地义的选项。

参考文章:

http://blog.csdn.net/sinat_34093604/article/details/53082000

http://www.jdon.com/soa/integration-framework-comparison-spring.html

http://blog.csdn.net/qiumuxia0921/article/details/52713791

http://openwares.net/java/dip_ioc_di.html

http://www.cnblogs.com/summer7310/p/6394379.html

http://www.cnblogs.com/wangpenghui522/p/5430292.html

http://blog.csdn.net/zhengzhb/article/details/7190158

http://www.cnblogs.com/fanliang11/p/7191030.html

http://blog.csdn.net/orichisonic/article/details/48546061

网站地图xml地图