現在、Silverlight (3.0) アプリケーション内から WCF サービスにアクセスする必要がありますが、動的にする必要があります。
私がアクセスできるもの: サービス インターフェイス (ServiceContracts) とデータ定義 (DataContracts)。
必要なもの: 実行時に生成/作成された WCF クライアント プロキシ。
いくつかの解決策がありますか?
現在、Silverlight (3.0) アプリケーション内から WCF サービスにアクセスする必要がありますが、動的にする必要があります。
私がアクセスできるもの: サービス インターフェイス (ServiceContracts) とデータ定義 (DataContracts)。
必要なもの: 実行時に生成/作成された WCF クライアント プロキシ。
いくつかの解決策がありますか?
WCF 動的プロキシ サンプル プロジェクトを見てください。
この「古い」投稿を見つけました(2008年9月16日)。
しかし、Silverlight 3.0では正しく実行できませんでした(以前のバージョンのSilverlightでは試していませんでした)。
WorkSightブログ»ブログアーカイブ»Silverlightの動的WCFクライアントプロキシ
あなたの誰かがそれをうまく動かすことができたら私たちに知らせてください!:)
私の理解では、 Silverlight 2 の WCF サービスについて で説明されているクライアント アクセスの手順に従えば、クライアント側でプロキシを作成する必要がないため、実行時にアクセスするサービスを選択できるはずです。
この記事の抜粋:
ここで、クライアント アプリケーションに注意を向けます。まず最初に、魔法のようなサービス クライアントの作成に Visual Studio の [サービス参照の追加] を使用してはならないことを皆さんに思い出させてください。コードは信じられないほど冗長で、管理が難しく、編集内容が上書きされやすく、ほとんどの場合、実際に WCF を学習しない言い訳として使用されます。
すでに何度も述べたように、WCF は ABC の概念に依存しています。.NET と Silverlight の両方で、アドレスとバインディングをチャネル ファクトリのコントラクトとマージして、チャネルを作成します。これは単なる概念的なアーキテクトの話ではありません。これはまさにあなたのコードがどのように見えるかです (本当に優れたアーキテクチャの兆候です!) 以下は、私が言いたいことの .NET バージョンです:
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Person.svc");
IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel();
Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6");