2012-04-18 1 views
1

私は、コンポーネントをロードするためにStructureMapを大量に使用する大きなアプリケーションを維持しています。私はネットワークを介して接続されている別のマシンで実行できるようにコンポーネントを分割しようとしています。それらはすでに別のスレッドで実行されていますが、同じプロセス内で(単一のStructureMapコンテナを使用して)実行されます。複数のマシンにIOC/DIコンポーネントを配布するには?

私はこれを行う方法がわかりません。 StructureMapですべてのコンポーネントのプロキシを自動的に作成し、ローカルではなくネットワーク経由で使用することは可能ですか?コンポーネントを配布可能にするためには、コンポーネントにどのような変更が必要ですか?

答えて

1

興味深い!理論的には可能だと思います。本当に根本的な問題は、本当にそうしたいのであれば、私たちは大きなアーキテクチャ上の変化について話しています。

免責事項:あなたがWCFにどれほど親しみがあるか分かりませんが、私はそれが可能であると想像する方法を非常に大雑把に説明しようとしますが、あなたが望むネットワーク上でこの種の通信について話しているならWCFを使用する。

  • 、あなたが
  • は、これらのサービスのために
  • 書き込みクライアントのサービスを使用してコンポーネントをラップし、何とか/どこかにそれらをホストするWCFサービス契約などのネットワーク経由で使用するコンポーネントのすべてのインターフェイスを定義し、それらを持ちますあなたのコンポーネント・インタフェース
  • はそれが非常に簡単に思えますが、コードは、コンポーネント

を期待していたときのStructureMapは、関連する複雑さの私をあなたの顧客を注入してみましょう実装これらのステップの後ろに隠れています。私の頭の上からいくつかの潜在的な問題を挙げよう:どのコンポーネントをサービスにラップするのか?それらをラップするのはどれくらい簡単ですか?あなたはどこでそれらをホストするつもりですか?セキュリティはどうですか?ロギングメカニズムを調整する必要がありますか?

+0

はい、私はWCFに精通しています。これはかなり私が考えたアプローチです:)しかし、私は非常にStructMapに精通していない - しかし、あなたが書いたことから、私はSMがあなたが概説した手順を自動化する手段を提供しないと仮定します。 SMは、サービスインスタンス自体の代わりにWCFクライアントを使用することを知っています。私はそれを正しく理解すれば、SMはリモートサービス管理を許可しないので、サービス自体に別のマネージャーを用意する必要もあります。 – mafu

+0

SMは単なるIoCコンテナですが、自動化が困難な複雑なプロセスであるため、インスタンスを魔法のように遠隔操作するコンテナについてはわかりません(前述の懸念事項のリストを参照)。したがって、コンポーネントインスタンスの代わりにクライアントプロキシを使用するようにSMを配線する必要があります。あなたがマネージャーのためにホストを意味するならば、あなたはまたあなたのサービスのためのホストをセットアップする必要があります。 –

+0

理にかなっています。 – mafu

関連する問題