翔如菲菲

其实天很蓝,阴云总会散;其实海不宽,此岸连彼岸.

导航

WCF简介(四)--DEMO

下面我们就构建一个WCF -HelloWorld:

1新建一个ConsoleApplication工程Named Service  添加一个Config文件。

2添加 System.ServiceModel 命名空间,程序中添加 using System.ServiceModel:


   

   3定义一个Service Contract


namespace service
{
    [ServiceContract]
    
public interface IHello
    
{
        [OperationContract]
        
void Hello();
    }

     .

IHello类标记了[ServiceContract]属性,这就使得该类成为了一个WCF Service,而其中的方法void Hello()则因为标记了[OperationContract],而成为该Service的一个Operation

   4.定义一个HelloWorld类实现IHello

…….

  public class HelloWorld : IHello

    {

             public void Hello()

               {

                 Console.WriteLine("Hello World!");

              }

……

在实现IHello类和方法中不需要ServiceContractOperationContract属性

   5配置App.config文件

 

   右键App.config选择 Edit WCF Configuration 或者在Tools 选择 WCF Service

   (1Configuration Editor


   (2Create a New Service 

   Set Name = service.HelloWorld


   (3Configuration Endpoints





  <endpoint address=""

              binding="wsHttpBinding"

             contract="service.IHello" />


   (4Configuration BaseAddress


<host>

          <baseAddresses>

            <add baseAddress="http://localhost:8000/HelloWorld/service"/>

          </baseAddresses>

      </host>

   (5Configuration Service Medtadata 

            Select-Advanced-Service Behavior(右键)- New ServiceBehaviorConfiguration



   (6Set  Name=HelloWorldServiceBehavior



Select –serviceMetadata 设置HttpGetEnbled=true


   (7Select service.HelloWorld 设置

App.config 文件如下:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <system.serviceModel>

      <services>

        <service behaviorConfiguration="HelloWorldServiceBehavior" name="service.HelloWorld">

          <endpoint binding="wsHttpBinding" bindingConfiguration="" contract="service.IHello" />

          <host>

            <baseAddresses>

              <add baseAddress="http://localhost:8080/HelloWorld/service" />

            </baseAddresses>

          </host>

        </service>

      </services>

      <behaviors>

        <serviceBehaviors>

          <behavior name="HelloWorldServiceBehavior">

            <serviceMetadata httpGetEnabled="true" />

          </behavior>

        </serviceBehaviors>

      </behaviors>

    </system.serviceModel>

</configuration>


   6.实现Host

……

  public static void Main()

{

  using (ServiceHost serviceHost = new ServiceHost(typeof(HelloWorld)))

            {

                    serviceHost.Open();

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

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

                    Console.WriteLine();

                    Console.ReadLine();

                }

                    if (serviceHost.State != CommunicationState.Closed)

                    {

                        serviceHost.Close();

                    }

            }

}


   7. Run Service


 IE中输入 http://localhost:8000/HelloWorld/service 如下:


    8. 实现Client(下面我们用SvcUtil 工具)

   在Solution 添加一个Project Named Client Program.cs 改为Client.cs

   在命令行 输入(已经启动Service):


这样就在D盘生成2个文件 HelloWorld.cs out.config  把这2个文件导入Client 修改out.config  app.config

修改Client.CS 代码如下:

……

using System.ServiceModel;

class ClientHello

    {

        static void Main(string[] args)

        {

           HelloClient Client = new HelloClient();

Console.WriteLine("Client is Ready" + Environment.NewLine +"Press <ENTER> to terminate client." +);

           try

           {

               Client.Hello();

               Console.WriteLine("Hello World!");

               Console.ReadLine();

           }

           catch (TimeoutException timeout)

           {

               Console.WriteLine(timeout.Message);

               Console.ReadLine();

               Client.Abort();

           }

           catch (CommunicationException commProblem)

           {

               Console.WriteLine(commProblem.Message);

               Console.ReadLine();

               Client.Abort();

           }

           finally

           {

               if(Client.State !=CommunicationState.Closed)

               Client.Close();

           }

9 Run Solution

Client                                              Server



以上就是构建一个HelloWorld代码下载:HelloWorld

posted on 2007-01-19 16:50  翔如飞飞  阅读(1297)  评论(0编辑  收藏  举报