検索
ホームページバックエンド開発XML/RSS チュートリアルXMLを使用してマルチチャネルアクセスWebサイトの構造を実現する方法

1. 背景

今日の Web サイトでは、アクセス チャネルがますます増えており、WAP、SMS、EMAIL、従来の Web、Socket などのテクノロジーがますます進歩しています。データベースや LDAP さえあれば、アクセスの観点から言えば、新しいチャネルを追加するときにコードの修正やさらにはコードの変更が不要になるように、設計内で拡張する必要があるスペースは非常に優れたものでなければなりません。しかし、それは不可能だと思いますが、このマルチチャネルアクセスフレームワークの完璧さをより良く解決する方法はありますか?

XMLを使用してマルチチャネルアクセスWebサイトの構造を実現する方法 [図 1]

図の 1 つは、既存のアクセスがすべて使用されてしまったとき、シェアを獲得するためであれば、これらのプログラムはどのような方法でも作成でき、確実に実装できるが、それが困難であることを示しています。質問に戻りましょう。どうすればより完璧になれるでしょうか? 写真 2 は、8 本の爪を持つタコのように見えます。脚はすべての Access チャネルに接続されており、これらすべてのチャネルを接続する中心となるのは、このタコの頭である xmlRouter です。ここでの Router の役割は、すべてのチャネルと通信し、データ ルーティングを実現し、拡張性と柔軟性を追求することです。アーキテクチャのシステムには多くの利点があります。 XMLRouter と呼ばれる理由は、柔軟で標準化された言語である XML をデータ伝送媒体として使用しないと、ルーターの負荷が飛躍的に増加するためです。XML 仕様を定義すると、将来の拡張に多くのメリットがもたらされます。

3. アイデアとパターン

XMLRouter の元のアイデアは、コンピューターのマザーボードの Builder パターンから来ており、コンピューターのマザーボードの PCI スロットは、作成するカードに限り PCI 仕様を定義します。 PCI 標準に準拠しており、マザーボードに接続すると動作します。Builder パターンは、複雑な構造を分離し、段階的に実装することを提案しています。複雑なチャネル それらを分離して 1 つずつ実行します。 XMLを使用してマルチチャネルアクセスWebサイトの構造を実現する方法

サービスの考え方: ルーターと通信するには、プログラムがサービス仕様に準拠している限り、統一されたインターフェイスを定義する必要があります。

Factory モードと Composite モード

実際の設計では Router が生成され、RouterFactory に配置されます。キューからデータを送信し、データを受信し、データを返す。対応する Router がキューから取得され、複合モードが適用されます。

4. XML 設定ファイル

XML ファイルは、使用するために 2 つの部分に分かれています。最初のものは、次のようなルーターの構成です。

以下は引用部分です:

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

これは、ルーターの構成ファイルです。サービス ノードには、コネクタのサブノードが含まれます。データベースの場合、サブノードの構成は、URL、ユーザー、パスワード、ドライバーなどの属性を含みます。ポート、maxthread などの属性が含まれます。属性値は独自の定義に従って構成できます。

別のタイプの XML ファイルは、すべてのサービスでデータが転送されるために使用されます。サービスには、対応する 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>

対応する 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>





以下は引用の断片です:


package com.web.router; 
import com.web.platform.Exception.RouterException; 
import java.util.java/util/Hashtable.java.html" target="_blank">Hashtable;




サービスクラス


以下は引用部分です:

/** 
 * Router产生和清除的类 
 */ 
public class RouterFactory  
{ 
  /** 
   * Router存储的树front 
   */ 
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairFront = null; 
  /** 
   * Router存储的树back 
   */ 
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairBack = null;  
/** 
   * Router存储的树 
   */ 
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueueRouter = null;  
  /** 
   * 返回的XMLRouter 
   */ 
  public static XMLRouter instance = null; 
  /** 
   * Router的定义 
   */ 
  public static RouterDefine routerdefine = null; 
  /** 
   * Router的ID号 
   */ 
  public static long routeIndex = 0; 
  /** 
   * @roseuid 3F169C21027C 
   */ 
  public RouterFactory()  
  { 
  } 
  /** 
   * 初始化Hashtable和Vector 
   */ 
  public static void initFactory() throws java/lang/Exception.java.html" target="_blank">Exception 
  { 
      QueuePairFront = new java/util/Hashtable.java.html" target="_blank">Hashtable();  
      QueuePairBack = new java/util/Hashtable.java.html" target="_blank">Hashtable();  
      QueueRouter    = new java/util/Hashtable.java.html" target="_blank">Hashtable(); 
      initRouteDefine(); 
  }  
/** 
   * 初始化Route的设置 
   *  
   */ 
  private static void initRouteDefine() throws java/lang/Exception.java.html" target="_blank">Exception 
  { 
      if( routerdefine == null ) 
        routerdefine = new RouterDefine(); 
      routerdefine.loadRouterDef(); 
  } 
  /** 
   * 返回实例 
   * @return com.web.router.XMLRouter 
   */ 
  public static XMLRouter getInstance(long index) throws RouterException 
  { 
     return (XMLRouter)QueueRouter.get(new java/lang/Long.java.html" target="_blank">Long(index)); 
  }  
  /** 
   * 产生一个XMLRouter的实例 
   * @return com.web.router.XMLRouter 
   * @roseuid 3F1618A103BC 
   */ 
  public static XMLRouter popInstance() throws RouterException 
  { 
      routeIndex ++; 
      instance = new XMLRouter(routeIndex); 
      setDefine( instance ); 
      QueueRouter.put(new java/lang/Long.java.html" target="_blank">Long(routeIndex), instance);      
     return instance; 
  } 
  /** 
   * 清空Hashtable,Vector等 
   * @roseuid 3F1618B203C1 
   */ 
  private static void freeResource() throws java/lang/Exception.java.html" target="_blank">Exception 
  { 
      QueuePairFront.clear(); 
      QueuePairBack.clear(); 
      QueueRouter.clear(); 
      QueuePairFront = QueuePairBack = QueueRouter = null; 
} 
  /** 
   * 清除实例 
   * @param instanceID 
   * @throws Exception 
   */ 
  public static void removeInstance(XMLRouter instance) throws java/lang/Exception.java.html" target="_blank">Exception  
  { 
      instance.clear(); 
     QueueRouter.remove( new java/lang/Long.java.html" target="_blank">Long(instance.getIndex() ) ) ; 
  } 
/** 
 * Method isNull. 
 * @return boolean 
 */ 
  public static boolean isNull() 
  { 
     ……  
      return false; 
  } 
}


次に、ここでは紹介しませんが、すべての Services クラスを実装する必要があります

6. 説明

これまでのところ、この Router は同期トランザクションのみを実装できます。現時点では非同期トランザクションをサポートしていませんが、Router は Composite モデルを使用して設計されているため、ここでは詳細な分析は行いません


上記は XML を使用する方法です。マルチチャネル アクセス Web サイトの構造を実装します。関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
RSSドキュメント:Webシンジケーションの基礎RSSドキュメント:Webシンジケーションの基礎Apr 18, 2025 am 12:04 AM

RSSドキュメントは、頻繁に更新されるコンテンツを公開および購読するために使用されるXMLベースの構造化されたファイルです。その主な機能には、1)自動化されたコンテンツの更新、2)コンテンツの集約、3)ブラウジング効率の改善。 RSSFeedを通じて、ユーザーはタイムリーにさまざまなソースから最新情報を購読および取得できます。

RSSのデコード:コンテンツフィードのXML構造RSSのデコード:コンテンツフィードのXML構造Apr 17, 2025 am 12:09 AM

RSSのXML構造には、1。XML宣言とRSSバージョン、2。チャネル(チャネル)、3。アイテムが含まれます。これらの部品はRSSファイルの基礎を形成し、XMLデータを解析することにより、ユーザーがコンテンツ情報を取得および処理できるようにします。

XMLベースのRSSフィードを解析して利用する方法XMLベースのRSSフィードを解析して利用する方法Apr 16, 2025 am 12:05 AM

rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml、navigating structure、and extractingdata.applicationsincludebuildingnewsaggretationsandtrackingpodcastepisodes。

RSSドキュメント:お気に入りのコンテンツをどのように配信するかRSSドキュメント:お気に入りのコンテンツをどのように配信するかApr 15, 2025 am 12:01 AM

RSSドキュメントは、XMLファイルを介してコンテンツの更新を公開することで機能し、ユーザーはRSSリーダーを介して通知をサブスクライブして受信します。 1。コンテンツパブリッシャーは、RSSドキュメントを作成および更新します。 2。RSSリーダーは、XMLファイルに定期的にアクセスして解析します。 3.ユーザーは、更新されたコンテンツを閲覧および読み取ります。使用例:TechCrunchのRSSフィードを購読するには、RSSリーダーへのリンクをコピーするだけです。

XMLを使用したフィードの構築:RSSの実践ガイドXMLを使用したフィードの構築:RSSの実践ガイドApr 14, 2025 am 12:17 AM

XMLを使用してRSSFeedを構築する手順は次のとおりです。1。ルート要素を作成してバージョンを設定します。 2.チャネル要素とその基本情報を追加します。 3.タイトル、リンク、説明を含むエントリ要素を追加します。 4. XML構造を文字列に変換して出力します。これらの手順を使用すると、有効なRSSFeedをゼロから作成し、リリース日や著者情報などの追加要素を追加することにより、機能を強化できます。

RSSドキュメントの作成:ステップバイステップのチュートリアルRSSドキュメントの作成:ステップバイステップのチュートリアルApr 13, 2025 am 12:10 AM

RSSドキュメントを作成する手順は次のとおりです。1。要素を含むルート要素を使用して、XML形式で書き込みます。 2。チャネル情報を説明する要素など。 3.要素を追加します。それぞれがコンテンツエントリを表します。 4.オプションで、コンテンツを濃縮するための要素を追加します。 5. XML形式が正しいことを確認し、オンラインツールを使用してパフォーマンスを最適化し、コンテンツを更新します。

RSSにおけるXMLの役割:シンジケートコンテンツの基礎RSSにおけるXMLの役割:シンジケートコンテンツの基礎Apr 12, 2025 am 12:17 AM

RSSにおけるXMLの中心的な役割は、標準化された柔軟なデータ形式を提供することです。 1. XMLの構造とマークアップ言語の特性により、データ交換とストレージに適しています。 2。RSSはXMLを使用して標準化された形式を作成して、コンテンツの共有を容易にします。 3. RSSでのXMLの適用には、タイトルやリリース日などのフィードコンテンツを定義する要素が含まれます。 4.利点には標準化とスケーラビリティが含まれ、課題にはドキュメントの冗長および厳密な構文要件が含まれます。 5.ベストプラクティスには、XMLの有効性の検証、シンプルな状態を維持し、CDATAの使用、定期的に更新されます。

XMLから読み取り可能なコンテンツまで:RSSフィードを分類しますXMLから読み取り可能なコンテンツまで:RSSフィードを分類しますApr 11, 2025 am 12:03 AM

rssfeedsarexmldocumentsusedforcontentaggregationanddistribution.totransformthemintoreadablecontent:1)parsethexmlusinglibrarieslibrarieslibrarieslibrarieslibrarieslibrarieslibrarieslibraries.2)heandlederentrssiversions andpotentialparsingerrors.3)変換された拡張型拡張型のfienderidederidrederidederidederidedionderiondiontiontiontiontiontiontiontiontional

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。