Basic WCF Example #Root #By Sayed Ahmed

Defining and Implementing a Contract

using System.ServiceModel;

//a WCF contract defined using an interface
[ServiceContract]
public interface IMath
{
    [OperationContract]
    int Add(int x, int y);
}


//the service class implements the interface
public class MathService : IMath
{
    public int Add(int x, int y)
    { return x + y; }
}


Defining Endpoints and Starting the Service

public class WCFServiceApp
{
    public void DefineEndpointImperatively()
    {
        //create a service host for MathService
        ServiceHost sh = new ServiceHost(typeof(MathService));

        //use the AddEndpoint helper method to
        //create the ServiceEndpoint and add it 
        //to the ServiceDescription
        sh.AddServiceEndpoint(
          typeof(IMath), //contract type
          new WSHttpBinding(), //one of the built-in bindings
          "http://localhost/MathService/Ep1"); //the endpoint's address

        //create and open the service runtime
        sh.Open();

    }

    public void DefineEndpointInConfig()
    {
        //create a service host for MathService
        ServiceHost sh = new ServiceHost (typeof(MathService));

        //create and open the service runtime
        sh.Open();

    }
}
<!-- configuration file used by above code -->
<configuration 
   xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
   <system.serviceModel>
      <services>
         <!-- service element references the service type -->
         <service type="MathService">
            <!-- endpoint element defines the ABC's of the endpoint -->
              <endpoint 
                 address="http://localhost/MathService/Ep1"
                 binding="wsHttpBinding"
                 contract="IMath"/>
         </service>
      </services>
   </system.serviceModel>
</configuration>



Sending Messages to an Endpoint

using System.ServiceModel;
//this contract is generated by svcutil.exe
//from the service's metadata
public interface IMath
{
    [OperationContract]
    public int Add(int x, int y)
    { return x + y; }
}


//this class is generated by svcutil.exe
//from the service's metadata
//generated config is not shown here
public class MathProxy : IMath
{
    ...
}

public class WCFClientApp
{
    public void SendMessageToEndpoint()
    {
        //this uses a proxy class that was
        //created by svcutil.exe from the service's metadata
        MathProxy proxy = new MathProxy();

        int result = proxy.Add(35, 7);
    }
    public void SendMessageToEndpointUsingChannel()
    {
        //this uses ChannelFactory to create the channel
        //you must specify the address, the binding and 
        //the contract type (IMath)
        ChannelFactory<IMath> factory=new ChannelFactory<IMath>(
            new WSHttpBinding(),
            new EndpointAddress("http://localhost/MathService/Ep1"));
        IMath channel=factory.CreateChannel();
        int result=channel.Add(35,7);
        factory.Close();

    }
}

Reference:
http://msdn.microsoft.com/en-us/library/aa480210.aspx
http://msdn.microsoft.com/en-us/library/ms731082%28v=vs.110%29.aspx

From: http://sitestree.com/?p=1305
Categories:Root, By Sayed Ahmed
Tags:
Post Data:2014-08-06 21:04:33

Shop Online: https://www.ShopForSoul.com/
(Big Data, Cloud, Security, Machine Learning): Courses: http://Training.SitesTree.com
In Bengali: http://Bangla.SaLearningSchool.com
http://SitesTree.com
8112223 Canada Inc./JustEtc: http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning)
Shop Online: https://www.ShopForSoul.com/
Medium: https://medium.com/@SayedAhmedCanada