最近、私はプロジェクトを開発するように頼まれました。アーキテクチャは次のようになります。
- 1層:Nhibernate上のDataAccessベース
- 2層:WCFサービスと一部のコアクラスに基づくビジネスレイヤー
- 3層:Silverlightに基づくビュー
DTOオブジェクトを使用して、第2層と第3層の間でデータを渡します。
プロジェクトには巨大なドメインモデルがあり、多くのビジネスエンティティが標準およびカスタムのCRUD操作をサポートする必要があることに気づきました。最初の層では、一般的なNHibernateリポジトリ+仕様によって解決されます。
ただし、第2層(1つのWCFサービス)は、第3層にDTOのカスタムおよび標準のCRUDインターフェイスを提供する一連のメソッドのように見えます。
たとえば、モデルは次のようになります。
class Product {}
class Category {}
DTO:
class ProductDTO {}
class CategoryDTO {}
「問題のある」WCFサービス:
public class DataService
{
public List<CategoryDTO> GetAllCategories()
{
}
public List<ProductDTO> GetAllProducts()
{
}
}
考えられる解決策:
public class ProductDataService
{
public List<ProductDTO> GetAllProducts()
{
}
}
public class CategoryDataService
{
public List<CategoryDTO> GetAllCategories()
{
}
}
質問:
- 上記の解決策の良い代替案はありますか?
- この状況でWCFサービスで使用できる「一般的な」方法はありますか?