PHP を使用した SCA および SDO_PHP の開発チュートリアル

WBOY
リリース: 2016-07-15 13:24:17
オリジナル
817 人が閲覧しました

Open Service-Oriented Architecture Alliance (OSOA) によって開始され、コンポーネント指向アーキテクチャ (SCA) とサービス データ オブジェクト (SDO) が、サービス指向アーキテクチャを開発するための最新の手法になりました。当初、これらの開発は Java や C++ などの一部の一般的な開発環境にのみ集中していましたが、現在では、SCA と SDO が他のいくつかのプラットフォームに導入され始めています。ここでは、PHP にいくつかの SOA テクノロジを組み込む方法を説明します。

まず、SDO が提供できるものを見てみましょう。典型的な PHP アプリケーションでは、データの半分はリレーショナル データベースから取得されますが、アプリケーションが後でここからデータを取得するだけでなく、通常のテキスト ファイルや Web サービスからもデータを取得する場合はどうなるでしょうか?各データ ソースには独自の取得方法が必要なため、この問題は複雑です。

この場合、PHP の SDO は、データ ソースを処理するための透過的な方法を提供します。各データ ソースを個別に処理するのではなく、データ オブジェクトにアクセスするための統一された方法を提供します。このプロセスは、SDO アーキテクチャ上の中間メソッドであるデータ アクセス サービス (DAS) を通じて完了します。 PHP での SDO リクエストを見てみましょう。

<?php<br>$providers = $company->shippingByGround;<br>foreach ($providers as $name => $value) {<br> echo "$name: $valuen";<br>}<br>?>
ログイン後にコピー
ここでのデータがどこから抽出されるかはわかりません。検索を実行するだけです。詳細は DAS によって完成され、PHP は現在、XML およびリレーショナル データベースからのデータ ソースの取得をサポートしています。

SDO はデータを重視しますが、SCA はより一般的なクラスとコンポーネントを使用して同じ透過的なメソッドを実現します。 PHP クラスから既存のビジネス ロジックにアクセスすると、開発者は特定の前提条件に基づいて設計する必要がありますか?ロジックはすでに別のネイティブ PHP クラスにありますか?ネットワーク上に存在するのでしょうか? PHPで書かれているのでしょうか?

上記のシナリオがそれぞれの要件を満たすことができる場合、それぞれを異なる方法を使用して処理する必要があります。

SCA メソッドを使用すると、ロジックがどこに保存されているかは関係なく、ましてやロジックの実装にどのような言語が使用されているかは関係ありません。 「これは通常の Web サービスに似ているのではありませんか? 違いはありません!」 次に、例を挙げて PHP SCA コンポーネントに何が含まれているかを見てみましょう。

<p><?php</p><p>include "SCA/SCA.php";</p><p>/**<br>* Calculate a shipment price for a given customer using a specific provider<br>*<br>* @service<br>*/<br>class ShipmentQuote {</p><p> /**<br> * The customer discount fee service to use.<br> *<br> * @reference<br> * @binding.php ../DiscountFeeRate/DiscountFeeRate.php<br> */<br> public $discountFee;</p><p> /**<br> * The shipping service to use.<br> *<br> * @reference<br> * @binding.wsdl ../Shipper/ShipperQuote.wsdl<br> */<br> public $shipper;</p><p> /**<br> * Get a quote for a given customer using a specific provider<br> *<br> * @param string $shipping The shipping company <br> * @param string $customer The customer requiring shipment, in order to obtain discount rate<br> * @return float The quote for a given customer using a certain shipping provider. <br> */<br> function getQuote($shippingCo, $customer)<br> {<br>$rateShip = $this->shipper->getShippingPrice($shippingCo);<br>$rate = $this->discountFee->getDiscountRate($customer);<br>return $rate * $rateShip;<br> }<br>}<br>?></p>
ログイン後にコピー
上記の最も重要な部分は、@ を含むステートメント部分であり、それぞれが特定の SCA 動作を提供します。最上位の @service 識別子は、クラスがサービスとして公開されていることを示します。この例では、最後の getQuote 関数がサービスによって公開される唯一の操作となり、@param と @return を使用してマークされます。

この最終サービスの実行またはデプロイメントは、PHP SCA ランタイムに委任され、Web サービスでわかるように、WSDL コントラクトを作成するためのアクセス ポイントに到達します。このサービス展開方法の単純さに加えて、getQuote コードを調べると、SCA モデルの本当の利点がより明らかになります。

2 つのステートメント $this-<shipper->get ShippingPrice($shippingCo) と $this->discountFee->getDiscountRate($customer) に注目してください。これらはクラス内の前のアプリケーションに基づいています。各アプリケーションは、サポートするサービス ロック (@reference および @binding によって識別される) によってサポートされます。$discountFee の使用例では、これは PHP クラスになり、配送業者の使用例では、これは標準の WSDL ベースになります。

PHP はそのシンプルさと大規模なユーザー ベースからのサポートにより、Web アプリケーションの構築には適していますが、エンタープライズ アプリケーションの多くのシナリオではその機能が制限されており、SCA と SDO を追加することで、PHP と以前のテクノロジーのサポートが提供されます。強力なサポートがあれば、他の主流言語と同様に、サービス指向のトレンドに参加できます。

【関連記事】


http://www.bkjia.com/PHPjc/446774.html

tru​​ehttp://www.bkjia.com/PHPjc/446774.html技術記事 Open Service-Oriented Architecture Alliance (OSOA) によって開始された、コンポーネント指向アーキテクチャ (SCA) とサービス データ オブジェクト (SDO) は、サービス指向アーキテクチャを開発するための最新の方法になりました。最初はこれ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!