0

데이터 모델을 노출하는 WCF 데이터 서비스가 있습니다. 데이터 보안/필터링 및 비즈니스 규칙은 폼 인증 쿠키의 현재 사용자를 기반으로하는 쿼리 인터셉터 및 서비스 작업을 사용하여 시행됩니다.ASP.NET 웹 페이지의 데이터에 액세스하는 올바른 방법은 무엇입니까?

데이터 서비스는 일부 페이지에서 AJAX 컨트롤을 공급하는 데 사용되며 어느 시점에서 모바일 응용 프로그램에서 사용할 수도 있습니다.

동일한 데이터를 표시하고 편집해야하는 여러 개의 비 AJAX MVC 뷰가 있습니다. 컨트롤러에서 직접 Entity Framework를 사용하려면 로그인 한 사용자에 대한 관련 데이터 필터링을 다시 구현해야합니다. 올바른 접근 방식은 동일한 응용 프로그램 내에서 동일한 데이터 서비스를 로컬로 쿼리하는 것입니까?

답변

0

내 권장 사항은 DataFiltering 레이어를 리팩터링하여 기존 WCFDS와 직접 EF에 모두 사용할 수 있도록하고, 래퍼를 사용하여 별도의 모듈로 추출하여 세부 정보를 추상화합니다 그 중 인증 방법 (FormsAuthentication 또는 LoggedIn 사용자)이 사용됩니다. 이것은 구현시 약간의 초기 비용을 가지지 만 동일한 애플리케이션을 다시 쿼리하는 것보다 훨씬 효율적입니다. (나중에 다른 모듈을 구현해야하는 경우 나중에 비용을 절약 할 수 있습니다.)

+0

이렇게하면 반환 된 개체에 고급 LINQ 작업을 수행 할 수있는 기능이 손실되지 않습니까? 현재 LINQ 또는 ODATA를 사용하여 WCFDS에서 모든 종류의 작업을 수행 할 수 있습니다. 업데이트는 어떨까요? 수행 할 수있는 모든 업데이트/삽입 작업에 대해 별도의 함수를 작성해야합니까? 현재 데이터베이스 우선 모드에서 EF를 사용하고 있습니다. 코드를 첫 번째 모드로 전환하면 엔티티 클래스에서 필터링을 수행 할 수 있습니까? 그렇다면 전체 LINQ 기능 집합 및 삽입/업데이트 기능을 유지합니다. – Monstieur

+0

필자는 기존의 WCFDS에서 동일한 쿼리 인터셉터와 서비스 작업을 계속 사용하고 MVC 뷰에서 사용할 수있는 별도의 모듈을 호출하도록 구현을 변경하는 등 더 세밀한 작업을 생각했습니다. 나는이 경우에 제안 할 때 코드 첫 번째 모델을 추천 할 것이고, 그것은 당신이 그 인수 분해를 쉽게하기 위해 필요한 수준의 제어를 제공한다. –

+0

그러면 사이트의 다른 부분에서 일하는 사람들이 공통 필터링 기능을 호출하는 대신 데이터 필터링이나 자체 필터링을 잊어 버리는 결과를 초래할 수 있습니다. 이미 필터링 된 데이터 액세스 수단을 원합니다 (즉, 다시 쿼리하는 경우 DbContext 또는 WCFDS) – Monstieur