WCF 创建一个简单的程序

本节的主要内容:1.创建一个WCF模型的基本步骤;2.代码的下载

     为了对于WCF编程模型有一个直观的印象,通过一个简单程序一步一步创建WCF应用。

一、基本步骤

1.创建一个解决方案,包含两个项目:

    y.WcfFirst.Host:一个控制台应用程序,作为服务端,需要添加System.ServiceModel程序集。

    y.WcfFirst.Client:控制台应用程序,作为客户端,同样需要System.ServiceModel程序集。

2. y.WcfFirst.Host 创建契约

   通过ServiceContractAttribute属性类将一个接口定义为服务契约,通过OperationContractAttribute属性类作用于方法,使其可以被客户端调用。代码如下:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 namespace y.WcfFirst.Host.Services
8 {
9 [ServiceContract]
10 public interface IHello
11 {
12 [OperationContract]
13 string Say(string name);
14 }
15 }

3. y.WcfFirst.Host 实现契约,代码如下:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 namespace y.WcfFirst.Host.Services
8 {
9 [ServiceBehavior]
10 public class HelloService:IHello
11 {
12 [OperationBehavior]
13 public string Say(string name)
14 {
15 Console.WriteLine("Receive from Client:{0}", name);
16 return string.Format("Hello {0}!", name);
17 }
18 }
19 }

3. y.WcfFirst.Host 服务的寄宿,代码如下:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 using y.WcfFirst.Host.Services;
8 namespace y.WcfFirst.Host
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Console.Title = "y.WcfFirst.Host";
15 ServiceHost host = new ServiceHost(typeof(HelloService));
16 host.Opened += delegate
17 {
18 Console.WriteLine("\"HelloService\" is Running......\r\nPress any key to exit");
19 };
20 host.Open();
21 Console.ReadLine();
22 }
23 }
24 }

4. y.WcfFirst.Host app.config 中终结点的配置

  Address:服务的地址

  Binding:通信的所有细节,如:编码方式、网络传输的方式、正文是否加密等。

  Contract:客户端可用的操作。

详细配置如下:

View Code
 1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3 <system.serviceModel>
4 <services>
5 <service name="y.WcfFirst.Host.Services.HelloService">
6 <endpoint address="net.tcp://localhost:6666/hello"
7 binding="netTcpBinding"
8 contract="y.WcfFirst.Host.Services.IHello"></endpoint>
9 </service>
10 </services>
11 </system.serviceModel>
12 </configuration>

5. y.WcfFirst.Client 代理实现:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 namespace y.WcfFirst.Client.Proxys
8 {
9 [ServiceContract]
10 public interface IHello
11 {
12 [OperationContract]
13 string Say(string name);
14 }
15 }
View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 using System.ServiceModel.Channels;
8 namespace y.WcfFirst.Client.Proxys
9 {
10 public class HelloProxy:ClientBase<IHello>,IHello
11 {
12 public HelloProxy()
13 : base()
14 {
15 }
16
17 public string Say(string name)
18 {
19 return base.Channel.Say(name);
20 }
21 }
22 }

6. y.WcfFirst.Client  app.config中的配置,如下:

View Code
 1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3 <system.serviceModel>
4 <client>
5 <endpoint name="wcfFirst"
6 address="net.tcp://localhost:6666/hello"
7 binding="netTcpBinding"
8 contract="y.WcfFirst.Client.Proxys.IHello"></endpoint>
9 </client>
10 </system.serviceModel>
11 </configuration>

7.y.WcfFirst.Cliet 对于服务的调用,代码如下:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.ServiceModel;
7 using y.WcfFirst.Client.Proxys;
8 namespace y.WcfFirst.Client
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Console.Title = "y.WcfFirst.Client";
15 Console.WriteLine("Please input your name:");
16 string name = string.Empty;
17 while (true)
18 {
19 name = Console.ReadLine();
20 if (name.Equals("exit"))
21 {
22 Environment.Exit(0);
23 }
24 using (HelloProxy proxy = new HelloProxy())
25 {
26 Console.WriteLine("Recevie from Server:{0}", proxy.Say(name));
27 proxy.Close();
28 }
29 }
30 }
31 }
32 }

8.运行显示,先运行服务端(host),再运行客户端(client),在客户端先后输入book,glass,显示结果如下:

二、源码下载

可以从这里下载源码。

转载于:https://www.cnblogs.com/xyz168/archive/2011/11/10/2244590.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值