e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> 如何使用XML实现多渠道接入网站的构架 >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
如何使用XML实现多渠道接入网站的构架
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

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

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

一.背景

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

二.构架

【图一】

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

在项目组的构架讨论中,我提出了路由的感念,并得到了大家统一的认可,如图二显示

【图二】

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

三.思想和模式

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

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

Factory模式和Composite模式

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

四.XML配置文件

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

[pre]<?xml version="1.0" ?>

<services>

<!-- database Service -->

<service name="database" type="database" class="com.web.service.DBService">


<connector

driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://192.168.0.179:1433" user="test"

passwd="test" />

</service>

<!-- Web Service-->

<service name="web" type="web" class="com.web.service.WebService" >

<connector />

</service>

……

</services>[/pre]

这是Router的配置文件, service节点代表需要接入的渠道, service节点包含

connector子节点, 子节点的配置根据type来区分, 如果是database则包含url, user, passwd, driver等属性, 如果是socket则包含 port, maxthread等属性, 属性值可以根据自己的定义来配置.

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

[pre]<?xml version="1.0" ?>

<transaction>

<trans name="addDoc" service="database" method="insert">

<property name="createtime" type="timestamp"/>

<property name="creatorid" type="long"/>

<property name="doctypeid" type="int"/>

<property name="docstatusid" type="int"/>

</trans>

</transaction>[/pre]

相应的dbtrans.xml格式如下

[pre] <trans name="addDoc" table="TDOC_DOCS" method="insert">

<primarykey name="docid" />

<set>

<property name="createtime" type="timestamp"/>

<property name="creatorid" type="long"/>

<property name="doctypeid" type="int"/>

<property name="docstatusid" type="int"/>


</set>

</trans>[/pre]

其余XML则可按这样的规则来定制

Ps:请参阅我之前写的文章

”使用XML封装数据库操作语句的实现”

五.技术实现

RouterFactory

  1. package com.web.router;
  2. import com.web.platform.Exception.RouterException;
  3. import java.util.Hashtable ;
  4. /**
  5. * Router产生和清除的类
  6. */
  7. public class RouterFactory
  8. {
  9. /**
  10. * Router存储的树front
  11. */
  12. private static Hashtable QueuePairFront = null ;
  13. /**
  14. * Router存储的树back
  15. */
  16. private static Hashtable QueuePairBack = null ;
  17. /**
  18. * Router存储的树
  19. */
  20. private static Hashtable QueueRouter = null ;
  21. /**
  22. * 返回的XMLRouter
  23. */
  24. public static XMLRouter instance = null ;
  25. /**
  26. * Router的定义
  27. */
  28. public static RouterDefine routerdefine = null ;
  29. /**
  30. * Router的ID号
  31. */
  32. public static

    1 2 3 下一页
  • 上一篇教程: 深入浅出taglib
  • 下一篇教程: 结合”XML封装数据库操作语句的实现”一文使用XML实现网站构架
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.