<?xml version="1.0" encoding="utf-8"?>
<Type Name="IMetadataExchange" FullName="System.ServiceModel.Description.IMetadataExchange">
  <TypeSignature Language="C#" Value="public interface IMetadataExchange" />
  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IMetadataExchange" />
  <AssemblyInfo>
    <AssemblyName>System.ServiceModel</AssemblyName>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.ServiceModel.ServiceContract(Name="IMetadataExchange", Namespace="http://schemas.microsoft.com/2006/04/mex")</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <remarks>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>When programming indigo1 services, it is useful to publish metadata about the service. For example, metadata can be a Web Services Description Language (WSDL) document that describes all of the methods and data types employed by a service. Returning metadata about an indigo2 service allows consumers of a service to easily create clients for the service. For more information about indigo2 metadata endpoints, see <format type="text/html"><a href="66a61bd0-18d3-4e7e-bf8b-177a10ac2f60">Metadata</a></format>.</para>
      <para>Services implemented using indigo2 publish metadata by exposing one or more metadata endpoints. Metadata endpoints in indigo2 have an address, a binding and a contract like any other endpoint.  The <see cref="T:System.ServiceModel.Description.MetadataReference" /> interface specifies the service contract implemented by all metadata endpoints in indigo2.</para>
      <para>There is no need to implement the <see cref="T:System.ServiceModel.Description.MetadataReference" /> contract in your service implementation.  Instead, add the <see cref="T:System.ServiceModel.Description.ServiceMetadataBehavior" /> to the service description. </para>
      <para>Or, when using configuration, set the contract attribute of the endpoint element to IMetadataExchange. For an example, see <format type="text/html"><a href="f061443f-92df-4824-b36a-609c4cd14a17">How to: Publish Metadata for a Service Using a Configuration File</a></format>.</para>
      <para>For details on publishing metadata in indigo2 see <format type="text/html"><a href="3a56831a-cabc-45c0-bd02-12e2e9bd7313">Publishing Metadata</a></format>.</para>
    </remarks>
    <summary>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>Exposes methods used to return metadata about a service.</para>
    </summary>
  </Docs>
  <Members>
    <Member MemberName="BeginGet">
      <MemberSignature Language="C#" Value="public IAsyncResult BeginGet (System.ServiceModel.Channels.Message request, AsyncCallback callback, object state);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.IAsyncResult BeginGet(class System.ServiceModel.Channels.Message request, class System.AsyncCallback callback, object state) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.ServiceModel.OperationContract(Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Get", AsyncPattern=true, ReplyAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse")</AttributeName>
        </Attribute>
      </Attributes>
      <ReturnValue>
        <ReturnType>System.IAsyncResult</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="request" Type="System.ServiceModel.Channels.Message" />
        <Parameter Name="callback" Type="System.AsyncCallback" />
        <Parameter Name="state" Type="System.Object" />
      </Parameters>
      <Docs>
        <remarks>To be added.</remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Starts an asynchronous retrieval of metadata.</para>
        </summary>
        <returns>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>An <see cref="T:System.IAsyncResult" /> that can be passed to the <see cref="M:System.ServiceModel.Description.IMetadataExchange.EndGet(System.IAsyncResult)" /> method.</para>
        </returns>
        <param name="request">
          <attribution license="cc4" from="Microsoft" modified="false" />A <see cref="T:System.ServiceModel.Channels.Message" /> that should be processed to determine the metadata to return.</param>
        <param name="callback">
          <attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.AsyncCallback" /> that points to the method that will process the metadata.</param>
        <param name="state">
          <attribution license="cc4" from="Microsoft" modified="false" />Any data which allows the caller to determine which asynchronous call is being returned.</param>
      </Docs>
    </Member>
    <Member MemberName="EndGet">
      <MemberSignature Language="C#" Value="public System.ServiceModel.Channels.Message EndGet (IAsyncResult result);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.ServiceModel.Channels.Message EndGet(class System.IAsyncResult result) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ServiceModel.Channels.Message</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="result" Type="System.IAsyncResult" />
      </Parameters>
      <Docs>
        <remarks>To be added.</remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Concludes the retrieval of metadata.</para>
        </summary>
        <returns>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>A <see cref="T:System.ServiceModel.Channels.Message" /> containing the processed metadata.</para>
        </returns>
        <param name="result">
          <attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.IAsyncResult" />  that contains data used to further process the metadata.</param>
      </Docs>
    </Member>
    <Member MemberName="Get">
      <MemberSignature Language="C#" Value="public System.ServiceModel.Channels.Message Get (System.ServiceModel.Channels.Message request);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.ServiceModel.Channels.Message Get(class System.ServiceModel.Channels.Message request) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.ServiceModel.OperationContract(Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Get", AsyncPattern=false, ReplyAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse")</AttributeName>
        </Attribute>
      </Attributes>
      <ReturnValue>
        <ReturnType>System.ServiceModel.Channels.Message</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="request" Type="System.ServiceModel.Channels.Message" />
      </Parameters>
      <Docs>
        <remarks>To be added.</remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Returns the service metadata.</para>
        </summary>
        <returns>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>A <see cref="T:System.ServiceModel.Channels.Message" /> containing the metadata.</para>
        </returns>
        <param name="request">
          <attribution license="cc4" from="Microsoft" modified="false" />A <see cref="T:System.ServiceModel.Channels.Message" /> that contains the request for metadata.</param>
      </Docs>
    </Member>
  </Members>
</Type>