전체 주제의 길이에 대해 먼저 사과하겠습니다. 상당히 길지만, 메시지가 오류없이 분명하게 전달되기를 바랍니다.OData WCF 데이터 서비스와 NHibernate 및 기업 비즈니스 로직
여기에는 회사의 기존 ASP.NET WebApplication이 있습니다. .NET Framework 3.5 SP1에서 C# ASP.NET으로 작성되었습니다. 얼마 전에 브라우저에 의존하지 않고 외부 당사자가 응용 프로그램과 통신 할 수 있도록 WCF 및 SOAP를 사용하여이 웹 응용 프로그램 용 초기 API를 개발했습니다.
이 API는 잠시 동안 살아 났지만 결국 요청은 RESTfull이었고 새로운 기술에 의존하는 새로운 API를 만들게되었습니다. 이 과제를 부여 받았고 ASP.NET MVC 프레임 워크를 사용하여 ASP.NET 웹 응용 프로그램 내에서 실행되는 초기 API를 만들었습니다. 처음에는 제대로 작동하기까지 약간의 시간이 걸렸지 만 지금은 리소스를 자세히 설명하는 XML을 받기 위해 애플리케이션에서 REST 호출을 할 수 있습니다.
저는 Microsoft WebCamp에 참석했으며 OData 개념으로 즉시 판매되었습니다. 우리가하고있는 것과 매우 유사했지만 이것은 우리 자신의 구현 대신에 더 많은 플레이어가 지원하는 프로토콜이었습니다. 현재 PoC (Proof of Concept)를 사용하여 OData 프로토콜과 WCF DataService 기술을 사용하여 개발 한 API를 다시 작성하고 있습니다.
데이터 서비스와 함께 NHibernate 2를 사용하기 위해 인터넷을 검색 한 후 들어오는 쿼리 요청을 Google에 매핑하여 내부 비즈니스 계층에서 엔티티를 읽을 수있는 API의 ReadOnly 버전을 만드는 데 성공했습니다. 비즈니스 계층입니다. 그러나 OData 프로토콜을 사용하여 엔티티를 만들 수있는 기능적 API를 원합니다. 이제는 진행 방법에 조금 얽혀 있습니다. 나는 다음 기사를 읽었습니다 : http://weblogs.asp.net/cibrax/default.aspx?PageIndex=3
위의 문서는 멋지게 사용자 정의 DataService를 NHibernate 레이어에 매핑하는 방법을 잘 설명합니다. 나는 이것을 계속 사용하기위한 기반으로 사용했지만 NHibernate를 사용하여 데이터베이스에 직접 요청을 매핑하고 싶지는 않지만 "비즈니스"계층에 매핑하려고합니다 (별도의 DLL)는 액세스, 권한 및 트리거에 기반하여 검사, 제약 조건 및 업데이트의 대량 배치를 수행합니다.
내가 물어보고 싶은 것은, 예를 들어 위의 articly처럼 내 자신의 NhibernateContext 클래스를 만들고 대신 NHibernate 세션 대신 우리의 비즈니스 계층에 의존한다. 나는 아마도 런타임에 작업하고있는 객체의 유형을 파악하고 올바른 비즈니스 클래스를 호출하여 업데이트 및 삭제를 수행하기 위해 리플렉션에 의존해야 할 것입니다. 그래서 것이 일을
*-----------------*
* Database *
*-----------------*
*------------------------*
* DAL(Data Access Layer) *
*------------------------*
*------------------------*
* BUL (Bussiness Layer) *
*------------------------*
*---------------* *-------------------*
* My OData stuff* * Internal API *
*---------------* *-------------------*
*------------------*
* Web Application *
*------------------*
을하거나, 성능은 쓸모 만들 것 :
는에 작은 아스키 그림으로 보여주기 위해? 아니면 여기에 공이 없습니까? OData WCF DataService의 BUL & DAL 계층에 저장된 모든 논리를 다시 사용하고자합니다.
Data.Services 네임 스페이스의 EntityModel 클래스를 상속하는 새 클래스를 만들고 BUL & DAL & API 레이어에 대한 모든 호출을 표시하는 새 DataService 개체를 만들려고했습니다. 그러나 나는 자원을 만들고 삭제하는 요청을 가로 챌 곳/사람을 알지 못합니다.
내가 설명하려고하는 것이 분명하고 누군가가 나를 도울 수 있기를 바랍니다.
매우 유용한 기사 위의 링크 수정 (소스 등 포함) http://weblogs.asp.net/cibrax/archive/2010/08/13/nhibernating-a-wcf-data-service.aspx – paulecoyote