고급 디자인 문제
클라이언트에서는 원격 형식의 형식 정보를 필요로 하므로 때로는 클라이언트에서 메타데이터 라이브러리로 사용할 수 있도록 원격 형식 라이브러리를 간단히 배포하는 것이 가장 쉽습니다. 그러나 대부분의 경우 사용자는 클라이언트에서 형식 구현에 액세스하지 않기를 원합니다. 다음과 같이 다양한 방법을 사용하여 이 문제를 해결할 수 있습니다.
아래의 단독 클라이언트에서 설명하는 것처럼 Soapsuds 도구(Soapsuds.exe)를 사용하여 단독 클라이언트를 빌드합니다.
서버 어셈블리와 동일한 이름 및 형식 정보가 포함된 메타데이터 전용 어셈블리를 클라이언트에 배포하고 버전 검사를 비활성화하거나 버전을 공백으로 둡니다.
별도의 라이브러리에 인터페이스를 선언하고 해당 라이브러리를 클라이언트와 함께 배포합니다. 사용자의 인터페이스를 구현하는 서버 클래스를 게시하면 클라이언트에서는 이 클래스가 구현하는 인터페이스에 대한 프록시를 가져옴으로써 해당 클래스를 사용할 수 있게 됩니다.
참고
클라이언트에서는 Activator.GetObject 메서드를 호출하여 프록시를 가져와야 합니다. new(Visual Basic에서는 New)를 호출하면 컴파일 타임 오류가 throw되며 인터페이스의 인스턴스를 만들 수 없습니다.
실제 클래스에 대해 원격화할 수 있는 래퍼 클래스를 작성합니다. 래퍼 라이브러리를 게시하고 배포합니다. 클라이언트가 실제 개체에 액세스할 수 없게 됩니다.