首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > 编程杂谈 > 正文
建立一个动态WEB服务来简化代码
来源:ZDNET 2007年03月09日 10:56 网友评论:0条 点击:

  许多开发者应用WEB服务与其业务逻辑进行通信,这样做有许多好处。在构架方面,这种方法有其它方法所没有的一系列灵活性。但是,它也存在一些缺点。缺点之一在于保持WEB服务方法与业务逻辑方法同步涉及大量繁琐的工作。本文为你说明如何在享受WEB服务好处的同时,避免上述同步问题。

  推理过程

  我最近设计并建立了一个应用程序,它利用WEB服务进行业务层通信。其界面应用一个定制的组件来要求数据,定制的组件使用WEB服务与业务层进行通信。这样这个界面可配置在我们希望的任何地方,而且可以通过SSL确保所有通信。它的一般构架与图A类似。

  图A

按此在新窗口浏览图片

  一般构架

  业务逻辑类包含静态方法,可在数据送交到数据访问层前对其进行处理,或通过WEB服务返回通信组件。

  前两个星期,当我们把它应用于主系统时,这个程序运行良好。但随后,我们开始在业务逻辑中增加越来越多的方法,它们需要通过WEB服务来揭示。由于我们要为WEB服务和业务逻辑类设定1:1的比例,这一过程要花费大量的时间。每次我们增加一个新业务逻辑类,我们必须建立一个新的WEB服务;为WEB服务安排代理类;保持代理类与WEB服务同步,并保持WEB服务与业务逻辑同步。

  我们的最后期限很短,时间安排也非常紧。我们需要想出一个办法来自动化或简化与WEB服务应用有关的维护过程。互相讨论之后(如代码生成器——我们已使用一个代码生成器从数据库表中生成类),我想出一个主意:使用反射自动调用业务逻辑类中的方法,并通过WEB服务返回其结果。半小时后,我建立了第一个原型,约二个小时后,我建成了一个我感觉可用于生产环境中的组件。

  安装

  让我们假设你已经开发出一些类。这些类可称之为“数据传输对象”(DTO——在这里阅读更多DTO的有关信息)。

  CustomerData——保存单独客户数据

  OrderData——保存单独订单数据

  我们还建立了以下这些类,它们的任务是与数据访问层进行通信,并移植CustomerData和OrderData对象:

  Customer——它有两个静态方法,LoadByCustomerID(int customerID)和LoadByOrderID(int orderID)。这两个方法都返回单独一个CustomerData对象。

  Order——它有两个静态方法,LoadByOrderID(int orderID) 和LoadAllForCustomerID(int customerID)。

  正常情况下,在这种情形中,会存在两个WEB服务——一个返回CustomerData对象,一个返回OrderData对象(你可以把它们结合到一个WEB服务中,但当它们处理大量类时会出现堵塞)。这两个WEB服务各自有两个方法。程序将从界面层,或像我的例子一样从通信组件中调用WEB服务方法。然后WEB服务再调用业务层获得所需的数据。因此在正常情况下,每个WEB服务获得两个DTO、两个类、两个WEB服务和两个方法。(见图B)

  例如:

  图B

按此在新窗口浏览图片

安装

  我使用的应用程序有大约100个这样的实例,我们每天都在增加更多实例。很明显,由于时间限制,那不是解决问题的办法。

  应用反射,你可以利用一个具有两个方法的WEB服务来处理你需要在业务层进行的每一个单独调用。这样你就可以从WEB服务与代理类维护工作中解放出来。(见图C)

  例如:

  图C

按此在新窗口浏览图片

反射

首页 上一页 [1] [2] 下一页 尾页
上一篇:2007年值得去思考的N大软件技术   下一篇:让你不苦恼:Java的中文编程配置心得
收藏此页】【打印】【关闭
 相关文章  我要点评
·SQL2000功能可作为Web服务提供
·Java语言实现支持视频点播的WEB服务器

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】