2010-02-03 3 views
3

데이터베이스의 추상화/작업을 위해 ORM으로 Microsoft의 Entity Framework를 사용한다고 가정합니다. 다음으로는 응용 프로그램이 WCF 서비스와 기존 데이터베이스를 동시에 사용할 필요가있는 요구 사항이 있습니다.기존 데이터베이스와 WCF 서비스를 추상화하는 ORM

내 지식으로는 Entity Framework와 같은 방식으로 WCF 서비스를 추상화 할 수있는 ORM 도구가 없습니다.

이 작업을 도와 줄 수있는 제품이 있습니까? 목표는 WCF와 기존 데이터베이스를 추상화하여 도메인 프로그래머에게 하나의 데이터베이스로 작업하는 것처럼 보이게하는 것입니다. 그들은 WCF 서비스가 제 3 자입니다

하는 것으로 --- 신경 또는 아래 실체 해부 및 여러 위치 (WCF 또는 데이터베이스)

--- 편집에 지속되고 있음을 걱정할 필요가 없습니다 그 우리는 통제 할 수 없다. 그러나 동시에 우리는 완전히 다른 데이터베이스와 대화해야합니다.이 데이터베이스는 전통적인 MS SQL 데이터베이스입니다.

+0

정말로 프로그래머가 WCF 웹 서비스에 액세스하여 오히려 장면 뒤의 ORM과 대화 할 수있는 것처럼 들릴 수도 있습니다. ORM을 앞에두고 싶지 않은 특별한 이유가 있습니까? –

+0

안녕 마이클. 글쎄, WCF 서비스가 우리가 통제 할 수없는 제 3 자이기 때문입니다. 그러나 동시에 우리는 완전히 다른 데이터베이스와 대화해야합니다.이 데이터베이스는 전통적인 MS SQL 데이터베이스입니다. – 7wp

+0

제 3 자 웹 서비스와 ORM/데이터베이스와 인터페이스하는 새로운 WCF 웹 서비스를 작성할 수 있습니다. 그게 아마 내가 할일이야. 그래도 여전히 귀하의 질문에 대한 직접적인 대답은 아닙니다. –

답변

4

새로운 WCF 데이터 서비스를 살펴보십시오.

.net 4를 사용할 수있는 경우 일반 올드 CLR 개체 (POCO)에서 EF를 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/data/bb931106.aspx

+0

V1에서도 POCO DTO에 투영 할 수 있습니다. 그러나 +1 데이터 서비스; 이것이 갈 길입니다. –

+0

사실, 나는 그것을 되돌려 줘야한다고 생각한다 (의견이 아닌 투표). 그의 질문은 명확하지 않지만 그의 편집에 기초하여 그는 서비스를 쓰기보다는 서비스를 소비하고 싶어한다. –

+0

예 크레이그. 그거 맞아. – 7wp

4

글쎄, 당신이 조금 여기 혼합 물건을 받고 있다고 생각 :

ORM은 객체 - 대 - 관계형 데이터 "차이"를 해소 할 필요가 - 당신은 매핑해야 관계형 데이터베이스의 행과 열 사이 및 OO 세계의 속성을 가진 객체가 포함됩니다. 그것이 ORM의 역할이며,이 도구가 (다소간) 좋은 점입니다.

그러나 WCF 서비스는 개체 주위를 왕복하는 방법 일뿐입니다. 여기에 "맵핑"할 때 어떤 격차 나 불일치도 실제로 없습니다. 예, 처리해야 할 여러 가지 문제가 있지만 생각할 필요가 있습니다. 기본적으로 WCF 서비스는 개체 (개체) 또는 개체 컬렉션 또는 이와 유사한 개체를 반환합니다.

관계형 데이터베이스와 개체 모델 간의 매핑을 수행하는 ORM이 있다면 개체가 이미 있습니다. WCF는 외부 세계에서 사용할 수 있도록 만드는 방법 일뿐입니다. 그러나 실제 매핑이 없습니다. 여기서 두 개의 서로 다른 세계 사이.

EF 엔티티를 WCF 서비스를 통해 전송되는 더 경량의 데이터 변환 개체 (DTO)에 매핑해야하는 경우 AutoMapper을보고 두 개의 서로 다른 개체간에 쉽게 매핑 할 수 있습니다. 그러나 다시 말하자면, 여기에 기술 격차를 근본적으로 메우는 것이 아니라 두 세트의 객체 사이를 매핑하는 것입니다.

+0

나는 본다. 그러나 도메인 기반 디자인 원칙을 사용하려고하고 POCO 개체를 사용하여 엔터티를 나타내려면 어떻게해야합니까? – 7wp

+0

@Roberto : 방금 업데이트 한 것처럼 - 그렇습니다. AutoMapper와 같은 것을 사용하여 두 세트의 객체 사이를 매핑해야 할 수도 있습니다.하지만 그건 ** 관계형 객체와 같은 기술 매핑이 아닙니다 ** 한 객체에서 다른 객체로 복사 –

+0

예를 들어, 당신이 인수를 위해 Student 엔티티를 가지고 있다고 가정하면, 그 엔티티의 일부 정보는 WCF 서비스를 통해 어디에서 저장되고 나머지는 전통적인 데이터베이스에서 유지됩니다. LLBLGen Pro 또는 nHibernate와 같은 작업 단위 (UOW)를 사용하여이 데이터를 트랜잭션으로 유지하고자합니다. – 7wp

관련 문제