私は頭を包み込み、ServiceStack
それを利用してRESTfulサービスを公開しようとしています。
私は現在、MVC/Service/Repository/UnitOfWork タイプのパターンを使用しており、顧客を獲得するための基本的な操作は次のようになります。
MVC Controller Action --> Service Method --> Repository --> SQL Server
私の質問は次のとおりです。
- 私の SS サービスは何を返しますか? ドメイン オブジェクト? それとも、顧客のコレクションを持つ DTO を返しますか? もしそうなら、顧客は何ですか?ドメイン オブジェクトまたはビュー モデルまたは ??
- SS サービスはサービス層を置き換える必要がありますか?
- 私はここで完全に間違ったアプローチを取っていますか?
このすべてを並べてライブにする方法が少し混乱していると思います。
ドメイン オブジェクト
public class Customer
{
public int Id {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
}
モデルを見る
public class CustomerViewModel
{
public int Id {get;set;}
public string FirstName {get;set;}
....
}
コントローラ
public class CustomersController : Controller
{
ICustomerService customerService;
public CustomersController(ICustomerService customerService)
{
this.customerService = customerService;
}
public ActionResult Search(SearchViewModel model)
{
var model = new CustomersViewModel() {
Customers = customerService.GetCustomersByLastName(model.LastName); // AutoMap these domain objects to a view model here
};
return View(model);
}
}
サービス
public class CustomerService : ICustomerService
{
IRepository<Customer> customerRepo;
public CustomerService(IRepository<Customer> customerRepo)
{
this.customerRepo = customerRepo;
}
public IEnumerable<Customer> GetCustomersByLastName(string lastName)
{
return customerRepo.Query().Where(x => x.LastName.StartsWith(lastName));
}
}