企业级应用系统体系架构十一企业应用的处理

企业级应用系统体系架构十一企业应用的处理

ID:21499816

大小:413.00 KB

页数:83页

时间:2018-10-19

企业级应用系统体系架构十一企业应用的处理_第1页
企业级应用系统体系架构十一企业应用的处理_第2页
企业级应用系统体系架构十一企业应用的处理_第3页
企业级应用系统体系架构十一企业应用的处理_第4页
企业级应用系统体系架构十一企业应用的处理_第5页
资源描述:

《企业级应用系统体系架构十一企业应用的处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、企业级应用系统体系架构(十一)企业应用的处理ChenHaopengWednesday,July14,2021References:Ted Neward:EffectiveEnterpriseJava1处理你必须放下两方的所有偏见,既不相信也不排斥任何事情,因为其他任何人或者这些人的描述,都已经排斥或相信它了。你自己的理由是上天给你的唯一神谕,对此你负有责任,不是为了抉择的公正,而是为了抉择的合理。——ThomasJefferson不要去找精灵商议,因为他们既说是又说否。——Gandalf对Frodo说,指环王处理在处理是在企业系统中中间件不能为我们解决的那一部

2、分,是我们应用的“血肉”。它有过:业务规则、业务逻辑、领域逻辑、应用代码,等等无数多的称呼。正如它的本质所言,处理是业务首先要关注的东西:对没有在其它任何地方处理过的数据进行处理。企业系统中相当大一部分都是在处理并发——考虑到最大的吞吐量,我们需要假定两件事情可以在同一时间发生。在企业系统中,并发同时涉及到两个主题:编程语言自己的基于监视器的对象同步系统和构建于大多数企业资源管理器内部的基于事务的同步机制。。处理第1项:保持简洁第2项:优先采用规则引擎去处理复杂状态的评估和执行第3项:优先为隐含的非原子性错误场景采用事务性处理第4项:区分用户事务和系统事务第5

3、项:最小化锁窗口第6项:优先使用本地事务而不是分布式事务第7项:为了更好的可扩展性而考虑使用乐观的并发机制第8项:为了显式的并发控制而考虑使用悲观的并发机制第9项:考虑使用较低的隔离级别以获得更大的事务吞吐量第10项:面临回滚时使用保存点来保留部分工作第11项:当有可能避免锁定区域时就复制数据源第12项:偏爱不可变的,因为它不需要任何锁保持简洁KISS(KeepItSimple,Stupid,保持简洁易用)。要做那些能够让系统运转的最简洁的事情,这就是简洁性规则。复杂性的某些部分需要被应用到领域问题本身,因此如果你将全部复杂性都花费到了复杂的技术上,以至于超越

4、费用底线,那么该项目将会崩溃。保持简洁如果你不能解释一个给定的由一条单一语句,或者至多两条语句构成的处理代码片段做了些什么,那么它就可能过于复杂了。复杂解决方案存在的问题数也数不清,但是基本上都可以归咎于下面几个基本直接原因:复杂解决方案很难被模块化,因此难以被重用。复杂解决方案难于调试。复杂解决方案难于被优化。复杂解决方案更难于维护。通常,企业级项目倾向于复杂而不是简单:复杂系统比简单系统更具“男子气概”这种想法是不对的。无论出于什么原因,我们都应该不断地重复强调:保持简洁,让工具去完成尽可能多的工作。处理第1项:保持简洁第2项:优先采用规则引擎去处理复杂状

5、态的评估和执行第3项:优先为隐含的非原子性错误场景采用事务性处理第4项:区分用户事务和系统事务第5项:最小化锁窗口第6项:优先使用本地事务而不是分布式事务第7项:为了更好的可扩展性而考虑使用乐观的并发机制第8项:为了显式的并发控制而考虑使用悲观的并发机制第9项:考虑使用较低的隔离级别以获得更大的事务吞吐量第10项:面临回滚时使用保存点来保留部分工作第11项:当有可能避免锁定区域时就复制数据源第12项:偏爱不可变的,因为它不需要任何锁优先采用规则引擎去 处理复杂状态的评估和执行请考虑一下,如果为你桌子上的计算机定购DVD,那么我们需要确保他们得到的不是KorSp

6、latt5900显卡,因为这种显卡不能和此DVD模型一起工作,当然除非想更换为CD-RW/DVD。噢,KorSplatt5900不能在一台少于512MBRAM的机器上运转,除非它是SuperReallyFastRAM……。由于所有可能的“公司希望在基本不兼容的限制之上仍然能够运行”的促销策略的因素,再加上所有这些东西一个月(如果不是一个星期的话!)就会变动一次,以及突然冒出来的要试图为在线PC生产商创建“计算机配置器”的想法,都使得大多数坚毅的IT行家望而却步。优先采用规则引擎去 处理复杂状态的评估和执行这里的问题是这种复杂性评估很难用Java这种命令式语言去

7、执行,这种语言关注的是CPU一步一步的实现。从本质上说,我们告诉机器的是怎样做这项工作,因此这意味着我们必须对各种需要被评估的条件以及这些条件需要被考虑的顺序非常明了。这会导致产生像下面这样复杂和难以维护的代码:if(currentPC.drives().contains("DVD")){if(currentPC.videoCard().equals("KorSplatt5900")&&!(currentPC.drives().get("DVD").equals("CD-RW/DVD"))){warn("DVDincompatiblewithKorSplatt

8、5900");}}elseif(cur

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。