私は二度とPOXに行かないと思います。サービス自体がバインディングに依存せず、バインディングが構成ファイルで行われるように WCF を作成すると、WCF はトランスポートとプロトコルにほとんど依存しなくなります。SOAP、JSON、REST、または独自の形式のバイナリ シリアル化を実行できます。これらはすべてバインディングにあります。内部的には、WCF は、操作とデータ コントラクト (すべてクラス、メソッド、およびプロパティ属性によって定義されます) に関して公開されるもののみを指定します。WCF は、この点に関して非常に柔軟であり、2010 年にはさらに多くの機能が提供される予定です。
Silverlight 側から見ると、WCF では配管コードを記述する必要があります。.NET フレームワークには、Silverlight プロジェクトでプロキシを構築するためのツールがありますが、すべての WCF 応答を非同期で処理する準備ができている必要があり、プロキシはサービスによってスローされた例外をキャッチできません。
.NET RIA サービスは、これらすべてを隠します。内部では WCF を使用していますが、それは完全に隠されています。非同期コードを記述する必要はありません。ほとんどの場合、検証を一度定義すると、サーバー側とクライアント側の両方で機能します。リリース 1 は Silverlight を対象としているため、このサービスを他の場所で使用するための汎用性は得られません。その範囲は、以降のリリースで拡大される予定です。
ADO.NET Data Services については、比較するのに十分な知識がありません。答えは、Silverlight の使用以外にデータを公開するかどうかによって異なると思います。
.NET RIA Services は、私が行きたい方向性のように見えます (大規模なアプリケーションを念頭に置いて、これらの問題を自分で調べています)。私にとっての大きな問題は、サービス層に非常に大きな機能のコレクションを実装することと、データ アクセス層に直接コーディングできないことです (SQL Server または Oracle のいずれかで実行できる必要があります)。
Silverlight の代わりに WPF を使用すると、データが存在する場所に応じてすべてが変わります。これは、Winforms と ASP.NET の古い問題のようなものです。WPF を使用すると、Windows クライアント アプリを作成できます。データ アクセスによって強制されない限り、サービス ベースのデータ インターフェイスを使用する必要はまったくありません。MVVM、MVC、または MVP を使用して、データとビジネスをプレゼンテーション コードから分離する必要があります。それ以外に、データ アクセスを完全に独立した層ではなく、層として扱うオプションがあります。