2

現在、.Net RIA サービスを使用する Silverlight アプリケーションを使用しています。

それは構造です:

クライアント側

  • Application.Client.UI.dll (Xaml と基本的な UI のもの)
  • Application.Client.BL.dll (RIA へのリンクとほとんどのビジネス ロジックを含む)

サーバ側

  • Application.Server.Data.dll (エンティティ モデルと生成されたドメイン サービスを保持するサーバー側の dll)
  • Application.Server.Web.dll (Application.Server.Data.dll を参照する ASP.net ホスティング コンテナーのみ)

ビジネス ロジックのほとんどをクライアント側 (Application.Client.BL.dll) に配置して、ユーザー エクスペリエンスを向上させ (迅速な反応)、サーバー リソースを解放しました。私の課題は、サーバー側の Windows サービスで、RIA データ アクセス機能を含むこのクライアント側の DLL を再利用することです。私は疑問に思っています、それはまったく可能ですか?Application.Client.BL.dll は既存の RIA サービスを引き続き使用できますか、またはその dll は Silverlight ランタイムがそのサービス ターゲットを識別/検索する必要があるため、他の場所では機能しません。

あなたの答えに興味があります

4

3 に答える 3

0

コンパクトなフレームワークアセンブリを操作するときにも同様のニーズに遭遇し、完全なフレームワーク用にコンパイルしたいとも思いました。このシナリオを回避する方法について説明します。


Silverlightアセンブリを参照する際に問題が発生した場合は、次のように2つのプロジェクトを構築することを検討してください。

プロジェクト#1はSilverlightライブラリであり、クライアントで使用するすべてのソースファイルが含まれている必要があります。

プロジェクト#2がWindowsサービスになります。ソースファイルを直接含める代わりに、[既存のアイテムを追加]を使用して、プロジェクト#1で元のソースファイルを見つけ、(これが魔法です)、[追加]ボタンをドロップダウンして選択します。代わりに、[リンクとして追加]を選択します。 。

スクリーンショット

ソースファイルをリンクとして含めることにより、ソースコードを1つの場所に保持する機能を維持しながら、複数のフレームワーク用にコードをコンパイルする機能を追加できます。コードがSilverlightフレームワークと完全な.NETFrameworkの両方で使用可能なアセンブリに依存している限り、お金がかかります。


ここで、マルチプロジェクトアプローチを選択するかどうかに関係なく、ドメインコンテキストクラスには、対応するドメインサービスのURLなどのコンテキスト情報を指定できる追加のコンストラクターがあることを知っておいてください。1つのアプリケーションで次のコードを使用して、人事データを提供するドメインサービスのドメインコンテキストを構築します。

var context = new PersonnelDomainContext(
    new Uri(ConfigurationManager.AppSettings["PersonnelServiceUrl"]))

この場合、URLは次のようになります。

http://website-url/Services/Hyphenated-Namespace-PersonnelDomainService.svc

もちろん、Windowsサービスを作成する場合、サーバー側のドメインサービス(コンテキストではない)アセンブリを直接参照することを妨げるものは何もありません。ドメインサービスがあれば、追加の構成やネットワークXMLペイロードを追加せずにサービスインスタンスをインスタンス化できます。このアプローチには、一元化された構成管理(接続文字列など)を失うなどのトレードオフがありますが、状況によっては、トレードオフに見合う価値がある場合があります。

ハッピーコーディング!

于 2011-01-05T18:40:13.723 に答える
0

fork-reuse の使用を検討しましたか? を見てみましょう:

http://sharednow.blogspot.com/2011/05/its-not-just-reuse.html

于 2011-05-04T23:35:31.177 に答える
0

ビジネスロジックをクライアントに置くべきではありません.セキュリティやアーキテクチャの担当者はあなたを嫌うでしょう;-)。さらに、ASP.Net またはデスクトップ プロジェクトで Silverlight アセンブリを使用することはできません。メモリが正しく機能する場合、Silverlight はまったく異なる CLR を使用します。

于 2010-07-05T22:28:03.697 に答える