アーキテクチャが次のような LOB アプリケーションを書き直しています。
Silverlight && Windows Mobile -> WCF -> Entity Framework -> データベース。
モバイル アプリは、Silverlight アプリとして特定のことを実行できるはずでした。ここで RIA サービスを使用すると、どのようなメリットがありますか? WCF に対する RIA サービスの長所と短所は何ですか?
アーキテクチャが次のような LOB アプリケーションを書き直しています。
Silverlight && Windows Mobile -> WCF -> Entity Framework -> データベース。
モバイル アプリは、Silverlight アプリとして特定のことを実行できるはずでした。ここで RIA サービスを使用すると、どのようなメリットがありますか? WCF に対する RIA サービスの長所と短所は何ですか?
.NET RIA サービスは、ブラウザーで実行される Silverlight 用に作成されました。Silverlight は特別なバージョンの .NET フレームワークを実行しており、N 層アプリケーションでは、Silverlight はアセンブリをサーバー側と共有できません。巧妙なコード生成.NET RIA Services を採用することで、このギャップは開発者にはほとんど見えなくなります。ドメイン クラスと同様のクラスは、クライアント側で生成されるコードであり、クライアントとサーバーの間でオブジェクトを移動する方法も用意されています。
おそらく、Windows Mobile から .NET RIA サービスを呼び出すことができるようになるでしょうが、それは特に簡単ではないと思います。現在、ネットワーク上で送信されたものを実際にリバース エンジニアリングする必要があるかもしれません (JSON が使用されます)。一方、WCF の適用範囲ははるかに広いですが、.NET RIA サービスとは異なり、Silverlight 開発をサポートしていません。
Silverlight のみの N 層アプリケーションを作成している場合、.NET RIA サービスは非常に強力です。ただし、Silverlight が複数のクライアントのうちの 1 つにすぎない場合は、おそらく WCF の方が適しています。
.NET RIA サービスはまだリリースされていませんが、プレビューをダウンロードできます。
WCF RIAサービスは、SilverlightのWCFを使用するときに遭遇する課題に対するいくつかのソリューションを紹介します。たとえば、を使用したクエリの非同期ロードはEntityQuery<T>
、WCFが提供するBegin..Endソリューションよりもはるかに簡単です。また、RIAは、クライアントからの統合された変更追跡を提供し、複数の変更を1つの変更セットとして送信または拒否できるようにします。RIAは、これらすべての変更を1つのリクエストにバンドルしますが、ドメインサービスからは、個別の呼び出しであるかのように動作します。長年のWCF開発者として、私はそれが簡単だと言うことができます。
Ria サービスは、Silverlight で使用するためだけに作成されています。これらは実質的に、Silverlight ですぐに使用できる標準の「パッケージ」です。利点は、コードを書く必要なく多くのサービスを利用できることです。つまり:
Ria によって行われるすべてのことは、WCF と他の利用可能なソフトウェア、特に Wcf データ サービスで行うことができます。たとえば、データ注釈の場合、Ria サービスよりも優れた機能を果たすこのライブラリを見つけました。メンバーシップのサポートには、WCF サービスの既存のメンバーシップ エンドポイントをアクティブにするだけで済みます。最後に、例外の問題は WCF の動作を記述することで簡単に解決されます。コードはこちらから入手できます:http://www.silverlightshow.net/Storage/10Tips.zip ポイントは、Ria Service を使用すると、マウスをクリックするだけでこれらすべてを実行できることです。一方、Ria サービスはカスタマイズが非常に難しいため、提供される標準的なソリューションが気に入らなければ、単に使用することはできません。
答えに関係なく:
RIAサービスはWCF上に構築されています。PDCのリリースにより、これははるかに明白になります。RIAサービスは、クライアント側のプログラミングモデルを簡素化して、サーバー側のDomainServiceおよびエンティティと非常に密接に一致するようにします。
私にとって(そしてトピックの作者にとっては)、DomainService(WCFによって提供されるものと同じもの)へのアクセス以外に、RIAサービスが何を提供するのかが明確ではありませんか?
ありがとう。
WCF RIA サービスが正式にリリースされるまで、この質問に対する決定的な答えはないと思います。現在のベータ版 (VS 2008、SL 3 用) では、RIA サービスはサービス呼び出しの非同期性を隠していません。コールバック メソッドを提供する必要があります。また、RIA サービスは現在、ユーザー定義クラス (またはユーザー定義クラスのコレクション) を、RIA サービス呼び出しのパラメーターまたは戻り値としてサポートしていません。また、RIA サービスを介して編集不可能なエンティティ クラスを提供する際にも問題が発生しています。(エラーは、エンティティ コレクションが編集可能ではないことを示しています。ええ、それは実際に私が欲しいものです....)
この時点で、私はフォールバックして、単純な古い WCF を機能させる方法をもう一度検討する必要があります。私たちが開発しているアプリケーションのサイズを考えると、これはそれほど単純ではありませんが、MS が RIA サービスに関する現在の問題のいくつかを修正するまでは、実行可能な解決策と思われます。
RIA サービスは、WCF の上に構築されています。PDC リリースでは、これがより明確になります。RIA Services は、クライアント側のプログラミング モデルを単純化して、サーバー側の DomainService およびエンティティと非常によく一致するようにします。
.NET RIA Services は、2009 年 11 月に開催された PDC で WCF RIA Services と命名されていました。WCF の上に構築されているため、WCF RIA Servicesという名前が付けられました。
データベース (または層に沿って運ぶ必要がある情報) を含む N 層アプリケーションを構築するには、WCF RIA サービスを使用する必要があります。