2013-07-30 8 views
0

smartliclient 및 webservices를 만들었습니다. webservices + 관련 클래스가있는 서버와 데스크탑 응용 프로그램이있는 클라이언트를 만들었습니다. smartclient 프로젝트에서 namespace 및 class name은 servver-webservices와 동일합니다. 클라이언트 문제는 SmartInstitute.Course SmartClient 클래스와 웹 서비스 클래스 간의 충돌

using SmartInstitute.Automation.SmartInstituteServices.CourseService; // webservice 
CourseService service = new CourseService(); 
SmartInstitute.Course[] allCourses = service.GetAllCourses(); 

프로젝트 - - SmartClient를 프로젝트에 존재한다. 그것의 보여주는 foll. 오류 -

암시 적 형식을 변환 할 수 없습니다 은 'SmartInstitute.Automation.SmartInstituteServices.CourseService.Course []' 에 'SmartInstitute.Course은 []'

은 더 많은 정보를 원한다면 알려 주시기 바랍니다 . 안녕하세요, http://www.codeproject.com/Articles/11163/Developing-Next-Generation-Smart-Clients-using-NET

미리 감사드립니다.

답변

0

네임 스페이스가 이 아닌과 동일합니다. 하나에서는 상당히 명확하게 SmartInstitute.Automation.SmartInstituteServices.CourseService이고 대 SmartInstitute입니다. WCF 서비스 인 경우 서비스를 추가 할 때 IDE 및 명령 줄 도구에서 기존 형식을 다시 사용할 수있는 옵션이 있습니다. 이어야하며 형식을 선언하는 어셈블리는 다음과 같습니다. 지정된. 그러나이 작업을하는 가장 쉬운 방법은 두 계층에서 참조하고 사용하는 DTO 유형 (Cource 등)을 전용 단순 어셈블리에 포함시키는 것입니다. 그런 다음 WCF를 사용하여 일반적으로 "그냥 작동"합니다. 2.0 스타일 asmx 웹 서비스를 사용하는 경우 작동하지 않습니다 (이 시나리오를 지원하지 않음).

또 다른 대안은 다음과 같습니다. 웹 서비스 프록시 유형을 정확하게 처리합니다. 주 도메인 모델과 관련없는 DTO 유형. 그런 다음 DTO 유형과 도메인 모델 사이의 데이터를 매핑하십시오 (AutoMapper와 같은 도구가 있지만 정직하게도 수동으로 처리하는 데는 몇 줄 밖에 없습니다). 그런 다음 프록시 유형은 웹 서비스를 캡슐화하는 코드까지만 이동합니다 (캡슐화하고 있습니까?).

+0

감사합니다. asmx webservice를 WCF 응용 프로그램으로 변환하겠습니다. – Abhi