读Martin Fowler's 《Patterns of Enterprise Application Architecture》有感

作为一本技术指导书,显然这本书有些outdated了,但想想现在的一些框架,架构正是基于这本书的思想构建的,还是不免对作者当时的Vision感到钦佩。出于对这些思想本源的追索,以及对历史的追溯。还是很有必要浏览这本经典著作的,对于这个500页的书,我看的比较快,只是跳一些感兴趣的点着重看下,事实证明还是很有收获的。

POJO

  • 起源:J2EE才出现时,尽管EJB2.0 特别是它的Entity Bean 给开发和调试带来了很多不便,但是在vendor的怂恿和对新技术的盲从下,很多公司还是采用了这个后来被证明是worst practice的技术。(记得当时我第一家公司就是用了CMB)作者认为人们忽略原来标准的java object 而去用这些container-based object 是因为这些regular java object没有个好听的名字,所以在准备2000 java one大会的时候,Rebecca, Josh and
    Martin give them one: POJO (plain old Java objects)
  • 收获:我开始以为POJO就是贫血的Domain Object,里面只有fields and setter, getter。 而现在知道POJO是针对那些依赖框架的Java Objects而言的,不依赖任何框架的Java Object 就是POJO,依赖框架的坏处是调试和测试都很麻烦,像EJB2.0,Struts1等。
  • 演变:现在的主流架构应该都支持POJO了,也就是实现类不需要依赖框架的Object了,例如EJB3.0, Struts2等

DTO

  • 起源:作为Remote Call往往需要比较大的overhead,所以一个基本原则就是尽量减少remote call,这就需要我们暴露给client的interface最好是coarse-grained(粗粒度的),一个用来在不同App之间传输Data的Object DTO(Data Transfer Object) 应运而生了。
  • 收获:开始以为DTO就是简单对DO进行1对1的wrap,所以很不理解这样做得必要性。其实DTO并不是对DO的1对1包装,而是一个DTO aggregates 多个DO的信息,这样client 就能在一次Call中得到足够的信息。
    引用原文的话:“If a remote object requests data about an order object, the returned Data Transfer Object will contain data from the order, the customer, the line items,the products on the line items, the delivery information- all sorts of stuff."
时间: 2024-08-01 15:54:20

读Martin Fowler's 《Patterns of Enterprise Application Architecture》有感的相关文章

跪求Patterns of Enterprise Application Architecture 的英文版

问题描述 最好是中英文版都有请发我邮箱1216170136@qq.com万分感谢 解决方案 解决方案二: 解决方案三:同上http://download.csdn.net/download/zhaowentao_bc/3484759

Martin Fowler竟然不是第一个提出微服务架构概念的?

王磊:前ThoughtWorks首席咨询师,<微服务架构与实践>作者,翻译有<DevOps Handbook>,国内较早倡导和实践微服务的先行者,有丰富的微服务/DevOps/持续交付实战经验 微服务架构那点事 相信很多朋友了解微服务架构都是从Martin Fowler的那篇文章开始.而实际上,Martin却并不是最早谈及微服务架构的,本篇文章就和你聊聊微服务架构定义的那点事. 最易懂的版本 Martin Fowler的这篇文章<Microservices>通俗易懂的讲

Martin Fowler谈如何理解事件驱动

去年年底,ThoughtWorks内部开展了一个研讨会,讨论"事件驱动"应用程序的性质.在过去的几年里,他们建立了许多基于事件的系统,有被称赞,也有被吐槽.ThoughtWorks的北美办公室组织了一次峰会,来自世界各地的ThoughtWorks高级开发人员在会上分享了他们的想法. 峰会的最大结果是得出这样的一个结论:当人们谈论"事件"时,他们实际上意味着一些完全不同的事情. 所以Martin Fowler花了很多时间试图从中挑出一些有用的模式, 本文就是对这些内容

BaaS云架构核心模式之Serverless架构 - 用服务代替服务器(Martin Fowler)

Martin Fowler最近非常推崇的serverless架构模式,是BaaS云架构实现的核心架构模式. Martin Fowler在2016.6.17号发表了一篇博客: <Serverless Architectures>,引起业界广泛关注: 在这篇博客里,他介绍了serverless架构,以及FaaS,Microservice,Docker等流行的架构和概念,描述了Amazon AWS lambda的价值, 进一步将这种云时代的架构清晰的展现在大家的视野里. 本文很多内容来自这篇博客,让

Martin Fowler对将page对象用于Web测试的基本经验法则

本文源自Martin Fowler,文章最初由ThoughtWorks工程师黄博文翻译在自己的博客上,并由译者本人推荐至InfoQ中文站博文共赏专栏.本译文在Martin Fowler本人的许可下,由InfoQ中文站进行修订后,在这里给大家分享. 当你在为Web页面编写测试时,你需要操作该Web页面上的元素来点击链接或验证显示的内容.然而,如果你在测试代码中直接操作HTML元素,那么你的代码是及其脆弱的,因为UI会经常变动.一个page对象可以封装一个HTML页面或部分页面,你可以通过提供的应用

Patterns &amp; practices Application Architecture Guide 2.0 Released

  patterns & practices Application Architecture Guide 2.0 Release http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Home PDF version here: http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=19545 Folks, please read it

对话马丁·福勒(Martin Fowler)——第六部分:性能与过程调优

第一部分:重构第二部分:设计原则与代码所有权第三部分:进化型设计第四部分:灵活性与复杂性第五部分:测试驱动开发第六部分:性能与过程调优 可维护性与效率 比尔:我在丹佛机场的红地毯俱乐部(Red Carpet Club)[1]中常常碰到名人.今年夏天我碰到了 Calista Flockhart (卡莉斯塔·弗洛克哈特)[2], 而去年我碰到了你.我是个追星族,但是由于害怕哈里森·福特,没敢跟 Calista 搭讪.不过,你和我倒是坐下来喝了杯啤酒.记得当时你曾对我说过,应该以程序员能读懂的字符格式

企业应用架构模式阅读笔记 - Martin Fowler

1. 数据读取

读zac《seo实战密码》外部链接章节有感

  最近想潜心研究一下seo所以买了一本zac的实战密码,还没有全部看完,拿到书我先看我最喜欢的部分,当然是有关于外部链接的章节了,我相信很多站长朋友们和我一样,下面我就把我阅读此章节的一些感想和大家分享一下: 第一:分析关键词难度和竞争对手情况 实战密码里面讲了一个关键词的难度主要看的几项指标有百度指数.相关网页.百度前十位的首页域名数量.还有此关键词的竞价个数,而第三个指标就是我们所说的竞争对手,因为即使是大站的内页要超过的话也相对的比较容易,那么我们如何去分析竞争对手呢,讲一个平常我们不太