ビジネスロジックレイヤー(CSLAに基づく)の単一の実装を持ち、winform、silverlightなどのさまざまなプレゼンテーションテクノロジーからそれを使用することは可能ですか.Silverlight用のCSLAが存在します. それは、さまざまなプレゼンテーション テクノロジに対してさまざまな BLL を実装および維持することを意味しますか。
どんな助けでも大歓迎です。
ビジネスロジックレイヤー(CSLAに基づく)の単一の実装を持ち、winform、silverlightなどのさまざまなプレゼンテーションテクノロジーからそれを使用することは可能ですか.Silverlight用のCSLAが存在します. それは、さまざまなプレゼンテーション テクノロジに対してさまざまな BLL を実装および維持することを意味しますか。
どんな助けでも大歓迎です。
これは、CodeSmith CSLA テンプレートを使用すると非常に簡単です。生成されたコードを示すPetShop Silverlight MVVM と Web サンプル アプリケーションがここにあります。
ありがとう -Blake Niemyjski ( CodeSmith CSLA テンプレートの作成者)
これは、CSLA では非常に可能です。さまざまな UI テクノロジで BLL を使用する場合の主な違いは、Silverlight の CSLA でのデータ ポータル呼び出しの開始およびコールバック メカニズムの使用です。このメカニズムをすべての UI テクノロジに使用すると、同じ BLL を使用できるようになります。
BLL には別の Factory オブジェクトを使用することをお勧めします。これにより、いつ BeginInvoke および Callback メカニズムを使用するかを決定でき、ビジネス オブジェクトは変更されません。
必要に応じて、重複したファクトリ メソッドを作成することもできます。たとえば、Customer のビジネス オブジェクトがあるとします。
public class Customer : Csla.BusinessBase<Customer>
{
private Customer() { }
private void DataPortal_Fetch(SingleCriteria<Customer, int> criteria)
{ // populate here }
}
次に、Silverlight とその他の UI テクノロジの両方のメソッドを含む CustomerFactory オブジェクトを作成できます。
public static class CustomerFactory
{
// Handle most UI needs
public static Customer Fetch(int id)
{
return DataPortal.Fetch<Customer>(new SingleCriteria<Customer, int>(id));
}
// Handle Silverlight needs
public static void Fetch(int id)
{
DataPortal.BeginFetch<Customer>(id, FetchCallback);
}
private static FetchCallback(object sender, DataPortalResult<Customer> result)
{
// notify the UI of result.Object
}
}
また、もう少し賢く、IoC コンテナーを介して依存性注入を実装して、ファクトリ メソッドの呼び出しをもう少し賢くすることもできます。
要するに、実際のビジネス オブジェクトは変更されませんが、ファクトリ オブジェクトは特定の状況で CRUD メソッドが重複している可能性があります。
Rocky の Web サイトには、複数の UI レイヤーを持つ単一の BLL を実装するサンプル (ProjectTracker) があります ( http://www.lhotka.net/cslanet/Download.aspxの「サンプル」の下にリストされています) 。