2013-01-25 5 views
0

필자가 본 일부 디자인을 보면, 각 비즈니스 개체에 연결된 저장소 및 서비스가있는 ASP.NET 응용 프로그램을 구축하고 있습니다. 리포지토리는 nHibernate의 Session을 사용하여 CRUD 작업을 수행하고 해당 서비스는 저장소 구성원에 액세스합니다.ObjectDataSource를 서비스 또는 저장소에 바인딩 하시겠습니까?

ASP.NET에서 ObjectDataSource를 사용하는 경우 서비스가 아닌 저장소에 직접 바인드하여 서비스 계층을 건너 뜁니다. 아니면 단순한 CRUD 작업을 수행 할 때 서비스 레이어가 실제로 필요하지 않습니까?

// Repository interface 
public partial interface IRepository<T> 
{ 
    void Add(T entity); 
    void Update(T entity); 
    void Remove(T entity); 
    ICollection<T> GetAll(); 
    T GetByKey(int _ID); 
} 

// Service example 
public class TestService : IService<Test> 
{ 
    private static TestRepository _repository; 
    ... 

    public virtual ICollection<Test> FindAll() 
    { 
     return (_repository.GetAll()); 
    } 

    public virtual Test FindBy(int Id) 
    { 
     return (_repository.GetByKey(Id)); 
    } 

    public virtual void Save(Test entity) 
    { 
     _repository.Update(entity); 
    } 

    public virtual void Add(Test entity) 
    { 
     _repository.Add(entity); 
    } 

    public virtual void Remove(Test entity) 
    { 
     _repository.Remove(entity); 
    } 
} 

답변

0

분명히 사용자 인터페이스는 데이터 액세스에 대해 알지 않아야합니다. 데이터베이스에서 오는 데이터를 조작하지 않더라도 최소한 하나 이상의 계층 (서비스 또는 비즈니스 계층)을 가지고 UI가 서비스와 상호 작용하도록하는 것이 좋습니다. 내가 너라면, 내가 단위 테스트를 할 수 있도록 Asp.net을위한 멍청한 MVC를 할 것이다.

+0

그건 내가 고맙다고 생각했기 때문이다. – Brett