サービスホスト解決-C#RMIレジストリに相当しますか?
-
22-08-2019 - |
質問
私はマスターズキャップストーンコースを早めに撮影し、C#でプロジェクトを行っていますが、他のみんながJavaで自分のプロジェクトをやっています。このプロジェクトには4つのサービスがあり、ソケットにサービス名をマップする名前サーバーが必要です。インストラクターは、学生がRMIを使用してこのレジストリを構築することを提案しています。私はJavaにあまり慣れておらず、インストラクターは.NETにあまり精通していないため、C#で同等のものを思い付くことができませんでした。誰かがそれを知っていますか?
アップデート:
そのソケットを明示的に知らずにWCFサービスを発見する方法を探しています。
更新2:
VS 2008/WebDevサーバーを使用して、XPラップトップでプロジェクトをデモします。
解決
JavaのRMI Registeryは、キーでサービスを検索できるコンテナとして機能します。このメカニズムは、依存関係インジェクションエンジンを使用するServiceLocator(ServiceLocator Patternなど)を介してサービス/オブジェクトを解決し、サービスのインスタンスを解決するように依頼します(つまり、既知の名前、インターフェイスなど)。
IMyService service = ServiceLocator.Resolve<IMyService>();
また
IMyService service = (IMyService)ServiceLocator.Resolve(typeof(IMyservice));
WCFは、単一のサービスと単一のサービスホストファッションでのみ機能します。つまり、各サービスには個別のサービスホストが必要です。サービスホストを集約し、ポートを開き、DIコンテナに登録するサービスコンテナを作成でき、後で上記のようにサービスのインスタンスを要求するだけです。
他のヒント
Windows Server 2K3/8に付属のUDDIサーバーを使用できます。これにより、サービスが発見されます。それ以外は、サードパーティのパッケージが必要であるか、自分のパッケージを転がす必要があります。
私はJavaリモートの専門家ではありません。
あなたが探しているものはWCF用語サービスエンドポイントで呼ばれていると思います。これは、のいずれかで行うことができます 構成ファイル または経由 コード .
WCFの概要については、このリンクを参照してください。Windows Communication Foundationアーキテクチャ
について読んでください TCPポート共有, 、Windows Server 2008の新しいテクノロジー、それはあなたを助けるかもしれません