Monday, July 23, 2012

WCF Beginners : ABC of EndPoint and Channel


What does ABC imply for WCF Service ? => ENDPOINT




What does ABC imply for WCF Service ? => ENDPOINT



Configuration of endpoint is done as below :
Contract: Attribute used in WCF is Service Contract
E.g.:
--------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.ServiceModel;

namespace Microsoft.ServiceModel.Samples
{
    // Define a service contract.
    [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double n1, double n2);
        [OperationContract]
        double Subtract(double n1, double n2);
        [OperationContract]
        double Multiply(double n1, double n2);
        [OperationContract]
        double Divide(double n1, double n2);
    }

    // Step 1: Create service class that implements the service contract.
    public class CalculatorService : ICalculator
    {
         // Step 2: Implement functionality for the service operations.
        public double Add(double n1, double n2)
        {
            double result = n1 + n2;
            Console.WriteLine("Received Add({0},{1})", n1, n2);
            // Code added to write output to the console window.
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Subtract(double n1, double n2)
        {
            double result = n1 - n2;
            Console.WriteLine("Received Subtract({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Multiply(double n1, double n2)
        {
            double result = n1 * n2;
            Console.WriteLine("Received Multiply({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }

        public double Divide(double n1, double n2)
        {
            double result = n1 / n2;
            Console.WriteLine("Received Divide({0},{1})", n1, n2);
            Console.WriteLine("Return: {0}", result);
            return result;
        }
    }
}
-------------------------------------------------------------------------------------------------------------------------------------------------------- 


Where and How?

Following is configuration required for WCF service, Configuration we will see in depth in later articles,
Note following tabgs,

Services
->Service[attribute->Name]
->Enpoint[Attribute-> address, binding, contract]

Configuration is enough for understanding the explanation and figure mentioned earlier.

xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
        behavior>
      serviceBehaviors>
    behaviors>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">

        <endpoint address="http://localhost:8080/calcservice" binding="basicHttpBinding" contract="ICalculator"/>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

      service>
    services>
  system.serviceModel>
configuration>



EndPoints:
All communication with a Windows Communication Foundation (WCF) service occurs through the endpoints of the service. Endpoints provide clients access to the functionality offered by a WCF service.
Each endpoint consists of four properties:
·         An address that indicates where the endpoint can be found. 
·         A binding that specifies how a client can communicate with the endpoint. 
·         A contract that identifies the operations available. 
·         A set of behaviors (OperationContract) that specify local implementation details of the endpoint. 

Client Communication:

  • ·         Consume Services via Channels based on Endpoints (Binding)
  • ·         Client retrieves Endpoint using Metadata information (WSDL)
  • ·         Regarding WSDL and Metadata we will see in coming articles.




Channels is whole huge topic can’t be covered in scope of this article though.

Channels Abstract:
The Windows Communication Foundation (WCF) channel stack is a layered communication stack with one or more channels that process messages. WCF binding is composed of binding elements and each binding element is corresponding to a specific channel in Channel Stack.

Application-to-application communication can have many aspects. Perhaps a SOAP envelope needs to be created, for example, wrapping whatever information is being sent. Maybe one or more of the WS-* technologies should be used, such as WS-ReliableMessaging or WS-Security. Perhaps the information to be sent should be represented using JavaScript Object Notation (JSON). Or maybe none of these things are required: Just sending plain XML might be sufficient. And however a message is structured, it must eventually be sent to its destination using HTTP, TCP, Microsoft Messaging Queuing (MSMQ), or something else.

 WCF's Design for Diversity was the reason for which 2 big ideas were introduced “Binding and Channels” to WCF. By specifying a particular binding, a WCF client or service implicitly creates a channel stack that implements a particular set of communication behaviors. So, a single channel in channel stack is unit of binding.


Next we will see ,
  • ServiceContract
  • OperatioCOntract
  • DataContract
  • MessageContract



0 comments:

Post a Comment