2011-07-04 6 views
0

입력/반환 된 매개 변수로 몇 가지 (더 복잡한) 클래스를 사용하는 몇 가지 간단한 웹 메서드 (WCF 서비스의 일부로)를 작성했습니다. 각 웹 메소드는 [DataContract]에 의해 할당 된 각 데이터 클래스 인 [OperationContract]에 의해 할당되며 [DataMethod]에 의해 할당 된 클래스의 각 데이터 필드 클라이언트 측에서 서비스 참조를 추가하여 이러한 웹 메소드를 호출 할 수 있습니다. 모든 것이 괜찮지 만 위의 데이터 클래스 중 일부 인스턴스를 클라이언트 측에서 만들면 생성자가 실행되지 않습니다. 각 인스턴스를 초기화하기 위해 약간의 번거 로움이 있기 때문에 매번 자체 생성자가 클라이언트 측에서 인스턴스를 초기화하는 방법이 있다고 생각했습니다. 미리 감사드립니다. Ilan.WCF 웹 서비스 및 생성자

+0

질문의 명확성. 그들의 생성자가 * 실행하지 않는다는 것이 무엇을 뜻하는지 확실하지 않습니다. –

+0

데이터 클래스 (생성자 포함)는 서버 측에서 정의됩니다 (WCF 웹 서비스 VS2010 솔루션). 그러나 웹 메소드를 소비하고 위의 클래스의 인스턴스를 만드는 것은 클라이언트 응용 프로그램에 있습니다 (VS의 "Sevice Reference"추가를 통해). 새로 생성 된 인스턴스 (클라이언트 측)는 생성자를 호출하지 않습니다 .-( – Ilan

답변

1

서비스의 데이터 계약 (생성자 포함)에 표시되는 메서드는 서비스 응용 프로그램에만 해당됩니다. 서비스 설명에 논리를 설명 할 수 없으며 논리를 직렬화 할 수 없기 때문에 서비스 참조를 추가하면 데이터 계약 클래스의 데이터 구조 만 재생성됩니다.

서비스 참조로 생성 된 모든 클래스는 부분적입니다. 자신 만의 부분 클래스를 만들고 자신 만의 사용자 정의 생성자를 추가하거나 서비스와 클라이언트간에 데이터 계약을 통해 share the assembly을 추가 할 수 있습니다 (하지만 대부분의 경우 원하지 않는 데이터 계약 클래스에 추가 된 모든 로직을 공유합니다). 어셈블리를 공유하면 클라이언트와 서비스가 밀접하게 결합됩니다.