北方站长站
客服热线:0632-5117766

使用XML实现多渠道接入网站的构架

[2008-01-31 15:28:46] 作者:Northz.com 来源:北方站长网

Tags:←

  

  其实写这篇文章的目的最多的想法是把自己在去年在瑞士做项目时应用的一个框架给展现出来让大家共享,但我又有点担心我的表达能力不能将我在里面使用的思想很好的表现出来,所以迟迟 不敢下笔,最后还是下了决心,写吧, 不行就在好好改改,当然也希望大家多提些意见。

pvB北方站长站

pvB北方站长站

  一.背景 pvB北方站长站

  在现在的网站中,接入的渠道是越来越多了,技术也是越来越先进,WAP, SMS,EMAIL, 传统的Web, Socket等等,如果连数据库和LDAP也算接入的话,那在设计之中需要扩展的空间要做到很好 很好,才保证在添加新的渠道情况下不需要更多的修改代码甚至不改代码的情况。但可能吗?我想也不可能,但有什么方式可以更好的解决这种多渠道接入的框架的完美性呢? pvB北方站长站

  二.构架 pvB北方站长站

使用XML实现多渠道接入网站的构架

  【图一】 pvB北方站长站

  如图一所显示,在现有的所有接入都已经使用上的时候,设计者看的都眼花缭乱了,如果是为了凑份子,那这些程序怎么写都可以,而且也肯定可以实现,但维护起来就会比较痛苦,还是回到那个问题,怎么可以实现更完美呢?在项目组的构架讨论中,我提出了路由的感念,并得到了大

pvB北方站长站

pvB北方站长站

  家统一的认可,如图二显示 pvB北方站长站

使用XML实现多渠道接入网站的构架

  【图二】 pvB北方站长站

  图二看起来象个八爪的章鱼,章鱼腿分别连接所有的接入渠道,进行连接所有这些渠道的核心就是这个章鱼的头XMLRouter,Router在此的作用是沟通所有渠道,实现数据的路由,争强系统在构架上的扩展性和灵活性,好处会很多很多。称呼为XMLRouter是因为如果不使用XML这种灵活而又规范的语言来做为数据传输的媒介,那Router的工作量也同样会成倍的增加,定义好XML的规范后将为以后的扩展带来很多好处. pvB北方站长站

  三.思想和模式 pvB北方站长站

  XMLRouter的最初想法来自于计算机的主板和<<Design Pattern>>之中的Builder Pattern, 计算机主板的PCI 插槽定义了PCI的规范,只要你生产的卡符合PCI标准,那你插入到这个主板上就可以工作, 至于里面是怎么工作的则是已经封装好了. Builder Pattern则是提出将复杂的构建分离开来, 一步一步的进行实现.XMLRouter是将这些复杂的渠道分离开来,一个个的进行表现.

pvB北方站长站

pvB北方站长站

  Services思想:为了能和Router进行沟通,在这些渠道接入时必须定义统一的接口,这里成为Services, 只要符合Services规范的程序就可以接入到Router并进行数据的路由.

pvB北方站长站

pvB北方站长站

  Factory模式和Composite模式 pvB北方站长站

  XMLRouter在实际的设计中将采用Factory模式产生,Router由RouterFactory生产, 在投入使用时将放置于队列中,传递数据和接收数据以及返回数据都从队列中取相应的Router来调用,应用了Composite的模式. pvB北方站长站

  四.XML配置文件

pvB北方站长站

pvB北方站长站

  XML文件对于Router之中的使用分为两个部分, 第一个是Router的配置,如: pvB北方站长站

  <?xml version="1.0" ?>pvB北方站长站
<services>pvB北方站长站
   <!-- database Service -->pvB北方站长站
   <service name="database" type="database" class="com.web.service.DBService">pvB北方站长站
   <connectorpvB北方站长站
       driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"pvB北方站长站
       url="jdbc:microsoft:sqlserver://192.168.0.179:1433" user="test"pvB北方站长站
       passwd="test" />pvB北方站长站
   </service>pvB北方站长站
   <!-- Web Service-->pvB北方站长站
   <service name="web" type="web" class="com.web.service.WebService" >pvB北方站长站
     <connector />pvB北方站长站
   </service>pvB北方站长站
……pvB北方站长站
</services>

pvB北方站长站

pvB北方站长站

  这是Router的配置文件, service节点代表需要接入的渠道, service节点包含connector子节点, 子节点的配置根据type来区分, 如果是database则包含url, user, passwd,driver等属性, 如果是socket则包含 port, maxthread等属性, 属性值可以根据自己的定义来配置.

pvB北方站长站

pvB北方站长站

  另一种XML文件则是XML交易数据文件,用于在所有的services中传递数据,每个Services自己包涵一个相应的XML文件,比如webtrans.xml格式如下:

pvB北方站长站

pvB北方站长站

  <?xml version="1.0" ?>pvB北方站长站
<transaction>pvB北方站长站
   <trans name="addDoc" service="database" method="insert">pvB北方站长站
     <property name="createtime" type="timestamp"/>pvB北方站长站
     <property name="creatorid" type="long"/>pvB北方站长站
     <property name="doctypeid" type="int"/>pvB北方站长站
     <property name="docstatusid" type="int"/>      pvB北方站长站
   </trans>    pvB北方站长站
</transaction>
pvB北方站长站

  相应的dbtrans.xml格式如下

pvB北方站长站

pvB北方站长站

  <trans name="addDoc" table="TDOC_DOCS" method="insert">pvB北方站长站
     <primarykey name="docid" />    pvB北方站长站
     <set>pvB北方站长站
       <property name="createtime" type="timestamp"/>pvB北方站长站
       <property name="creatorid" type="long"/>pvB北方站长站
       <property name="doctypeid" type="int"/>pvB北方站长站
       <property name="docstatusid" type="int"/>      pvB北方站长站
     </set>pvB北方站长站
   </trans>

pvB北方站长站

pvB北方站长站

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

下一篇链接:将XML数据转换成HTML

上一篇链接:初学XML的基础知识(认识XML的作用)

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面