web-dev-qa-db-ja.com

WCF RIAサービスとは何ですか?

WCF RIAサービスに関するMSDNのサイトが嫌いです。それはそれが何であるかを言うのではなく、それが何をするのかを言うだけです。達成できることは述べていますが、なぜ必要なのかは述べていません。

例えば:

「n層RIAソリューションを開発する際の一般的な問題は、中間層とプレゼンテーション層の間でアプリケーションロジックを調整することです」。

まあ、それは私にはあまり意味がありません。

「RIAサービスは、プログラミングロジックを手動で複製することなく、RIAクライアントがサーバー上のアプリケーションロジックを使用できるようにするフレームワークコンポーネント、ツール、およびサービスを提供することにより、この問題を解決します。また、ソリューションが再コンパイルされるたびに、クライアントが最新の中間層ロジックで自動的に更新されることを知っています。」

サーバーからDLLをダウンロードしますか?データのルールを記述するメタデータですか?

それで何ですか? RADの単なるVS 2010アドオンですか?それとも、WCFの上にあるのか、その下にあるのか、それとも何ですか?どこにありますか?データ、サーバー、何で?

要約していただければ幸いです。

100
Aliostad

RIAサービスは、サーバーとの通信を処理し、クライアント側の検証を行うクライアント側(Silverlight)オブジェクトを自動的に生成するサーバー側の技術です。

RIAサービス内のメインオブジェクトは DomainService であり、通常はLinqToEntitiesモデルに接続されている LinqToEntitiesDomainService です。

RIAサービスで覚えておくべき重要なことは、それが主に洗練されたビルドトリックであることです。ドメインサービスを作成してソリューションをコンパイルすると、ドメインサービスのクライアント側の表現が生成されます。このクライアント側の表現には同じインターフェースがあります。メソッド_IQueryable<Customer> GetCustomersByCountry_を使用してサーバー側のドメインサービスCustomerServiceを作成するとします。ソリューションをビルドすると、CustomerContextというメソッドを持つGetCustomersByCountryQueryというSilverlightプロジェクト内にクラスが生成されます。サーバーでこのメソッドを呼び出しているかのように、クライアントでこのメソッドを使用できるようになりました。

更新、挿入、削除は異なるパターンに従います。ドメインサービスを作成するときに、編集を有効にするかどうかを指定できます。更新/挿入/削除に対応するメソッドは、サーバー側のドメインサービスで生成されます。ただし、クライアント側の部分にはこれらのメソッドがありません。 CustomerContextにあるのは、SubmitChangesというメソッドです。これはどのように機能しますか:

  • 更新の場合、既存の顧客(GetCustomersByCountryQueryで取得した)のプロパティを更新するだけです。
  • 挿入には、CustomerContext.Customers.Add(new Customer(...) {...})を使用します。
  • 削除するには、CustomerContext.Customers.Remove(someCustomer)を使用します。

編集が完了したら、CustomerContext.SubmitChanges()を呼び出します。

検証については、 _System.ComponentModel.DataAnnotations_ 名前空間の検証属性を使用してサーバー側オブジェクトを修飾できます。繰り返しますが、プロジェクトをビルドすると、対応するクライアント側オブジェクトの検証コードが自動的に生成されるようになりました。

この説明が少しでもお役に立てば幸いです。

104

最新ニュース:WCF RIA Servicesは死んでいます:

http://blogs.msmvps.com/deborahk/who-moved-my-cheese-ria-services/

RIAサービスを使用する場合は、オープンソース化されています。

http://www.openriaservices.net/blog/posts/

8
user8128167