3 層アプリケーションとして設計された XBap システムがあります。XBap クライアントは、netTcpBinding を使用して WCF サービスを介してロジックを使用します。
データ バインドを簡単にし、ビジネス オブジェクトに組み込まれたデータ検証を再利用できるようにするために、プロキシを生成する代わりに、xBap クライアントからビジネス オブジェクト ライブラリを参照することにしました。
これらのオブジェクトは、基本的なデータ検証を所有する以外のロジックを実装していません。実際のビジネス ロジックは、私の WCF サービス内に実装されています。
今、私は大きな課題に直面しています。xBap を Silverlight に移植する必要があるため、Silverlight アプリが必要です。同じビジネス ロジックを使用します (winforms LOB アプリケーションでも使用されます)。
発生するいくつかの問題:
1) Silverlight クライアント アプリケーションからビジネス オブジェクト ライブラリを参照できません。これは、Silverlight ではなく通常の DLL としてコンパイルされているためです。
2) Silverlight ライブラリとしてコンパイルすることはできません。多くの機能が失われ、明らかに良い考えではないからです。将来、新しい .net プラットフォームが登場した場合、変更された (silverlight) dll が機能するという保証はありません。
RIAServices を発見したとき、私には希望がありました。サービスを実装し、あらゆる種類の DAL を使用できる場所を読みました。(私はカスタムのものを持っています) しかし、既存のビジネス層の上に RIAServices を配置する方法を示す例は見つかりませんでした。私たちは LINQ を使用していません (また、使用する予定もありません)。私が見つけたすべての例は、RIAServices を使用し、LINQ を使用してゼロからビジネス ロジックを作成することから始まりました。
RIAServices はデータバインディング対応のクライアント コードを生成しますが、ビジネス レイヤー全体を変更する必要があり、非常にコストがかかると感じています。
そのため、解決策は、WCF を使用し続けることです。特に、Silverlight 3.0 が新しいバイナリ バインディングをサポートするようになったため、実際のビジネス オブジェクトの代わりにプロキシを使用します。問題は、これらのプロキシには、私のビジネス クラスが実行する 3 つの側面であるデータ検証、プロパティ変更通知、および変更追跡が含まれていないことです。
RIAServices はこれらの側面やその他の側面を解決しますが、Silverlight プロジェクトを操作する必要があります。WCF (SVCUtil.exe) はプロキシを生成しますが、私たちのニーズに対して「完全」ではありません。そのため、ビジネス オブジェクトを入力として受け取るプロキシを生成するための独自のユーティリティを開発する必要があるようです。
そうする前に、誰かがすでにこの問題に直面しており、便利で痛みのない方法で解決できたかどうかを知りたい.
前もって感謝します、
ゴンザロ