2012-10-01 4 views
0

Visual Studio에서 추가 참조를 사용하지 않고 서비스 참조를 프로젝트에 동적으로 추가 할 수 있습니까? Wsdl 메타 데이터 가져 오기는이 목표를 달성하는 데 도움이 될 수 있습니다. 프로젝트에 서비스를 동적으로로드하고 첨부하고 wcf에서 클라이언트를 사용하거나이를 달성하는 방법을 제안 해 줄 수 있습니다.동적으로 서비스 참조 추가

답변

0

.NET 프레임 워크에는 System.ServiceModel.Discovery이라는 전용 네임 스페이스가 있습니다. 높은 수준에서 사용할 수있는 서비스를 찾을 수있는 DiscoveryClient을 사용합니다.

DiscoveryClient으로 서비스를 찾으려면 AnnouncementClient 클래스를 통해 서비스 정보를 보내야합니다. 이 클래스를 사용하면 서비스에서 공지 메시지를 게시 할 수 있습니다. 설명서에서 :

알림 메시지에는 정규화 된 계약서 이름, 서비스가 작동중인 범위 및 서비스에서 보내고 자하는 모든 사용자 지정 메타 데이터와 같은 서비스 정보가 들어 있습니다.

이러한 클래스는 동적 서비스 검색 및 사용을 위해 배관을 제공하는 데 필요한 모든 항목이어야합니다.

0

기존 타사 끝점 (사용자가 제어 할 수없는 서비스)을 사용하려는 경우 .NET 프레임 워크에서 최소한 두 가지 방법이 제공됩니다.

  • MetadataExchangeClient
  • MetadataResolver
  • 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(); 
      
    +0

    안녕 필이 나를 위해 메타 데이터를 검색 할 수 있었다 어떤 이유로 링크가 [link] (http://blogs.msdn.com/b/dhrubach/archive/2008/10/20/8623711.aspx) – Hunter

    +0

    작은 예제가 작동하는지 확인할 수 있습니다. 오늘 밤, 나는 GitHub에 올려 놓을 것이다. –

    +0

    HI Phil wsdl 파일에 위의 예제를 사용하여 6 개의 스키마가 있지만 스키마 수가 0 인 것으로 나타났습니다. – Hunter