Month: August 2008

批量数据传输既要发数据文件,也要发标志文件

大师l [13:00]: 标志文件有一般有2种功能,一种是表明此文件已传送完毕,一种是核对,即在文件内容写明传送文件的大小和条数 大师l [13:01]: 对于批处理来说,加上标志文件是必不可少的 菜鸟 [13:01]: 受教了 大师l [13:02]: 如果仅仅说明文件已传送完毕,可为空 大师l [13:06]: 标志文件肯定是需要的 菜鸟 [13:06]: 哦 大师l [13:07]: 如果他是轮询方式处理文件,你一传文件她就检测到文件,他就开始处理,可是你的文件还正在处理呢 大师l [13:08]: 如果文件是损坏的文件,他也不知道的

为嘛要分层?

    如果分了三层,当第三层的接口改了,只需要改第二层的调用代码,而不用改第一层的代码。如果不分层全都粘在一起,比如说展现逻辑和业务逻辑都调用了DAO接口,那么DAO接口变化时,业务逻辑代码和展现逻辑代码都要改了

其他企业级模式

Active Record     将数据持久化的逻辑(CRUD操作)直接写在Domain Object里面。“包装数据库表或视图中数据行的对象,封装数据库访问,在数据上添加域逻辑”

Core J2EE Patterns 笔记

Presentation Tier Patterns: 1. Interceptiing Filter。 一种AOP思想的体现。将requet/response的“通用”的pre-处理和post-处理放到一个filter servlet中来。这样就只需写一个filter,而不必将通用代码在各个servlet中都写一份。关于“通用”代码,例子有会话验证、编码转换等 2.Front Controler。 一种Facade思想。将所有的请求都交给一个或几个Servlet集中处理。这个Servlet可以把按请求的具体内容再将它分发给真正的处理者。这样的好处是可以只写一份公用代码,对所有request应用通用逻辑,还可以限制WEB系统的access point。 典型的例子有Spring的DispatcherServlet 3.Context Object Controller 不去从与协议密切相关的容器中去拿东西(如request.getParameter()),而是从与协议无关的context中去拿。这样可以去掉应用对协议的依赖。 个人认为这个模式没多大意义,因为所有的WEB应用基本上都完全采用HTTP协议 4.Application Controller 将action管理和view管理集中化、模块化。 5.View Helper 将View与它的处理逻辑分开。它的处理逻辑包括 业务逻辑、控制逻辑、展现格式化逻辑等。典型的例子如 Controller,JSTL,自建标签 等 6.Composite View 在页面上,如果要使用复合视图时,要使布局和各页面的内容分离。如Tiles,Sitemesh 7.Service to Worker 在把控制权传给View之前处理好请求并执行业务逻辑 8.Dispatch View 如果业务逻辑很少,并且View自己可以处理请求并执行业务逻辑,则把控制权直接交给View 9.Business Delegate 在客户端/表现层 和 业务层之间再放一个Business Delegate,它代理业务层向客户端/表现层服务,并隐藏业务层的实现细节。主要好处有: a.消除业务层和客户端/表现层之间的耦合 b.把网络、技术方面的exception(如naming、socket)翻译成可读的exception c.Business Delegate可以做一些附加的动作,比如出错重试、验证、缓存、同步等,而且这些细节客户端/表现层都不需要知道 d.查找远端对象并与之交互的职责交给了Business Delegate,表现层/客户端不需要关心这些事情 10.Service Locator 使用一个接口,集中地、透明地定位远端的服务组件。 11.Session Facade 在业务层,向远端的Client只暴露一个集中的服务接口。这样可以向Client隐藏服务层的细节,并可以集中地进行事务管理和安全管理。我不太认可这种方式,因为客户要求的服务是非常多的,这会使得此Facade中也存在很多并且相关性不是很强的方法,不符强内聚的原则 …

Core J2EE Patterns 笔记 Read More »