Visual Studio에서 추가 참조를 사용하지 않고 서비스 참조를 프로젝트에 동적으로 추가 할 수 있습니까? Wsdl 메타 데이터 가져 오기는이 목표를 달성하는 데 도움이 될 수 있습니다. 프로젝트에 서비스를 동적으로로드하고 첨부하고 wcf에서 클라이언트를 사용하거나이를 달성하는 방법을 제안 해 줄 수 있습니다.동적으로 서비스 참조 추가
답변
.NET 프레임 워크에는 System.ServiceModel.Discovery이라는 전용 네임 스페이스가 있습니다. 높은 수준에서 사용할 수있는 서비스를 찾을 수있는 DiscoveryClient을 사용합니다.
DiscoveryClient으로 서비스를 찾으려면 AnnouncementClient 클래스를 통해 서비스 정보를 보내야합니다. 이 클래스를 사용하면 서비스에서 공지 메시지를 게시 할 수 있습니다. 설명서에서 :
알림 메시지에는 정규화 된 계약서 이름, 서비스가 작동중인 범위 및 서비스에서 보내고 자하는 모든 사용자 지정 메타 데이터와 같은 서비스 정보가 들어 있습니다.
이러한 클래스는 동적 서비스 검색 및 사용을 위해 배관을 제공하는 데 필요한 모든 항목이어야합니다.
기존 타사 끝점 (사용자가 제어 할 수없는 서비스)을 사용하려는 경우 .NET 프레임 워크에서 최소한 두 가지 방법이 제공됩니다.
MetadataExchangeClient가 MEX/WSDL 끝점에 접속하여 서비스를 나타내는 메타 데이터 객체들의 집합을 다시 반환
-
.
알려진 서비스의 구성을 MEX/wsdl 끝점과 해결할 형식으로 전달하면 MetadataResolver가 알려진 서비스의 구성을 반환합니다. 이를 통해 연결 설정을 지정하지 않고도 가져올 수 있습니다.
다른 유용한 정보는 System.ServiceModel.Description 네임 스페이스를 참조하십시오. 위의 두 클래스와 동적 서비스 확인과 관련된 두 가지 클래스가 있습니다.
편집 :이 인수 누락 말한다 나는 서비스 설명 클래스를 사용하여이 자원을 온라인으로 시도했지만 내가 수입 객체로 가져올 때 오류가
MetadataExchangeClient client = new MetadataExchangeClient(
new Uri("http://localhost:22948/Service1.svc?wsdl"),
MetadataExchangeClientMode.HttpGet);
var response = client.GetMetadata();
안녕 필이 나를 위해 메타 데이터를 검색 할 수 있었다 어떤 이유로 링크가 [link] (http://blogs.msdn.com/b/dhrubach/archive/2008/10/20/8623711.aspx) – Hunter
작은 예제가 작동하는지 확인할 수 있습니다. 오늘 밤, 나는 GitHub에 올려 놓을 것이다. –
HI Phil wsdl 파일에 위의 예제를 사용하여 6 개의 스키마가 있지만 스키마 수가 0 인 것으로 나타났습니다. – Hunter