再利用可能なビジネスオブジェクトを使用する場合、ビューモデルを構築する際のベストプラクティスとは何ですか?
呼び出すオブジェクトを使用して、Builder
ビューモデルを構築します。ビューの各論理ユニット(オーダー、ユーザーなど)ごとに1つのビルダー。ここで、各ユニットにはさまざまなビューモデルを含めることができます(オーダーにはサマリー、オーダーラインなどが含まれます)。
ビルダーは、ビューモデルを構築するために、1つ以上の標準ビジネスオブジェクトを介してデータをプルする場合があります。
ビューモデルでビジネスオブジェクト/モデルを使用する場合のベストプラクティスとは何ですか?
アプローチ1
ビューモデルでビジネスオブジェクトの使用を許可しますか?
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary();
obModel.Order = obOrder;
return obModel;
}
}
//View model
public class OrderSummary
{
public Some.Business.Logic.Order Order;
//Other methods for additional logic based on the order
//and other properties
}
アプローチ2
ビジネスオブジェクトから必要なデータのみを取得する
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary()
{
OrderNum = obOrder.OrderNum,
NumOrderLnes = obOrder.NumOrderLines,
}
return obModel;
}
}
//View model
public class OrderSummary
{
public int OrderNum;
public int NumOrderLines
//Other methods for additional logic based on the order
//and other properties
}
私は両方の利点と欠点を見ることができますが、受け入れられたアプローチがあるのだろうか?アプローチ1では、モデルの周りにコードの重複はありませんが、ビジネスロジックへの依存関係を作成します。アプローチ2では、ビューに必要なデータのみを取得しますが、モデルの周りにコードを複製します。