1.下面通过一个简单的服务示例来认识WCF
1.新建项目,名称IBLL,解决方案名称WcfDemo,模板选择类库
2.修改Class1.cs文件名称为 IUserInfoService.cs
3.添加引用 System.ServiceModel
4.修改IUserInfoService.cs代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; namespace IBLL { [ServiceContract] public interface IUserInfoService { [OperationContract] int Add(int a, int b); } }
我们定义了一个IUserInfoService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法上声明了OperationContract特性,表示该方法是IUserInfoService的一个服务方法,客户端可远程调用该方法
5.新建项目,名称BLL,模板选择类库,修改Class1.cs文件名称为 UserInfoService.cs,引用项目IBLL,代码如下:
using IBLL; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BLL { public class UserInfoService : IUserInfoService { public int Add(int a, int b) { return a + b; } } }
OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。
6.在同一解决方案下新建一个项目,名称为WcfHost,类型为控制台应用程序
7.WcfHost项目中添加引用,引用项目IBLL,然后再添加引用:System.ServiceModel
8.修改Program.cs代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; namespace WcfHost { class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(BLL.UserInfoService))) { host.Open(); Console.WriteLine("服务已启动"); Console.ReadKey(); host.Close(); } } } }
以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定
9.修改app.config内容如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration"><!--服务的对象--> <host> <baseAddresses> <add baseAddress="http://localhost:8000/"/><!--服务的IP和端口号--> </baseAddresses> </host> <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint><!--contract:服务契约--> </service> </services> <behaviors> <serviceBehaviors> <behavior name="behaviorConfiguration"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
10.设置WcfHost项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址:http://localhost:8000/ ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
11.在同一解决方案下新建一个项目,名称为WcfClient,类型为控制台应用程序,添加服务引用地址:http://localhost:8000/,客户端代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WcfClient { class Program { static void Main(string[] args) { ServiceReference1.UserInfoServiceClient client = new ServiceReference1.UserInfoServiceClient(); Console.WriteLine(client.Add(3, 4)); Console.ReadKey(); } } }
12.启动WcfHost,启动WcfClient,(记得找到bin/debug找.exe以管理员运行