Open棟梁 wiki *目次 [#oe1075ce] #contents *概要 [#h386f2a1] 通信制御機能は、 -C/S3層、Web3層システム開発で必要となるサービス インターフェイス / サービス ゲートウェイ基盤を提供する。 -分散オブジェクト的な機能をHTTP, TCP/IPなどの通信プロトコルを使用して実現できる。 -.NET以外の異種開発技術との連携も[[汎用サービス・インターフェイス]]を公開することで可能になる。 http://www.slideshare.net/daisukenishino/open-0150/7 *特徴 [#m143ed95] 標準のP/B/D層の3層構成の中に、P層/B層呼び出しのアドインとして追加できる。~ これによりP層 → B層のメソッド呼び出しをネットワーク経由(Webサービスなど)に変換可能。 -通信処理を隠蔽することで、業務処理の実装に専念することが可能。 -P層/B層呼び出しの引数・戻り値は自動的にBinary serialize & deserializeされる。 -これにより3層方式のアプリケーションを2層方式と同様の、高い生産性で開発できる。 http://www.slideshare.net/daisukenishino/open-0150/8 **サポートする通信テクノロジ [#se3ed231] ***インプロセス呼び出し [#k04ccda3] レイトバインドを使用したインプロセスのメソッド呼び出し。 ***ASP.NET Web Service [#zf25f1cf] -HTTP --SOAP 1.1 & 1.2 ***WCF [#z0d0989f] -HTTP --basicHttpBinding~ ---WS-I Basic Profile 1.1 に準拠 --wsHttpBinding~ ---WS-ReliableMessaging、WS-Security を実装します。 ---メッセージ エンコーディングは Text/XML エンコーディング -TCP --netTcpBinding ---メッセージ セキュリティと認証用 Windows セキュリティ ---メッセージ配信用 TCP、およびバイナリ メッセージ エンコーディング -Bindingの設定例~ https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/ProjectX_sample/web.config#L318 ***ASP.NET Web API [#ge9aa975] 対応未定。 **透過性 [#l921963c] http://www.slideshare.net/daisukenishino/open-0150/9 ***位置透過性 [#z3628924] 定義による呼び出し先の変更が可能。 -インプロセス呼び出し -リモート呼び出し(アドレス指定) ***規模透過性 [#a84e62cf] スケールアウト(垂直・水平分散)が可能。 ***異種透過性 [#b5ff466d] .NET以外の異種開発技術との連携も可能。 [[汎用サービス・インターフェイス]]を公開することで可能になる。 *移行時 [#v4d269ae] 通信制御部品で.NETオブジェクトのバイナリ転送をしているので、~ 異なる.NETバージョン間の通信に問題がないか?ですが、 -.NET Framework 4.5 のアプリケーションの互換性~ http://msdn.microsoft.com/ja-jp/library/hh367887(v=vs.110).aspx --SoapFormatterクラスについては、バージョン間の互換性が保証されません。~ --代わりに、System.Runtime.Serialization.Formatters.Binary.BinaryFormatter クラス~ および System.Runtime.Serialization.NetDataContractSerializer クラスを使用してください。 -バージョン トレラントなシリアル化~ https://msdn.microsoft.com/ja-jp/library/vstudio/ms229752.aspx --バージョン トレラントなシリアル化 (VTS: Version Tolerant Serialization) は、~ .NET Framework 2.0 で導入された機能セットで、シリアル化可能な型を、長期にわたって簡単に変更できるようにします。 --具体的には、VTS 機能が、ジェネリック型を含め、SerializableAttribute 属性が適用されているクラスに対して有効です。 --VTS を使用すると、他のバージョンの型との互換性を失うことなく、これらのクラスに新しいフィールドを追加できます。 とあるので問題はなさそうです。 *参考 [#sb715768] **SlideShare [#g1fccd89] -http://www.slideshare.net/daisukenishino/open-0150/6 -http://www.slideshare.net/daisukenishino/open-0150/7 -http://www.slideshare.net/daisukenishino/open-0150/8 -http://www.slideshare.net/daisukenishino/open-0150/9