Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

REST and WCF connection

Tags:

rest

wcf

I am specifically looking for an example which use a) WCF & REST. After a long googling, though I got some but they are beyond my understanding.

Could some one please give me a very simple example say "Hallow World" or Summation of 2 numbers which will give me a clear insight about how to write a server, and also how to consume the same from the client end.

Also if any good link that explains this kind of example in simple terms kindly tell me that.

Thanks

like image 519
priyanka.bangalore Avatar asked Feb 28 '23 13:02

priyanka.bangalore


2 Answers

REST in WCF is not that hard once you figure it out.

First you must define your interface.

Here is an example.

[ServiceContract]
public interface IRESTExample
{
    [WebGet(UriTemplate = "interaction/queue?s={site}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
    [OperationContract]
    string QueueInteraction(string site);

    [WebGet(UriTemplate = "interaction/cancel?id={interactionId}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
    [OperationContract]
    string CancelInteraction(string interactionId);

    [WebGet(UriTemplate = "queue/state?s={site}&q={queue}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
    [OperationContract]
    string QueueState(string site, string queue);

}

You can see in the WebGet you define the final URL. So it depends on where you bind it, but say you bind the endpoint to www.example.com/rest

QueueInteraciton would be www.example.com/rest/interaction/queue?s=SomeSite

Where {stie} or {parameterName} is replaced with the name of the parameter.

The implemetion is just a simple class, I am going to assume you know how to implement an interface. If you need help just leave a comment.

Now binding the endpoint. In the end it is not that hard, you can do it all in the config.

<system.serviceModel>
    <services>
        <service name="Stackoverflow.Example.Service.RestExample" behaviorConfiguration="MyServiceTypeBehaviors">
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:2136/RestExample"/>
                </baseAddresses>
            </host>

            <endpoint address="rest" binding="webHttpBinding" behaviorConfiguration="xmlBehavior" contract="Stackoverflow.Example.Service.IRESTExample" />

        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyServiceTypeBehaviors" >
                <!-- Add the following element to your service behavior configuration. -->
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>

        <endpointBehaviors>
            <behavior name="jsonBehavior">
                <webHttp/>
            </behavior>
            <behavior name="xmlBehavior">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <bindings>
        <basicHttpBinding>
            <binding name = "NoSecurity">
                <security mode = "None" />
            </binding>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>

Now the code to start the service and bind it. YOu can do it in anything, for example a console app.

RestExample exampleService = new RestExample();

host = new ServiceHost(exampleService);

host.Open();

This should be enough to get started.

like image 90
David Basarab Avatar answered Mar 06 '23 23:03

David Basarab


msdn article An Introduction To RESTful Services With WCF with code example at msdn code gallery. Also check out this codeproject article

like image 24
Gern Blanston Avatar answered Mar 06 '23 23:03

Gern Blanston