当下潮流是铺天盖地的SOA啊,似乎不讲SOA就是一种落伍,一地的SOA,就像当初一地的java,一地的鸡毛。想当年,我们从c转到java,改变了什么?更多的项目是改变了编程语言而已(仅指后端业务逻辑)。可是我们推崇java,推崇的是它的开放,它的OO,并不是语言本身(好吧,语言确实也解决了一些内存问题、跨平台问题,只能说是降低了准入的门槛)。现在的SOA也是这样,我理解SOA讲的更多的是系统的治理,并非编程模型上的事情(厂商讲SOA讲的神乎其神的,似乎只要SOA了,你的系统就灵光了,什么问题都解决了,那是他们要卖中间件),我看到的一个潮流时所谓的信息服务+服务/流程编排,实现所谓彻底的SOA,大家想想,这个和以前的面向过程编程有什么区别?如果一定要找出区别,区别就是用了中间件写程序,这部分逻辑号称不是硬编码,力度细到这种程度,和硬编码的区别又有多大呢。这种设计方式,将数据和逻辑完全分离了,再没有一个聚合业务逻辑的地方,有的同学会说在服务类中聚合,那服务类以什么准则设计呢?按照面对对象?
发了下牢骚,讲讲自己的想法吧,欢迎大家拍砖。就像上文说的,我理解SOA将的是系统治理,他体现的是系统的外观,要求系统暴露的能力是合理的、逻辑内聚的、没有自我矛盾的、没有安全漏洞的,基于这些允许的能力之后,你可以根据需要进行组合(集合一个或多个系统的能力,形成新的能力),什么都能组合,什么都能配置,我认为是一种拒绝设计的消极的思想,认为自己预料不到将来的变化(那我们需要经验,需要行业专家干吗呢?)。真正系统内部的逻辑,我们还是要按照OO来设计,或者从更高层面的DDD,将对象的逻辑聚合起来,只有这样,才能有一个维度来聚合逻辑,才能降低对于信息层的依赖,使得缓存机制更加灵活(原来面向过程的所谓SOA组合信息服务,根本没法控制信息的访问,因为缓存的机制和信息的修改逻辑有关,而这部分逻辑被分散到了SOA服务编排中)。
工作非常忙,就不细节的写下去了,大概就是这个意思了,不知道现在有多少的java/j2ee系统是面向对象设计的,可能很少吧,OO的设计对人是有要求的,我的经验是OO的系统设计,扩展方便,重构频率低,质量高,特别适合做产品,工程就算了(国内的工程一项是扑人头,卖人头的,简单便宜就好,管它后续质量如何)。
好久不来啦,现在还有人玩博客吗?NND,工作总是那么的忙,为啥。
相关推荐
### SD大会精品讲座:SOA下的新一代企业前端 在当今快速发展的信息技术领域中,随着企业对信息化需求的日益增长和技术的不断进步,如何构建高效、灵活且具备高度集成能力的企业前端成为了众多企业和开发者关注的...
最后两节细说应用层、系统总体架构是本文的重点,着重说明领域驱动设计与SOA之间的关系,对DDD有一定基础的朋友可以越过前面的几节,直接查看第七、八节。 SOA与DDD都是常用的系统架构,但两者之间所针对的核心是...
这些服务本身也可以进一步聚合成为更高级别的服务,体现了领域驱动设计(DDD)中的上下文映射概念。它们通常在.NET和Java中实现,并在一个开发者友好的ESB(例如Mule)中组织和包装。 #### 1.3 应用到应用服务...
Workflow系统是一个为荷兰呼叫中心定制的管理流程软件,采用了领域驱动设计(DDD)方法,利用POCO对象表示业务实体,并使用Fluent NHibernate映射到数据库。在Web层,项目基于ASP.NET MVC框架,结合StructureMap实现...
ENTech商店用于简单店面的TDD DDD SOA架构特征SOA DDD 一切都是可单元测试的有界模块路线图建筑学通用请求验证安全性:API合作伙伴的OAUTH认证快取版本控制记录中网页挂钩图片/文件上传功能性StoreAdmin-\ Stores ...
软件分析和设计的演进经历了多个阶段,从单体架构到面向过程、数据驱动的集中式架构,再到面向对象、分层设计的SOA与远程调用架构,最终发展到分布式架构和微服务架构模式。这一演变过程体现了软件开发对业务需求...
对于想要将DDD付诸实践的读者,无论是DDD的新手还是有经验的开发者,这本书都提供了一套实用的知识库。它不仅关注理论,还强调了与技术实践相结合的具体细节。开发者可以通过本书获得对DDD核心概念的深刻理解,并能...
ddd-leaven-akka-v2 遵循基于的方法,在和之上构建的示例电子商务应用程序。 概述 此示例电子商务系统具有一组独特的属性。 这是: React灵敏,有弹性,有弹性 :clapping_hands: , 整合了SOA,EDA和微服务架构 :...
《Jivejdon3_02.zip:基于JdonFramework的DDD论坛程序解析》 Jivejdon3_02.zip是一个包含使用JdonFramework开发的论坛程序...无论是初学者还是经验丰富的开发者,都能从中受益,加深对DDD的理解,提升自己的编程技巧。
DDD作为SOA的一个关键因素,有助于确保业务逻辑的正确表达和维护。 通过贷款处理示例应用,文章展示了如何将DDD的设计立场和最佳实践应用到真实的开发项目中。示例应用使用了包括Spring、Dozer、Spring Security、...
引入DDD可以帮助微服务更紧密地与业务逻辑保持一致,但同时也增加了设计和实施的复杂性,需要团队对DDD有深入理解和实践经验。 【聚合层的必要性】 在微服务架构中,有时会讨论是否需要引入聚合层。聚合层可以作为...
这样,无论是使用关系型数据库还是NoSQL数据库,都可以较为容易地调整而不会破坏整个系统的结构。 #### 命令查询职责分离(CQRS) **定义:** 命令查询职责分离(CQRS)是一种架构模式,它将系统的读写操作分开,...
for example, Vaughn shows how DDD fits with the expanding array of architecture styles and persistence technologies for enterprise applications—including SOA and REST, NoSQL and data grids—that has...