Click here to Skip to main content
15,888,984 members
Articles / Mobile Apps / Android

WCF and Android - Part I

Rate me:
Please Sign up or sign in to vote.
3.57/5 (6 votes)
2 Apr 2012Apache1 min read 73.5K   23   1
This article describes how to create a REST WCF-Webservice which can be consumed on Android devices.

Introduction

The Windows Communication Foundation (WCF) provides a very flexible way of exposing network interfaces to other applications. For cross platform and inter programming language support, basically two technologies can be used. SOAP and REST services. The SOAP approach provides far more features out of the box but is not really suitable for mobile devices if speed matters. Therefore, this article describes how to create a REST WCF-Webservice which can be consumed on Android devices.

WCF Part

The WCF part is composed of three files, the service contract, the service implementation and the app.config.

The Service Contract

The service contract defines the webservice methods.

To expose the service via REST, the WegGet attribute is required. It specifies the URL of each method, the serialization format (JSON or XML, use JSON for fast processing). If the method has parameters, they can either be provided using POST (requires another attribute) or they can be provided by specifying them in the URL as shown in the example. The implementation of this method is straight forward and requires no attributes.

C#
[ServiceContract()]
public interface ISecurityService
{
    [OperationContract()]
    [FaultContract(typeof(WCFFault))]
    [WebGet(UriTemplate="test/{param1}", ResponseFormat=WebMessageFormat.Json)]
    void test(string param1);
}

app.config

The application config associates different services with different endpoints and bindings. This configuration does not use any transport security or other security mechanisms. For REST services, the webHttp behaviour is important.

XML
<configuration>
<system.serviceModel>
  <bindings>
   <webHttpBinding>
    <binding
     name="web_http"
     bypassProxyOnLocal="false"
     hostNameComparisonMode="WeakWildcard">          
   </binding>
  </webHttpBinding>
</bindings>
        
<behaviors>            
  <serviceBehaviors>
   <behavior name="http_behavior" >
    <serviceMetadata httpGetEnabled="true" />
    <serviceDebug includeExceptionDetailInFaults="true"/>
   </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
   <behavior name="web_behavior">
    <webHttp helpEnabled="True" />
   </behavior>
  </endpointBehaviors>
</behaviors>
      
<services>
  <service name="ServiceImpl" behaviorConfiguration="http_behavior">
   <host>
    <baseAddresses>
     <add baseAddress="http://*:18000/my_service" />
    </baseAddresses>
   </host>
   <endpoint
    address="my_service"
    binding="webHttpBinding"
    bindingConfiguration="web_http"
    contract="IService"
    behaviorConfiguration="web_behavior"
   />
   <endpoint contract="IMetadataExchange" 
       binding="mexHttpsBinding" address="mex"/>
  </service>
</services>
</system.serviceModel>

Run the Service

The service can be mounted to an application container (e.g. IIS) or can be self hosted with just a single line of code:

C#
new WebServiceHost(typeof(MyService)).Open();

That's it, browse to http://localhost:18000/test/myparam.

The next part will describe how to use the service with Android.

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Student
Austria Austria
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionPlease Upload Sample Files Pin
00RobbyC0013-Jul-12 5:56
00RobbyC0013-Jul-12 5:56 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.