0

私はマイクロソフトショップの開発に慣れていないことを理解してください....

Silverlight / c# を使用して、同じクラス (「RemoteClass」と呼びましょう) の複数のインスタンスにリモートで接続できる必要があるポータブル Web ベースの UI (「WebUI」と呼びます) を設計しています。各インスタンスを「ステータス」にして、インスタンス メソッドを選択的に呼び出します。

これは、ユーザーがすべての RemoteClass インスタンスを手動でインスタンス化し、別の場所に移動する必要がある場合に WebUI を使用してそれらと対話するという考え方です。

WebUI のコーディング方法に制限はありませんが、 RemoteClassに関しては制限されたフレームワーク内で作業しています。RemoteClass は .NET3.5 c# のみです。

関連する制限は次のとおりです。

  • 「RemoteClass」インスタンスは、外部クラス インスタンスを認識できません。
  • したがって、参照したいものはすべて RemoteClass 内で宣言する必要があります。
  • インスタンス化する他のすべてのクラスは、RemoteClass インスタンス内のネストされたクラスとしてインスタンス化する必要があります

ここで、それぞれ独自の一意の ID を持つ、任意の数の RemoteClass インスタンスが存在する可能性があります。現状では、インスタンス ID の配列を外部でホストすることはできず、WebUI アプリケーションを開始する前にこれらの ID を予測することはできません。

私には思えますが、1 つの特定のインスタンスのメソッドをリモートで呼び出すことができるようにするために、RemoteClass サービス インスタンスごとに一意の URI が必要ですが、WebUI 内のクライアントは各 URI を順番に知る必要があります。それに接続するには、私が見ることができる唯一の明らかな解決策は、次のことです。

  • ID の動的配列を保持し、2 つの ServiceHost インスタンス (ServiceHost1 と ServiceHost2 など) をインスタンス化できる別の「仲介」アプリケーション (「InterApp」など) を記述します。
  • RemoteClass インスタンスが作成される前に、'InterApp' が実行されている必要があります。
  • 新しい各 RemoteClass インスタンスの作成時に ServiceHost1 に接続し、ID を InterApp の配列に渡して保存します。
  • また、RemoteClass のインスタンス化ごとにネストされた ServiceHost インスタンスをインスタンス化し、固有の ID (InterApp で認識されている) に基づいて固有の URI を使用します。 InterApp の ServiceHost2

上記が理にかなっていることを願っています-私はまだ非常に環境にやさしく、可能なオプションを認識していませんが、これを達成するためのより単純で信頼性の高い方法があるに違いないと確信しています....

ServiceHost ベースのサーバーと ChannelFactory ベースのクライアントを使用するつもりです...

アドバイス/建設的な批判は大歓迎です。

J

4

1 に答える 1

0

あなたの問題はWCF Durable Servicesによって解決されます。これにより、すべてのカスタム アドレス指定なしで、セッションが許可するよりも長い有効期間を持つ一意のサービス インスタンスがサポートされます。ワークフロー サービスで最もよく使用されますが、プレーンな WCF サービスの実装では問題なく動作します。

于 2012-07-31T06:41:11.533 に答える