??xml version="1.0" encoding="utf-8" standalone="yes"?>日本一区二区综合亚洲,电影一区二区三区久久免费观看,91天堂在线http://www.aygfsteel.com/alwayscy/category/23179.htmlzh-cnThu, 06 Dec 2007 14:30:15 GMTThu, 06 Dec 2007 14:30:15 GMT60感触最q几条设计哲学http://www.aygfsteel.com/alwayscy/archive/2007/12/05/165610.html我爱佛_我爱佛_Wed, 05 Dec 2007 09:52:00 GMThttp://www.aygfsteel.com/alwayscy/archive/2007/12/05/165610.htmlhttp://www.aygfsteel.com/alwayscy/comments/165610.htmlhttp://www.aygfsteel.com/alwayscy/archive/2007/12/05/165610.html#Feedback9http://www.aygfsteel.com/alwayscy/comments/commentRss/165610.htmlhttp://www.aygfsteel.com/alwayscy/services/trackbacks/165610.html阅读全文

我爱佛_ 2007-12-05 17:52 发表评论
]]>
今天看到一句话Q觉得对E序设计很有启发Q?/title><link>http://www.aygfsteel.com/alwayscy/archive/2007/12/02/164663.html</link><dc:creator>我爱佛_</dc:creator><author>我爱佛_</author><pubDate>Sun, 02 Dec 2007 09:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/alwayscy/archive/2007/12/02/164663.html</guid><wfw:comment>http://www.aygfsteel.com/alwayscy/comments/164663.html</wfw:comment><comments>http://www.aygfsteel.com/alwayscy/archive/2007/12/02/164663.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/alwayscy/comments/commentRss/164663.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/alwayscy/services/trackbacks/164663.html</trackback:ping><description><![CDATA[     摘要: 设计不在乎一开始就非常完备Qƈ且考虑到所有情况和变化Q设计的_N在于当某U变化来临时Q能够重新审视,甚至是调整全部的设计Q让它能够兼容之后的“同U类”变化,从而今后再有q样的变化时Q带来最量改动。ؓ此目的,哪怕是推翻重来也在所不惜...... <br>  <a href='http://www.aygfsteel.com/alwayscy/archive/2007/12/02/164663.html'>阅读全文</a><img src ="http://www.aygfsteel.com/alwayscy/aggbug/164663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/alwayscy/" target="_blank">我爱佛_</a> 2007-12-02 17:35 <a href="http://www.aygfsteel.com/alwayscy/archive/2007/12/02/164663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>很全的一张网l协议图http://www.aygfsteel.com/alwayscy/archive/2007/09/10/144059.html我爱佛_我爱佛_Mon, 10 Sep 2007 09:54:00 GMThttp://www.aygfsteel.com/alwayscy/archive/2007/09/10/144059.htmlhttp://www.aygfsteel.com/alwayscy/comments/144059.htmlhttp://www.aygfsteel.com/alwayscy/archive/2007/09/10/144059.html#Feedback0http://www.aygfsteel.com/alwayscy/comments/commentRss/144059.htmlhttp://www.aygfsteel.com/alwayscy/services/trackbacks/144059.html 



我爱佛_ 2007-09-10 17:54 发表评论
]]>
关于j2ee层次设计架构http://www.aygfsteel.com/alwayscy/archive/2007/06/08/122922.html我爱佛_我爱佛_Fri, 08 Jun 2007 11:32:00 GMThttp://www.aygfsteel.com/alwayscy/archive/2007/06/08/122922.htmlhttp://www.aygfsteel.com/alwayscy/comments/122922.htmlhttp://www.aygfsteel.com/alwayscy/archive/2007/06/08/122922.html#Feedback1http://www.aygfsteel.com/alwayscy/comments/commentRss/122922.htmlhttp://www.aygfsteel.com/alwayscy/services/trackbacks/122922.html 

典型的三层结?br>  三层l构估计大家都很熟悉了。就是表C(presentationQ层, 领域QdomainQ层, 以及基础架构QinfrastructureQ层?br>  表示层逻辑主要处理用户和Y件的交互。现在最行的莫q于视窗囑Ş界面QwimpQ和Zhtml的界面了。表C层的主要职责就是ؓ用户提供信息Q以及把用户的指令翻译。传送给业务层和基础架构层?基础架构层逻辑包括处理和其他系l的通信Q代表系l执行Q务。例如数据库pȝ交互Q和其他应用pȝ的交互等。大多数的信息系l,q个层的最大的逻辑是存储持久数据?br>  q有一个就是领域层逻辑Q有时也被叫做业务逻辑。它包括输入和存储数据的计算。验证表C层来的数据Q根据表C层的指令指z一个基架构层逻辑?br>  领域逻辑中,ZL搞不清楚什么事领域逻辑Q什么是其它逻辑。例如,一个销售系l中有这样一个逻辑Q如果本月销售量比上个月增长10Q,p用红色标记。要实现q个功能Q你可能会把逻辑攑֜表示层中Q比较两个月的数字,如果出10Q,标CؓU色?br>  q样做,你就把领域逻辑攑ֈ了表C层中了。要分离q两个层Q你应该现在领域层中提供一个方法,用来比较销售数字的增长。这个方法比较两个月的数字,q返回booleancd。表C层则简单的调用该方法,如果q回trueQ则标记为红艌Ӏ?

 

 

              ———————————————?/p>

                      |                          客户端层                         |        用户交互QUI实现

                      | Browser,WirelessDevice,WebService |    Http, Soap 协议(SOP体系)

                      ———————————————?

                      ———————————————?

                      |                            表现?nbsp;                           |   集中dQ会话管?

                      | Struts,Jsf,Webwork,Tapstry, Velocity | 内容创徏Q格式,传?

                      ———————————————?

                       ———————————————?

                       |                       业务服务?nbsp;                       |  业务逻辑,事务,数据,服务

                       | SessionEJBQSpringQJdoframework) | SessionEjbQPOJO Service

                        ———————————————?

                       ———————————————?

                       |                            集中?nbsp;                           | 资源适配器,遗留/外部pȝ 

                       |Jms,Jdbc,Connnector,External Service  |       规则引擎Q工作流

                       ———————————————?

                       (持久化EntityBean,Hibernate,iBatis,Jdo,Dao,TopLink etc.)      

                        ———————————————?

                        |                           资源?nbsp;                           | 资源Q数据库Q外部服?

                        | DataBase,Resource,External Service   | (大型LQB2B集中pȝ)

                        ———————————————?

 

 

原文摘录如下Q?

Part 1 ?/b>
  层(layerQ这个概念在计算机领域是非常了不得的一个概c计机本n׃C一U层的概念:pȝ调用层、设备驱动层、操作系l层、CPU指o集。每个层都负责自q职责。网l同样也是层的概念,最著名的OSI的七层协议?br>  层到了Y仉域也一样好用。ؓ什么呢Q我们看看用层技术有什么好处:
  ?你用层Q但是不需要去了解层的实现l节?br>  ?可以使用另一U技术来改变基础的层Q而不会媄响上面的层的应用?br>  ?可以减少不同层之间的依赖?br>  ?Ҏ制定出层标准?br>  ?底下的层可以用来建立上的层的多Ҏ务?当然Q层也有qQ?br>  ?层不可能装所有的功能Q一旦有功能变动Q势必要波及所有的层?br>  ?效率降低?br>  当然Q层最隄一个问题还是各个层都有些什么,以及要承担何U责仅R?br>典型的三层结?br>  三层l构估计大家都很熟悉了。就是表C(presentationQ层, 领域QdomainQ层, 以及基础架构QinfrastructureQ层?br>  表示层逻辑主要处理用户和Y件的交互。现在最行的莫q于视窗囑Ş界面QwimpQ和Zhtml的界面了。表C层的主要职责就是ؓ用户提供信息Q以及把用户的指令翻译。传送给业务层和基础架构层?基础架构层逻辑包括处理和其他系l的通信Q代表系l执行Q务。例如数据库pȝ交互Q和其他应用pȝ的交互等。大多数的信息系l,q个层的最大的逻辑是存储持久数据?br>  q有一个就是领域层逻辑Q有时也被叫做业务逻辑。它包括输入和存储数据的计算。验证表C层来的数据Q根据表C层的指令指z一个基架构层逻辑?br>  领域逻辑中,ZL搞不清楚什么事领域逻辑Q什么是其它逻辑。例如,一个销售系l中有这样一个逻辑Q如果本月销售量比上个月增长10Q,p用红色标记。要实现q个功能Q你可能会把逻辑攑֜表示层中Q比较两个月的数字,如果出10Q,标CؓU色?br>  q样做,你就把领域逻辑攑ֈ了表C层中了。要分离q两个层Q你应该现在领域层中提供一个方法,用来比较销售数字的增长。这个方法比较两个月的数字,q返回booleancd。表C层则简单的调用该方法,如果q回trueQ则标记为红艌Ӏ?br>例子
  层技术不存在说永恒的技巧。如何用都要看具体的情冉|能够军_Q下面我列Z三个例子Q?br>  例子1Q一个电子商务系l。要求能够同时处理大量用LhQ用L范围遍及全球Q而且数字q在不断增长。但是领域逻辑很简单,无非是订单的处理Q以 及和库存pȝ的连接部分。这p求我?、表C层要友好,能够适应最q泛的用P因此采用html技术;2、支持分布式的处理,以胜d时几千的讉KQ?3、考虑未来的升U?br>  例子2Q一个租借系l。系l的用户的多,但是领域逻辑很复杂。这p求我们制作一个领域逻辑非常复杂的系l,另外Q还要给他们的用h供一个方便的输入界面。这Pwimp是一个不错的选择?br>  例子3Q简单的pȝ。非常简单,用户、逻辑。但是也不是没有问题Q简单意味着要快速交付,q且q要充分考虑日后的升U。因为需求在不断的增加之中?br>何时分层
  q样的三个例子,p求我们不能够一概而论的解决问题,而是应该针对问题的具体情况制定具体的解决Ҏ。这三个例子比较典型?br>  W二个例子中Q可能需要严格的分成三个层次Q而且可能q要加上另外的中介(mediatingQ层。例3则不需要,如果你要做的仅是查看数据Q那仅需要几个server面来放|所有的逻辑可以了?br>  我一般会把表C层和领域层/基础架构层分开。除非领域层/基础架构层非常的单,而我又可以用工hL的绑定这些层。这U两层架构的最好的例子?是在VB、PB的环境中Q很Ҏ可以构建出一个基于SQL数据库的windows界面的系l。这L表示层和基础架构层非常的一_但是一旦验证和计算 变得复杂hQ这U方式就存在先天~陷了?br>  很多时候,领域层和基础架构层看h非常cMQ这时候,其实是可以把它们攑֜一L。可是,当领域层的业务逻辑和基架构层的l织方式开始不同的时候,你就需要分开二者?br>更多的层模式
  三层的架构是最为通用的,其是对ISpȝ。其它的架构也有Q但是ƈ不适用于Q何情c?br>  W一U是Brown model [Brown et al]。它有五个层Q表C层QPresentationQ,控制/中介层(Controller/MediatorQ,领域层(DomainQ? 数据映射层(Data MappingQ? 和数据源层(Data SourceQ。它其实是在三层架构种增加了两个中间层。控?中介层位于表C层和领域层之间Q数据映层位于领域层和基础架构层之间?br>  表示层和领域层的中介层,我们通常UCC?领域中介层,是一个常用的分层ҎQ通常针对一些非可视的控件。例如ؓ特定的表C层l织信息格式Q在?同的H口间导航,处理交易边界Q提供Server的facade接口Q具体实现原理见设计模式Q。最大的危险是Q一些领域逻辑被放到这个层里,影响到其 它的表示层?br>  我常常发现把行ؓ分配l表C层是有好处的。这可以化问题。但表示层模型会比较复杂Q所以,把这些行为放到非可视化的对象中,q提取出一个表C?领域中介层还是值得的?br>  Brown ISA
  表示?表示?br>  控制/中介?表示-领域中介?br>  领域?领域?br>  数据映射?数据库交互模式中的Database Mapper
  数据源层 基础架构?br>  领域层和基础架构层之间的中介层属于本书中提到的Database Mapper模式Q是三种领域层到数据q接的办法之一。和表示-领域中介层一|有时候有用,但不是所有时候都有用?br>  q有一个好的分层架构是J2EE的架构,q方面的讨论可以见『J2EE核心模式』一书。他的分层是客户层(ClientQ,表示层(PresentationQ,业务层(Business Q,整合层(IntegrationQ,资源层(ResourceQ。差别如下图Q?br>  J2EE核心 ISA
  客户?q行在客h上的表示?br>  表示?q行在服务器上的表示?br>  业务?领域?br>  整合?基础架构?br>  资源?基础架构层通信的外部数?br>  微Y的DNA架构定义了三个层Q表C层QpresentationQ,业务层(businessQ,和数据存储层Qdata accessQ,q和我的架构怼Q但是在数据的传递方式上q有很大的不同。在微Y的DNA中,各层的操作都Z数据存储层传出的SQL查询l果集。这L话,实际上是增加了表C层和业务层同数据存储层之间的耦合度?DNA的记录集在层之间的动作类gData Transfer Object?

 

 

Part 2 l织领域逻辑
  要组l基于层的系l,首要的是如何l织领域逻辑。领域逻辑的组l有好几U模式。但其中最重要的莫q于两种ҎQTransation Script和Domain Model。选定了其中的一U,其它的都Ҏ军_。不q,q两者之间ƈ没有一条明昄分界Uѝ所以如何选取也是门大学问。一般来_我们认ؓ领域逻辑比较复杂的系l可以采用Domain Model?br>  Transation Script是对表C层用户输入的处理程序。包括验证和计算Q存储,调用其它pȝ的操作,把数据回传给表示层。用L一个动作表CZ个程序,q个E序?以是scriptQ也可以是transationQ也可以是几个子E序。在例子1中,验,在购物R中增加一本书Q显C递送状态,都可以是一?Transation Script?br>  Domain Model是要建立对应领域名词的模型,例如?中的书、购物R{。检验、计等处理都放到领域模型中?br>  Transation Script属于l构性思维QDomain Model属于OO思维。Domain Model比较难用,一旦习惯,你能够组l更复杂的逻辑Q你的思想会更OO。到时候,即是小的系l,你也会自然的使用Domain Model了?br>  但如何抉择呢Q如果逻辑复杂Q那肯定用Domain ModelQ如果只需要存取数据库Q那Transation Script会好一些。但是需求是在不断进化的Q你很难保证以后的需求还会如此简单。如果你的团队不善于使用Domain ModelQ那你需要权衡一下投入出比。另外,即是Transation ScriptQ也可以做到把逻辑和基架构分开Q你可以使用Gateway?br>  对例2Q毫无疑问要使用Domain Model。对?需要权衡了。而对于例3Q你很难说它来会不会像?那样Q你现在可以使用Transation ScriptQ但未来你可能要使用Domain Model。所以说Q架构的决策是至关紧要的?br>  除了q两U模式,q有其它中庸的模式。Use Case Controller是处于两者之间。只有和单个的用例相关的业务逻辑才放到对象中。所以大致上他们q是在用Transation ScriptQ而Domain Model只是Database Gateway的一l集合而已。我不太用这U模式?br>  Table Module是另一个中庸模式。很多的GUI环境依托于SQL查询的返回结果。你可以建立内存中的对象Q来把GUI和数据库分开来。ؓ每个表写一个模块,因此每一行都需要关键字变量来识别每一个实例?br>  Table Module适用于很多的lg构徏于一个通用关系型数据库之上Q而且领域逻辑不太复杂的情cMicrosoft COM 环境Q以及它的带ADO.NET?NET环境都适合使用q种模式。而对于JavaQ就不太适用了?br>  领域逻辑的一个问题是领域对象非常的臃ѝ因为对象的行ؓ太多了,cM太大了。它必须是一个超集。这p考虑哪些行ؓ是通用的,哪些不是Q可以由其它的类来处理,可能是Use Case ControllerQ也可能是表C层?br>  q有一个问题,复制。他会导致复杂和不一致。这比臃肿的危害更大。所以,宁可臃肿Q也不要复制。等到臃肿ؓx再处理它吧?br>选择一个地方运行领域逻辑
  我们的精力集中在逻辑层上。领域逻辑要么q行在Client上,要么q行在Server上?br>  比较单的做法是全部集中在Server上。这样你需要用html的前端以及web server。这样做的好处是升和维护都非常的简单,你也不用考虑桌面q_和Server的同步问题,也不用考虑桌面q_的其它Y件的兼容问题?br>  q行在Client适合于要求快速反应和没有联网的情c在Server端的逻辑Q用L一个再的hQ也需要信息从Client到Serverl一圈。反应的速度必然慢。再_|络的覆盖程度也不是说达C100Q?br>对于各个层来_又是怎么L呢?
  基础架构层:一般都是在Server啦,不过有时候也会把数据复制到合适的高性能桌面机,但这是就要考虑同步的问题了?br>  表示层在何处q行取决于用L面的设计。一个Windows界面只能在Clientq行。而一个Web界面是在Serverq行。也有特别的例子Q在桌面Zq行web server的,例如X Server。但q种情况的多?br>  在例1中,没有更多的选择了,只能选在Server端。因此你的每一个bit都会l一个大圈子。ؓ了提高效率,量使用一些纯html脚本?br>  Z选用Windows界面的原因主要就是需要执行一些非常复杂的dQ需要一个合适的应用E序Q而web GUI则无法胜仅R这是?的做法。不q,Z应该会渐渐适应web GUIQ而web GUI的功能也会越来越强大?br>  剩下的是领域逻辑。你可以全部攑֜ServerQ也可以全部攑֜ClientQ或是两辚w放?br>  如果是在Client端,你可以考虑全部逻辑都放在Client端,q样臛_保证所有的逻辑都在一个地斏V而把web serverU至ClientQ是可以解决没有联网的问题,但对反应旉不会有多大的帮助。你q是可以把逻辑和表C层分离开来。当Ӟ你需要额外的升和维护的工作?br>  在Client和Server端都h逻辑q不是一个好的处理办法。但是对于那些仅有一些领域逻辑的情冉|适用的。有一个小H门Q把那些和系l的其它部分没有联系的逻辑装h?领域逻辑的接?br>  你的Server上有一些领域逻辑Q要和Client通信Q你应该有什么样的接口呢Q要么是一个http接口Q要么是一个OO接口?br>  http接口适用于web browserQ就是说你要选择一个html的表C层。最q的新技术就是web serviceQ通过Zhttp、特别是XMLq行通信。XML有几个好处:通信量大Q结构好Q仅需一ơ的回\。这栯E调用的的开销小了。同ӞXMLq是一个标准,支持q_异构。XML又是Z文本的,能够通过防火墙?br>  虽然XML有那么多的好处,不过一个OO的接口还是有它的价值的。hhtp的接口不明显Q不Ҏ看清楚数据是如何处理的。而OO的接口的Ҏ带有变量和名字,Ҏ看出处理的过E。当Ӟ它无法通过防火墙,但可以提供安全和事务之类的控制?br>  最好的q是取二者所ѝOO接口在下Qhttp接口在上。但q样做就会得实现机刉常的复杂?br>Part 3 l织web Server
  很多使用html方式的hQƈ不能真正理解q种方式的优炏V我们有各种各样好用的工P但是却搞到让E序难以l护?br>  在web server上组l程序的方式大致可以分ؓ两种Q脚本和server page?br>  脚本方式是一个程序,用函数和Ҏ来处理http调用。例如CGI脚本和java servlet。它和普通的E序q没有什么两栗它从web面上获得html string形态的数据Q有时候还要做一些表辑ּ匚wQ这正是perl能够成ؓCGI脚本的常用语a的原因。而java servelet则是把这U分析留l程序员Q但它允许程序员通过关键字接口来讉K信息Q这样就会少一些表辑ּ的判断。这U格式的web server输出是另一Uhtml stringQ称为responseQ可以通过数据来操作?br>  p糕的是数据是非常ȝ的,因此导致了server page的生,例如PHPQASPQJSP?br>  server page的方式适合回应QresponseQ的处理比较单的情况。例如“显C歌曲的明细”,但是你的决策取决于输入的时候,׃比较杂ؕ。例如“通俗和摇滚的昄格式不同”?br>  脚步擅长于处理用户交互,server page擅长于处理格式化回应信息。所以很自然的就会采用脚本处理请求的交互Q用server page处理回应的格式化。这其实是著名的MVCQModel View ControllerQ模式中的view/controller的处理?br>  应用Model View Controller模式首要的一点就是模型要和web服务完全分离开来。用Transaction Script或Domain Model模式来封装处理流E?br>  接下来,我们把剩余的模式归入两cL式中Q属于Controller的模式,以及属于View的模式?br>View模式
  Viewq边有三U模式:Transform ViewQTemplate View和Two Step View。Transform View和Template View的处理只有一步,领域数据{换ؓhtml。Two Step View要经q两步的处理Q第一步把领域数据转换为逻辑表示形式Q第二步把逻辑表示转换为html?br>  两步处理的好处是可以逻辑集中于一处,如果只有一步,变化发生Ӟ你就需要修Ҏ一个屏q。但q需要你有一个很好的逻辑屏幕l构。如果一个web应用有很多的前端用户Ӟ两步处理q别的好用。例如航I系l。用不同的W二步处理,可以获得不同的逻辑屏幕?br>  使用单步Ҏ有两个可选的模式QTemplate ViewQTransform View。Template View其时是把代码嵌入到html面中,像现在的server page技术,如ASPQPHPQJSP。这U模式灵z,强大Q但昑־杂ؕ无章。如果你能够把逻辑E序逻辑在页面结构之外进行很好的l织Q这U模式还是有它的优点的?br>  Transform View使用译方式。例如XSLT。如果你的领域数据是用XML处理的,那这U模式就特别的好用?br>Controller模式
  Controller有两U模式。一般我们会Ҏ动作来决定一Ҏ制。动作可能是一个按钮或链接。所q种模式是Action Controller模式?br>  Front Controller更进一步,它把httph的处理和处理逻辑分离开来。一般是只有一个web handle来处理所有的h。你的所有的httph的处理都׃个对象来负责。你改变动作l构的媄响就会降到最?/p>

我爱佛_ 2007-06-08 19:32 发表评论
]]>
վ֩ģ壺 Դ| | Դ| | Ϫ| ƽ| | | | | | | | | ɳ| | | | | Ű| | ɽ| | | | | »| ¡| | | Ǩ| ɽ| | | | ɳ| | ¬| ͨ| ϰˮ| |