「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
通信制御機能は、
http://www.slideshare.net/daisukenishino/open-0150/7
標準のP/B/D層の3層構成の中に、P層/B層呼び出しのアドインとして追加できる。
これによりP層 → B層のメソッド呼び出しをネットワーク経由(Webサービスなど)に変換可能。
http://www.slideshare.net/daisukenishino/open-0150/8
下記は、Webサービスをプロトコルに使用する場合の例であり、
通信制御基盤の実装も変わってくる。
クライアント プログラムからネットワークを経由しないで
「インプロセス呼出し」をする場合は、以下のような処理方式となる。
各プロトコルにおけるテンプレートを使用して実装する
(TCP/IP、RPC、Webサービス、WCFなどがある)。
名前解決機能として、
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE TMD[ <!ELEMENT TMD (Prop*, Url*, Transmission*)> <!ELEMENT Url EMPTY><!ELEMENT Prop EMPTY><!ELEMENT Transmission EMPTY> <!ATTLIST Url id ID #REQUIRED value CDATA #REQUIRED> <!ATTLIST Prop id ID #REQUIRED value CDATA #REQUIRED> <!ATTLIST Transmission id ID #REQUIRED protocol (1 | 2) #REQUIRED url CDATA #IMPLIED url_ref IDREF #IMPLIED timeout CDATA #IMPLIED prop_ref IDREF #IMPLIED> ]> <!-- idの先頭には、数字を使用できない。 --><!-- protocol:1=InProcess、2=WebService --> <TMD> <!-- マスタ データ --> <!-- 接続オプション(プロパティ:必要に応じて) --> <Prop id="prop_a" value="aaa=AAA;bbb=BBB;ccc=CCC;"/> <!-- 接続オプション(URL:必要に応じて) --> <Prop id="url_a" value="http://xxx/Service.asmx "/> <!-- 接続先 データ --> <!-- インプロセス --> <Transmission id="testInProcess" protocol="1"/> <!-- Webサービス --> <Transmission id="testWebSrv1" protocol="2" url="http://xxx/Service.asmx" timeout="60" /> <Transmission id="testWebSrv2" protocol="2" url_ref="url_a" timeout="60" prop_ref="prop_a" /> </TMD>
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE TMD[ <!ELEMENT TMD (Transmission*)> <!ELEMENT Transmission EMPTY> <!ATTLIST Transmission id ID #REQUIRED assemblyName CDATA #REQUIRED className CDATA #REQUIRED> ]> <!-- idの先頭には、数字を使用できない。 --> <TMD> <Transmission id="testInProcess" assemblyName="WSServer_sample" className="WSServer_sample.Business.LayerB" /> <Transmission id="testWebService" assemblyName="WSServer_sample" className="WSServer_sample.Business.LayerB" /> </TMD>
の2つのモジュールが存在する。
上記の2つの名前解決定義は、app.configにパスを指定する。
例外については、全ての例外がシリアル化可能になっていないので、異常系の例外の型情報として、
「業務例外」、「システム例外」、「フレームワーク例外」、「その他、一般的な例外」の4つを識別し、
正常系の戻り値で返す(このため、一部データ欠損が発生する)。クライアントでは、この型で復元、リスローする。
レイトバインドを使用したインプロセスのメソッド呼び出し。
対応未定。
http://www.slideshare.net/daisukenishino/open-0150/9
定義による呼び出し先の変更が可能。
スケールアウト(垂直・水平分散)が可能。
.NET以外の異種開発技術との連携も可能。
汎用サービス・インターフェイスを公開することで可能になる。
通信制御部品で.NETオブジェクトのバイナリ転送をしているので、
異なる.NETバージョン間の通信に問題がないか?ですが、
とあるので問題はなさそうです。