从soa谈起,现在soa很多年了,但这个概念并不过时,反而成为重要的it基础
ddd 领域模型驱动,其实不用这个概念也行,就叫,业务功能模型吧,应该参考微服务的思想,面向企业的知识与资源。
面向业务的功能单元 Business-oriented functional units 这是我提出的概念叫 BOFU 所以我就不用ddd了 小写 bofu具体
的说 bofu就是一个个 数据模型+相关的逻辑(规则,状态,关系,描述...) 一般由一种代码承载,使用纯净的代码这里
我选择并推荐的是 C# .net core standard 2.1 的类库来承载,尽量做到不受各种技术的污染,让业务代码保持最大限度
的纯净,这些业务数据模型+业务逻辑,由抽象层进行边界封装,以确保业务逻辑描述 的必要完备性。
bofu是面向企业,面向公司的,而非面向应用,它不属于任何一个应用程序 ,一个项目,在bofu的上一层是 soa。
soa是与技术相关的,要考虑公司自己硬件资源 所采用的一种技术集合用于实现让资源 (硬件)最优化,并且承载了bofu
或其中的一部分,以服务接口的姿态 向外授权开放服务层,在soa的上层 是应用壳,应用壳 可以是web pc站点,手机站点,
手机原生应用其它智能设备的站点或原生应用程序,pc端的桌面应用序等的一种应用。一个公司根据 自己的需要 可以做很多应用,
从大层面 上看soa与应用壳做到了解耦 ,这种思维是最有利于企业和企业信息化宏观构想的方案,而现在的微服务是基于应用壳的,
应用壳就象是浮沙一样,而微服务却让在它上面的建筑更加复杂,重型,华丽,要知道没有多少企业有天猫
这样价值的重量级应用壳,企业的必须面向业务,应用壳只是对soa的一种消费,不能本末倒置,假设一个公司构造多个应用项目,
以各自的项目为中心去调度资源以微服务的理论去架设,而非soa的话,那么将造成各种可怕的冗余,重复,而且 绝大部分应用
项目,不值得付出这样过多的开发成本,这里面存在巨大 的风险,没几个项目是天猫,没有那么多客户,需求与价值。但却在
使用微服务岂不是很荒唐。
应用只是外壳,只是soa的一种消费,soa是企业整体的服务集合,从它上面可以构造各种不同平台,不同形式,不同表现风格
的应用壳这是一对多的关系,soa是本,而应用项目是末,是枝叶,
soa对bofu而言,是一种“穿衣服” 是一种聚合,是一种保护 ,是一种筛选,是一种考量硬件资源最优化利用率后的实施方案,
soa与技术相关,比如早期的 web service wcf webapi 等这些技术,现在的 grpc, orleans ,service fabric,Kubernetes,
包括各种消息队列容器,虚拟机等硬件都是soa的实现手段,方式,和基础。
分清楚 soa 应用,与bofu 等概念,梳理好相互的关系,把握各自的目标,与发展方向才是企业信息化建设的根本。