溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

xml如何實(shí)現(xiàn)多渠道接入網(wǎng)站的構(gòu)架的方法

發(fā)布時(shí)間:2020-10-24 17:01:00 來(lái)源:億速云 閱讀:133 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)xml如何實(shí)現(xiàn)多渠道接入網(wǎng)站的構(gòu)架的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧。

 一.背景
  在現(xiàn)在的網(wǎng)站中,接入的渠道是越來(lái)越多了,技術(shù)也是越來(lái)越先進(jìn),WAP, SMS,EMAIL, 傳統(tǒng)的Web, Socket等等,如果連數(shù)據(jù)庫(kù)和LDAP也算接入的話,那在設(shè)計(jì)之中需要擴(kuò)展的空間要做到很好 很好,才保證在添加新的渠道情況下不需要更多的修改代碼甚至不改代碼的情況。但可能嗎?想也不可能,但有什么方式可以更好的解決這種多渠道接入的框架的完美性呢?

二.構(gòu)架

在現(xiàn)有的所有接入都已經(jīng)使用上的時(shí)候,設(shè)計(jì)者看的都眼花繚亂了,如果是為了湊份子,那這些程序怎么寫都可以,而且也肯定可以實(shí)現(xiàn),但維護(hù)起來(lái)就會(huì)比較痛苦,還是回到那個(gè)問題,怎么可以實(shí)現(xiàn)更完美呢?在項(xiàng)目組的構(gòu)架討論中,提出了路由的感念。

進(jìn)行連接所有這些渠道的核心就是這個(gè)章魚的頭XMLRouter,Router在此的作用是溝通所有渠道,實(shí)現(xiàn)數(shù)據(jù)的路由,爭(zhēng)強(qiáng)系統(tǒng)在構(gòu)架上的擴(kuò)展性和靈活性,好處會(huì)很多很多。稱呼為XMLRouter是因?yàn)槿绻皇褂肵ML這種靈活而又規(guī)范的語(yǔ)言來(lái)做為數(shù)據(jù)傳輸?shù)拿浇?那Router的工作量也同樣會(huì)成倍的增加,定義好XML的規(guī)范后將為以后的擴(kuò)展帶來(lái)很多好處.

三.思想和模式
  XMLRouter的最初想法來(lái)自于計(jì)算機(jī)的主板和<<Design Pattern>>之中的Builder Pattern, 計(jì)算機(jī)主板的PCI 插槽定義了PCI的規(guī)范,只要你生產(chǎn)的卡符合PCI標(biāo)準(zhǔn),那你插入到這個(gè)主板上就可以工作, 至于里面是怎么工作的則是已經(jīng)封裝好了. Builder Pattern則是提出將復(fù)雜的構(gòu)建分離開來(lái), 一步一步的進(jìn)行實(shí)現(xiàn).XMLRouter是將這些復(fù)雜的渠道分離開來(lái),一個(gè)個(gè)的進(jìn)行表現(xiàn).
  Services思想:為了能和Router進(jìn)行溝通,在這些渠道接入時(shí)必須定義統(tǒng)一的接口,這里成為Services, 只要符合Services規(guī)范的程序就可以接入到Router并進(jìn)行數(shù)據(jù)的路由.
  Factory模式和Composite模式
  XMLRouter在實(shí)際的設(shè)計(jì)中將采用Factory模式產(chǎn)生,Router由RouterFactory生產(chǎn), 在投入使用時(shí)將放置于隊(duì)列中,傳遞數(shù)據(jù)和接收數(shù)據(jù)以及返回?cái)?shù)據(jù)都從隊(duì)列中取相應(yīng)的Router來(lái)調(diào)用,應(yīng)用了Composite的模式.
  四.XML配置文件
  XML文件對(duì)于Router之中的使用分為兩個(gè)部分, 第一個(gè)是Router的配置,如:

<?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>

 這是Router的配置文件, service節(jié)點(diǎn)代表需要接入的渠道, service節(jié)點(diǎn)包含connector子節(jié)點(diǎn), 子節(jié)點(diǎn)的配置根據(jù)type來(lái)區(qū)分, 如果是database則包含url, user, passwd,driver等屬性, 如果是socket則包含 port, maxthread等屬性, 屬性值可以根據(jù)自己的定義來(lái)配置.
  另一種XML文件則是XML交易數(shù)據(jù)文件,用于在所有的services中傳遞數(shù)據(jù),每個(gè)Services自己包涵一個(gè)相應(yīng)的XML文件,比如webtrans.xml格式如下:

<?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>
  相應(yīng)的dbtrans.xml格式如下
  <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>

感謝各位的閱讀!關(guān)于xml如何實(shí)現(xiàn)多渠道接入網(wǎng)站的構(gòu)架的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI