WCF笔记(1)初识WCF简单应用
来源:互联网 发布:淘宝卖时尚男装的网店 编辑:程序博客网 时间:2024/05/21 08:46
一、建立一个服务端项目
1、添加“System.ServiceModel”引用。
2、定义服务协定
[ServiceContract(Name="MyService")] public interface IService { [OperationContract] string TestMethod(); [OperationContract (Name="SecondMethod")] int Add(int a, int b); }
3、定义一个类实现服务协定
public class MyService : IService { public string TestMethod() { return "这是一个测试方法"; } public int Add(int a, int b) { return a + b; } }4、在Main入口点中定义服务器相关的参数,并启动服务
static void Main(string[] args) { Uri baseUri = new Uri("http://localhost:8000/Service"); using(ServiceHost serverHost=new ServiceHost(typeof(MyService),baseUri)) { //向服务器添终结点 WSHttpBinding httpBinding = new WSHttpBinding(); //这里不需要安全验证 httpBinding.Security.Mode = SecurityMode.None; serverHost.AddServiceEndpoint(typeof(IService), httpBinding, "my"); //为了能让VS生成客户端代码,即WSDL文档,故要添加以下行为 ServiceMetadataBehavior mdBehavior = new ServiceMetadataBehavior { HttpGetEnabled=true }; serverHost.Description.Behaviors.Add(mdBehavior); //如果服务顺利启动,则提示,处理Opened事件 serverHost.Opened += (sender, e) => Console.WriteLine("服务已启动"); //启动服务 try { serverHost.Open(); } catch (Exception ex) { Console.WriteLine(ex.Message); } // 为了让程序不往下执行而结束,故加上这句 Console.ReadKey(); // 关闭服务器 serverHost.Close(); } }这样服务端就做好了。
二、建立客户端
1、建立一个客户端并添加服务引用,就是刚才建好的服务(使用其基地址),要保证服务处于打开状态才能成功添加服务引用。
2、服务添加成功后,我们就可以在客户端程序里面进行调用了。
三、多服务协定
1、定义多个服务协定
/// <summary> /// 第一个服务协定 /// </summary> [ServiceContract] public interface IService1 { [OperationContract] string SayHelloA(); } /// <summary> /// 第二个服务协定 /// </summary> [ServiceContract] public interface IService2 { [OperationContract] string SayHelloB(); } /// <summary> /// 第三个服务协定 /// </summary> [ServiceContract] public interface IService3 { [OperationContract] string SayHelloC(); }2、实现多个服务协定,并启动服务
/// <summary> /// 实现多个服务协定 /// </summary> public class MultiServices:IService1,IService2,IService3 { //在Main函数中启动服务 static void Main(string [] args) { using (ServiceHost host = new ServiceHost(typeof(MultiServices), new Uri("http://localhost:8002/Service"))) { WSHttpBinding binding = new WSHttpBinding(); binding.Name = "myBinding"; binding.Security.Mode = SecurityMode.None; //对每一个协定添加终结点 host.AddServiceEndpoint(typeof(IService1), binding, "mySv1"); host.AddServiceEndpoint(typeof(IService2), binding, "mySv2"); host.AddServiceEndpoint(typeof(IService3), binding, "mySv3"); ServiceMetadataBehavior behavior = new ServiceMetadataBehavior { HttpGetEnabled = true }; host.Description.Behaviors.Add(behavior); host.Opened += (sender,e) => Console.WriteLine("服务已启动"); try { host.Open(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); host.Close(); } } public string SayHelloA() { return "你好,这是第一个服务协定"; } public string SayHelloB() { return "你好,这是第二个服务协定"; } public string SayHelloC() { return "你好,这是第三个服务协定"; } }
- WCF笔记(1)初识WCF简单应用
- WCF简单应用
- WCF的简单应用
- WCF初识
- WCF--初识
- 初识WCF
- WCF学习笔记1
- 那些年,我们一起学WCF--(1)wcf初识
- WCF学习之旅第一讲 简单的WCF应用
- WCF 应用
- wcf 笔记
- WCF学习笔记(1)最简单的例子
- WCF-创建简单的WCF
- WCF简单教程(1) 入门
- WCF简单教程(1) 入门
- 简单的WCF练习(1)
- 构建一个简单的WCF应用
- 构建一个简单的WCF应用
- 判断指针是否为空
- java中嵌入javascript
- poj 1228
- 3Dshader之膨胀与收缩
- Allegro中如何修改VIA过孔的方法
- WCF笔记(1)初识WCF简单应用
- java 中日期比较以及日期的增加和减少
- UVA 10976 - Fractions Again?!
- 使用堆排序对一组随机数进行排序
- Ubuntu Server下安装NodeJs
- ssh做socks代理
- 中缀转后缀&后缀求值
- 成都瀚德科技C++高级开发工程师(windows方向)的面试题目
- Hamming distance海明距离