在这里我就用一个据于一个简单的场景:服务端为客服端提供获取客户信息的一个接口读取客户信息,来完成WCF开发入门的六个步骤。
1. 定义WCF服务契约
A. 项目引用节点右键添加System.ServiceModel引用。
B. 在代码文件里,添加以下命名空间的引用
using System.ServiceModel;
using System;
C. 新建一个命为ICustomerService 接口,并添加一个获取客户信息的方法定义名为CustomerInfomation,返回字符串类型的客户信息。
D. 为接口ICustomerService添加ServiceContract的属性修饰使它成为WCF服务中公开的接口。
E. 为方法CustomerInfomation添加OperationContract的属性修饰使它成为WCF服务公开接口中公开的成员。
F. 代码:
1 using System;
2
3 using System.ServiceModel;
4
5 namespace ConWCF
6
7 { [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
8
9 public interface CustomerService
10
11 {
12
13 [OperationContract]
14
15 String CustomerInformation();
16
17 }
18
19 }
20
2. 实现WCF服务契约
实现WCF服务契约很简单,就是实现上一步聚定义的WCF服务契约定义的接口就可以。下面看代码
1 using System;
2
3 using System.ServiceModel;
4
5 namespace ConWCF
6
7 { [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
8
9 public interface ICustomerService
10
11 {
12
13 [OperationContract]
14
15 String CustomerInformation();
16
17 }
18
19 public class CustomerService:ICustomerService
20
21 {
22
23 #region ICustomerService 成员
24
25 public string CustomerInformation()
26
27 {
28
29 return "这是客户的信息!";
30
31 }
32
33 #endregion
34
35 }
36
37 }
38
39
3. 启动WCF服务
A.添加一个应用程序配置文件,文件件名为App.config。
B.配置WCF服务的基本地址,如下所示
<host>
<baseAddresses>
<addbaseAddress="http://localhost:8000/conwcfr"/>
</baseAddresses>
</host>
C.配置WCF服务的端口。Address=“”,意思就是使用上面配置的基本地址,当然也可以在这里指定。Bingding=“wsHttpBinding”,意思是WCF服务使用的是HTTP协议。再接下来就是配置WCF服务契约了(命名空间.服务契约接口名),如下所示:
<endpointaddress=""
binding="wsHttpBinding"
contract="ConWCF.ICustomerService" />
D.配置文件
E.启动服服就简单了
ServiceHost host = new ServiceHost(typeof(CustomerService));
host.Open();
Console.WriteLine("客户信息服务已启动");
Console.WriteLine("按任意键结束服务!");
Console.Read();
host.Close();
F.当服务启动时,在IE栏中输入: http://localhost:8000/conwcfr,将会收到一些帮助的提示信息。
G.异常:配置文件中的服务名称一定是:命名空间.实现WCF服务契约类的名称,否则将会发生找到不配置的异常。
<service
name="ConWCF.CustomerService"
异常信息: Service ''ConWCF.CustomerService'' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file,
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008515/116962.html