2009-08-25 5 views
3

근거 :다중 계층 응용 프로그램에서 클라이언트가 자체 linq 표현식을 서버에 보낼 수 있어야합니까?

HQL 및 NH 기준 NHibernate에 특정 구조이고 같은들은 서버 측 DAL 구현 사항이다. 나는 그들이 고객 측에 "누출"되는 것을 원하지 않는다. 따라서 클라이언트 측에서 서버를 처리 할 LINQ 표현식을 제공합니다.

그러나 나에게 합법적 인 것처럼 보이지만, 일부는 그렇지 않다고 생각하며 이유를 알고 싶습니다.

감사합니다.

+0

이 질문에 대한 답변을하지 않습니다,하지만 당신이 옳다고 생각 : 그것은 클라이언트에서 LINQ 표현을 전달하는 것이 좋습니다. (우려 사항 분리와 같은 일반적인 제약 내에서.) –

답변

3

클라이언트 측에서의 표현을 수락 (또는 IQueryable<>에 노출)하는 것에 대한 논쟁은 필터링과 같은 클라이언트 로직이 아닌 로직이 "잘못된"장소에서 발생하는 것을 허용한다는 것입니다. 클라이언트가 잘못된 데이터를 노출하는 경우 클라이언트 측 논리 및 DAL 뒤에있는 논리라는 두 가지 위치가 있습니다. 본질적으로, 그것은 당신의 관심사를 분리하기가 너무 쉽습니다.

그렇다면 신중하고 신중하게 사용하면 응용 프로그램을 향상시킬 수있는시기가있을 것입니다. 예를 들어, IQueryable<>을 사용하면 결과 집합이 아닌 서버에서 효율적으로 실행되는 클라이언트 측 정렬 및 분할 (건너 뛰기/가져 오기)을 지원할 수 있습니다. 반론은 DAL에 정렬 및 파티션 매개 변수를 제공해야한다는 것입니다.

궁극적으로 응용 프로그램에 적합한 것을 사용하십시오. 너무 많은 로프를 잡고 매달려 있으면 나중에 언제든지 리팩토링 할 수 있습니다.