WCF 简单示例
示例很简单,client端,server端,中间信道走的是SOAP协议。
SOAP
client:一个请求消息
server:一个响应消息
XML一个信封
服务端实现:
1.具体动作的方法,可单独一个类库
2.定义服务合同接口
3.实现服务接口
[ServiceContract] public interface IRoomService { [OperationContract] string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: 在此添加您的服务操作 [OperationContract] int GetInt(int value); }
public class RoomService : IRoomService { public string GetData(int value) { return string.Format("You entered: {0}", value); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite == null) { throw new ArgumentNullException("composite"); } if (composite.BoolValue) { composite.StringValue += "Suffix"; } return composite; } public int GetInt(int v){ return v; } }
服务端可以在winform或者控制台程序中被启动,确实可以哟
class Program { internal static ServiceHost myService = null; private static ServiceHost Start(){ if (myService == null) { myService = new ServiceHost(typeof(WcfServiceLibraryOne.RoomService)); } return myService; } private static void Stop(){ if (myService.State != CommunicationState.Closed) { myService.Close(); } } static void Main(string[] args) { Start(); Console.WriteLine("wcf is start to running, press enter to exit!!!"); Console.ReadLine(); Stop(); } }
然后可以把WCF测试客户端打开查看,http://blog.sina.com.cn/s/blog_55a69f170100qjid.html
----------------------------------------------------------------------------------------------------------------------------------------------
到这里server端已经建好,下面是客户端来调用服务端
---------------------------------------------------------------------------------------------------------------------------------------------
可以新建一个控制台项目,服务引用刚才的server端地址,就会把相应需要应用的dll都引用进来。
static void Main(string[] args) { RoomServiceClient client = new RoomServiceClient(); int ret = client.GetInt(1000); Console.WriteLine("get return value from wcf server side : {0}",ret); Console.ReadLine(); }
给客户程序创建代理有三种方式:
1.VS添加服务引用,需要访问WSDL文档
2.serviceModel元数据实用工具svcutil.exe
3.ChannelFactory类
end.