天天看點

WCF學習筆記(二):簡單調用

一個通信會話過程有兩個部分組成,用戶端和服務端,他們要進行會話就必然有共同的語言約定,在WCF中這稱為契約(contract),定義好通信的約定後,服務端需要确定服務的具體内容,即為配置、運作服務、開放終結點。用戶端描述如何從 WCF 服務檢索用于建立 WCF 用戶端的中繼資料。

代碼

using System;

using System.ServiceModel;

namespace Microsoft.ServiceModel.Samples

{

  ServiceContract(Namespace = “http://wengyuli”)] 

  public interface ICalculator

  {

     [OperationContract]

     double Add(double n1, double n2);

   }

}

第二、實作契約

public class CalculatorService : ICalculator

    public double Add(double n1, double n2)

   {

      double result = n1 + n2;

      return result;

    }

第三、釋出服務 

static void Main(string[] args)

        {

            Uri baseAddress = new Uri("http://localhost:8000/wengyuli/Service");

            ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

            try

            {

                serviceHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");

                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();

                smb.HttpGetEnabled = true;

                serviceHost.Description.Behaviors.Add(smb);

                serviceHost.Open();

                Console.WriteLine("The service is ready.");

                Console.WriteLine("Press <ENTER> to terminate service.");

                Console.WriteLine();

                Console.ReadLine();

                serviceHost.Close();

            }

            catch (CommunicationException ce)

                Console.WriteLine("An exception occured: {0}", ce.Message);

                serviceHost.Abort();

        }

            //Create an instance of the WCF Client.

            System.ServiceModel.EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/wengyuli/Service/CalculatorService");

            CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epAddress);

            int value1 = 2;

            int value2 = 5;

            int result = client.Add(value1, value2);

            Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

            client.Close();

            Console.WriteLine();

            Console.WriteLine("Press <ENTER> to terminate client.");

            Console.ReadLine();

     本文轉自wengyuli 51CTO部落格,原文連結:http://blog.51cto.com/wengyuli/588598,如需轉載請自行聯系原作者

繼續閱讀