서비스 지향 아키텍처와 SQL을 활용하여 데이터를 쿼리 할 때 성능을 최적화하는 탁월한 UI를 결합하는 것에 대해 생각해 보면 나는 최근에 약간의 충격을 받았습니다.SQL로 웹 서비스 쿼리
예를 들어 ASP.NET 용 DevExpress 그리드보기는 모든 필터링, 정렬 및 페이징 논리를 데이터베이스 서버에 위임 할 정도로 멋지다. 그러나 이는 데이터 이 SQL 가능 데이터베이스 서버에서 검색된이라고 추정합니다.
데이터베이스와 UI 레이어 사이에 웹 서비스 레이어를 도입하고 UI에서 웹 서비스를 사용하여 데이터를 쿼리하도록하려면 어떻게해야합니까?
- UI에서 웹 서비스를 통해 데이터베이스로 필터링 요청을 전달할 수 있도록 웹 서비스와 UI를 어떻게 디자인 할 수 있습니까?
List QueryData(string sqlQuery)
스타일 웹 서비스를 제공해야하며 보안/액세스 제한을 보장하기 위해 SQL 문자열을 직접 구문 분석해야합니까?- 또는이 부담을 감당할 수있는 좋은 프레임 워크 또는 디자인 가이드 라인이 있습니까?
이것은 매우 일반적인 문제 여야하며, 비교적 적절하게 이미 해결되었다고 확신합니다.
저는 주로 .NET/C# 기반 또는 호환 가능한 솔루션에 관심이 있습니다.
편집 : OData 및 Microsoft WCF Data Services를 발견했습니다. 내가 바로 그것을 가지고하는 경우로 볼 수있는 하나로, OData 기반 응용 프로그램은 다음과 같습니다
- 사용자 ---/나에게 페이지를 줘 1 (기록 1..10)/--->ASP.NET 서버 제어 (HTTP를 통해 물론,)
- ASP.NET 서버 컨트롤 ---/LINQ 쿼리/--->데이터 서비스 클라이언트
- 데이터 서비스 클라이언트 ---/중 하나로, OData 쿼리/--->WCF 데이터 서비스
- WCF 데이터 서비스 ---/LINQ 쿼리/--->엔티티 프레임 워크
- 엔티티 프레임 워크 ---/SQL 쿼리/--->데이터베이스
이 권한이 있으면 DevExpress 서버 컨트롤이 필터링 요청을 위임 할 수 있어야합니다 (예 : 나에게 상위 10 개만 제공하십시오.)이 모든 계층을 통해 데이터베이스에 연결 한 다음 해당 인덱스를 적용하여 해당 쿼리를 수행합니다.
맞습니까?
편집 :이 스레드가 생기게하는 것을 보는 것이 기쁨입니다.
"그냥"IQueryable을 구현하고 백엔드에 webservice를 호출해야합니까? 구성 요소에 익숙하지 않은 경우 ... –
좋은 질문입니다. 저는이 문제로 고생하고 있지만 결코 우아한 해결책을 찾지 못했습니다. 이전 구현에서는 서비스 메서드에 사용자 지정 "필터"매개 변수를 제공하고 (결국에는 WHERE 절로 파싱 됨) 서비스에서 액세스 제한을 보장하는 몇 가지 추가 기준을 추가했습니다. 편집 :이 경우 필자는 Telerik Grid와 협력하여 OQL 쿼리로 필터를 생성했습니다. – Ozzy
@ Vincent : IQueryable을 구현하는 것은 아마도 스토리의 한 부분 일 것이지만 사소한 것입니다. 프레젠테이션 계층에서 LINQ를 사용할 수는 있지만 필터링 및 정렬을 DBMS에 위임하는 방법을 문제 (?)로 해결하지 못합니다. – chiccodoro