Silverlight 3 における通信処理 (Web サービス、WCF) 関連の拡張ポイント


こんにちは。

Silverlight 3 の Beta が MIX で発表されたというニュースはもう皆さんご存じかと思います。オフラインシナリオや、さまざまなコントロール(グラフ等)のサポート、グラフィクス系のさまざまな拡張など、目玉の機能がたくさんありますので、是非、ニュースソース、ブログなどをチェックしておくと良いでしょう。

さて、以前記載したインタビュー記事「RIA 開発、デザインのその先に待つものは、、、」でも現場の方が話されているように、実際の Silverlight 開発では、データアクセス、ネットワークまわりの処理などの方法の理解は重要になります。特に、Silverlight はブラウザ上で動作するアプリケーションのため、いろいろと注意が必要です。(デスクトップアプリケーションに近い開発環境を実現していますが、自由奔放にアクセスする、というわけにはいきません。)

今回の Silverlight 3 Beta における Webサービス / WCF まわりの拡張点について、Microsoft (米国) の Connected System のチームが非常にすっきりとポイントを記載してくれていますので、是非参考にしてみてください。

The .NET Endpoint チームブログ : What's new with web services in Silverlight 3 Beta
http://blogs.msdn.com/endpoint/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx

以下に、上記に記載されているポイントを日本語で要約しておきます。 (詳細は英語の原文でご確認ください)

binaryHttpBinding のサポート

従来の BasicHttpBinding だけではなく、バイナリのエンコーディングを使用した BinaryHttpBinding がサポートされています。オーバーヘッドが少ないため、より高速に通信処理を実現することが可能ですが、WCF サービスのみのサポートとなりますので注意してください。(asmx のサービスでは、従来通り BasicHttpBinding を使用してください。)

Duplex サービスを使ったプログラミングの改善

Duplex サービスを使用した場合、Silverlight 2.0 では、Channel クラス、Message クラスを使用したプリミティブな WCF プログラミングが必要でした。
Silverlight 3 では、こうしたプログラミングスタイルではなく、サービス参照の追加と、オブジェクト(クラス)の暗黙のシリアライズを使用したプログラミング (つまり、デスクトップアプリケーション同様のコーディングスタイル) が可能です。

例外処理の改善

従来、サービス側で例外が発生した場合、CommunicationException と呼ばれるあまり有用な情報を含んでいない例外がクライアント側 (Silverlight 側) で発生していました。今回から、FaultException や FaultException<ExceptionDetail> を使用して、よりデバッグしやすい情報をクライアント側でトラップできるようになりました。

TransportSecurityWithMessageCredential のサポート

サービスへの接続の際、SOAP メッセージ (テキスト) に Credential を添付し (= メッセージレベルのセキュリティ)、さらにそのメッセージを HTTPS で暗号化 (= トランスポートレベルのセキュリティ) する TransportSecurityWithMessageCredential と呼ばれるセキュリティ構成が可能です。

Silverlight では、クロスドメインポリシーファイルと呼ばれるファイルをサーバー側に用意することで、他のドメインからサービスに要求をおこなうことが可能です (Silverlight 2 より可能)。ブラウザベースの認証モデルだけの場合、基本認証などブラウザベースの認証を通過したクライアントが、サイト上のコンテンツに添付されたリンクなどによって他の悪意あるサイトを経由してこのクロスドメインポリシーを使用したサービスに要求をおこなう (つまり、クライアントにキャッシュされた認証情報が悪用される) といった処理が可能になります。TransportSecurityWithMessageCredential は、こうした問題を排除するために使用することができます。

コマンドラインでのサービスプロキシの生成

WCF の svcutil.exe の Silverlight 版ともいうべき slsvcutil.exe が提供され、コマンドプロンプトを使ってサービスプロキシーを生成できます。

 

なお、従来より、HttpWebRequest と、XmlReader や DataContractJsonSerializer、あるいは LINQ to JSON (System.Json.JsonObject) などを使用して、XML (POX), JSON, RSS といったリソース指向 (REST のアーキテクチャスタイル) のサービスへも接続可能ですが、この点については、これまで通りです。

 

Skip to main content