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

  介绍

小编给大家分享一下使用XML实现多渠道接入网站构架的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

一。背景

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

二。构架

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

【图一】

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

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

【图二】

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

三。思想和模式

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

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

工厂模式和复合模式

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

四。XML配置文件

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

以下是引用片段:

& lt; ?xml version=?.0”;比;   & lt; services>   & lt; !——数据库服务比;   & lt;服务名称=癲atabase"类型=癲atabase"类=癱om.web.service.DBService"比;   & lt;连接器   司机=癱om.microsoft.jdbc.sqlserver.SQLServerDriver"   url=癹dbc:微软::状态"置疑"//192.168.0.179:1433"用户=皌est"   passwd=皌est"/比;   & lt;/service>   & lt; !——Web服务——比;   & lt;服务名称=皐eb"类型=皐eb"类=癱om.web.service.WebService"比;   & lt;连接器/比;   & lt;/service>   ......   & lt;/services>

这是路由器的配置文件,服务节点代表需要接入的渠道,服务节点包含连接器子节点,子节点的配置根据类型来区分,如果是数据库则包含url、用户、密码、司机等属性,如果是套接字则包含港口,maxthread等属性,属性值可以根据自己的定义来配置。

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

以下是引用片段:

& lt; ?xml version=?.0”;比;   & lt; transaction>   & lt;反式的名字=癮ddDoc"服务=癲atabase"方法=癷nsert"比;   & lt;属性名=癱reatetime"类型=皌imestamp"/比;   & lt;属性名=癱reatorid"类型=發ong"/比;   & lt;属性名=癲octypeid"类型=癷nt"/比;   & lt;属性名=癲ocstatusid"类型=癷nt"/比;   & lt;/trans>   & lt;/transaction>

相应的dbtrans。xml格式如下

以下是引用片段:

& lt;反式name=癮ddDoc"表=癟DOC_DOCS"方法=癷nsert"比;   & lt; primarykey name=癲ocid"/比;   & lt; set>   & lt;属性名=癱reatetime"类型=皌imestamp"/比;   & lt;属性名=癱reatorid"类型=發ong"/比;   & lt;属性名=癲octypeid"类型=癷nt"/比;   & lt;属性名=癲ocstatusid"类型=癷nt"/比;   & lt;/set>   & lt;/trans>

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