WCF to build SOAP based service

前端 未结 3 1584
我在风中等你
我在风中等你 2021-01-04 02:40

I am trying to find some good tutorials that would show me to create a simple SOAP based service using WCF and deploy it. I have been googling for the past 2 hour and can\'t

3条回答
  •  旧巷少年郎
    2021-01-04 03:16

    REST / SOAP endpoints for a WCF service

    You can expose the service in two different endpoints. the SOAP one can use the binding that support SOAP e.g. basicHttpBinding, the RESTful one can use the webHttpBinding. I assume your REST service will be in JSON, in that case, you need to configure the two endpoints with the following behaviour configuration

    
    
    
    
    
    

    An example of endpoint configuration in your scenario is

    
    
    
    
    
    
    

    so, the service will be available at

    http://www.example.com/soap http://www.example.com/json Apply [WebGet] to the operation contract to make it RESTful. e.g.

    public interface ITestService { [OperationContract] [WebGet] string HelloWorld(string text) }

    Note, if the REST service is not in JSON, parameters of the operations can not contain complex type. For plain old XML as return format, this is an example that would work both for SOAP and XML.

    [ServiceContract(Namespace = "http://test")]
    public interface ITestService
    {
    [OperationContract]
    [WebGet(UriTemplate = "accounts/{id}")]
    Account[] GetAccount(string id);
    }
    

    POX behavior for REST Plain Old XML

    
      
    
    

    Endpoints

    
    
    
    
    
    
    

    Service will be available at

    http://www.example.com/soap http://www.example.com/xml
    REST request try it in browser,
    http://www.example.com/xml/accounts/A123

    SOAP request client endpoint configuration for SOAP service after adding the service reference,

    
    
    

    in C#

    TestServiceClient client = new TestServiceClient();
    client.GetAccount("A123");
    

    Another way of doing it is to expose two different service contract and each one with specific configuration. This may generate some duplicates at code level, however at the end of the day, you want to make it working.

提交回复
热议问题