Thursday, February 25, 2016

Some WCF messaging scenarios


Message Streaming, including REST

   <bindings>
      <webHttpBinding>
        <binding name="strmREST" transferMode="Streamed"  maxReceivedMessageSize="67108864"/>
      </webHttpBinding>
      <netTcpBinding>
        <binding name="strm2" transferMode="Streamed"  maxReceivedMessageSize="67108864"/>
      </netTcpBinding>
      <netNamedPipeBinding>
        <binding  name="strm3" transferMode="Buffered" maxReceivedMessageSize="67108864"/>
      </netNamedPipeBinding>
      <customBinding>
        <binding name="strm4">
          <namedPipeTransport transferMode="Streamed"/>
          <textMessageEncoding  messageVersion="Soap2WSAddress" />
        </binding>
      </customBinding>
    </bindings>
  </system.serviceModel>

Inject Address Header

    <services>
      <service name="Wcf_Tryout.Service1">
        <endpoint>
          <headers>
            <Member>Header1</Member>
          </headers>
        </endpoint>
      </service>
    </services>

  <system.serviceModel>
    <client>
      <endpoint address ="" binding="b1" contract="" >
        <headers>
          <Member>Header1</Member>
        </headers>
      </endpoint>
    </client>


            var b= new EndpointAddressBuilder(new EndpointAddress("tcp://localhost:8080/s"));
            AddressHeader h = AddressHeader.CreateAddressHeader("header1");
            b.Headers.Add(h);
            EndpointAddress ea= b.ToEndpointAddress();

            MessageHeader<string> mh= new MessageHeader<string>("header1");
            OperationContext.Current.OutgoingMessageHeaders.Add(mh.GetUntypedHeader("id","http://ns"));
            MessageHeaderInfo inInfo = OperationContext.Current.IncomingMessageHeaders[0];

Restful WCF Contract means WebGet/WebInvoke

    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(UriTemplate = "users/{userName}/bookmark?tag={Tag}")]
        string GetData(string userName,string tag);

        [OperationContract]
        [WebInvoke(Method = "Post", UriTemplate = "users/{username}/bookmarks/{id}")]
        void SetData(string userName, string id, User data);
    }


 


No comments:

Post a Comment