2011-05-03 8 views
12

MEF 및 EntityFramework를 사용하여 내 워크 스테이션 에이전트 응용 프로그램을 구축 중입니다. 4플러그인에서 데이터를 마샬링하는 가장 좋은 방법은 무엇입니까?

이 응용 프로그램은 플러그인 아키텍처 (그리고 .dll 파일 형태의 많은 플러그인)가있는 컴퓨터에서 실행되는 간단한 에이전트입니다.

각 플러그인은 고유 한 플러그인 별 테이블을 쿼리합니다. 마스터 프로그램 (또는 에이전트)은 플러그인에 정보를 전달하고 플러그인에서 정보를 수신해야합니다.

플러그인은 Entity Framework 4.1을 사용하여 데이터를 검색하므로 이미 EF 컨텍스트에 연결되어 있으므로 무거운 개체로 구성된 데이터로 개체의 서식이 지정됩니다. 또한 데이터베이스에서 다시 가져 오는 데이터는 일련의 조인이므로 데이터가 이미 만든 POCO ID/클래스 중 하나와 일치하지 않습니다.

데이터를 마샬링하는 가장 좋은 방법은 무엇입니까? MEF를 사용하여 조각을 연결하고 플러그인의 데이터에 대한 객체를 이미 가지고 있음을 고려합니다. 새로운 POCO를 만들고 엔티티 데이터를 그 안에 넣은 다음 배열을 섞어 야하나요? 목록을 만들어야합니까? 나는 할 수있는 것에 관심이 있지만 최선의 관행은 무엇입니까!

+0

응용 프로그램이 플러그인으로부터 얻는 데이터는 무엇을 할 것인가? 필자는 이것이 미리 정의 된 액션이라고 가정하기 때문에 인터페이스 (앱과 플러그인이 알고있는 것 - 아마도 별도의'Commons' 라이브러리에 있음)에 대해 코딩하는 것이 합리적 일 것입니다. – Omar

+0

감사합니다. 주 응용 프로그램에서 플러그인으로 생성 된 결과를 데이터베이스에 저장하고 싶습니다. 나는 [Return]에 그것을 할 수 있다고 생각한다. 내 질문에 대해 더 생각해 보라. 내가 정말로 알고 싶은 것은 라이브러리에서 데이터를 마샬링하는 가장 좋은 방법이다. 필자는 사용하고자하는 필드만을 가지고 새로운 POCO (getter와 setter없이)를 생성하고, List에 추가하고, EF 컨텍스트를 삭제하고, 목록을 반환했습니다. – s0ftimage

+0

귀하의 접근 방식은 비록 새로운 POCO (또는 POCO 목록)를 사용하여 플러그인에 데이터를 전송했을지라도 의미가 있습니다. 플러그 인이 실제로 데이터 영역에 대해 알 필요가 없습니다. 맞습니까? – Adventure

답변

1

이것은 Data Transfer Objects에 대한 좋은 기사입니다. 여기 POCO 개체로 가져 오는 지점에 닿습니다. 추가 확장 및 사용자 정의의 명시적인 의도로 응용 프로그램을 빌드 한 이후로, 나는 POCO 객체가 갈 길이라고 생각합니다. 그렇지 않으면 추가 구성 요소가 EF에 종속되어 플러그인 개발자에게 부담이 될 수 있습니다. POCO/DTO 객체를 사용하면 전송되는 내용과 전송 된 구조를 훨씬 더 효과적으로 제어 할 수 있습니다.

플러그인은 (가상?) 기본 클래스 또는 인터페이스를 구현해야합니다. 아마도 인터페이스를 선택하게 될 것입니다. 플러그인 개발자가 기본 클래스보다 인터페이스에 코드를 쉽게 추가 할 수 있기 때문입니다.

정말로, 나는 당신에게 Omar와 Adventure가 아직 말하지 않은 것을 전혀 말하지 않고 있습니다. 기본적으로 나는 당신이 이미 그것에 대해 잘 알고 있다고 말하고있다.

+0

감사합니다. Jeff! 나는 그 기사를 읽었다. – s0ftimage

관련 문제