一、客户端添加服务引用,并调用

1.使用客户端代理同步调用

  1. static void TestTwo()
  2. {
  3. /*********同步访问********/
  4. Person.PersonServiceClient client = new Person.PersonServiceClient();
  5. string result = client.DoWork(new[] { , , });
  6. Console.WriteLine(result);
  7.  
  8. DateTime serverTime = client.GetServerTime();
  9. Console.WriteLine(serverTime);
  10.  
  11. Dictionary<string, int> dic = client.GetDic();
  12. foreach (var item in dic)
  13. {
  14. Console.WriteLine(item.Key + ":" + item.Value);
  15. }
  16.  
  17. //服务店List集合,对应客户端数组
  18. string[] strList = client.GetListStr();
  19. Console.WriteLine(string.Join(",", strList));
  20.  
  21. Person.Person[] list = client.GetList();
  22. foreach (var item in list)
  23. {
  24. Console.WriteLine(item.ID + "-" + item.Name + "-" + item.Birthday);
  25. }
  26. //关闭连接
  27. client.Close();
  28. }

2.使用客户端代理异步调用

  1. static void TestThree()
  2. {
  3. /******异步访问******/
  4. Person.PersonServiceClient client = new Person.PersonServiceClient();
  5. Task<string> result = client.DoWorkAsync(new[] { , , });
  6. Task<DateTime> serverTime = client.GetServerTimeAsync();
  7. Console.WriteLine(result.Result);
  8. Console.WriteLine(serverTime.Result);
  9.  
  10. //关闭连接
  11. client.Close();
  12. Console.WriteLine("end");
  13. }

客户端配置:

  1. <system.serviceModel>
  2. <bindings>
  3. <basicHttpBinding>
  4. <binding name="BasicHttpBinding_IService1" />
  5. <binding name="BasicHttpBinding_IPersonService" />
  6. </basicHttpBinding>
  7. </bindings>
  8. <client>
  9. <endpoint address="http://localhost:60957/Service1.svc" binding="basicHttpBinding"
  10. bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceOne.IService1"
  11. name="BasicHttpBinding_IService1" />
  12. <endpoint address="http://localhost:60957/PersonService.svc"
  13. binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPersonService"
  14. contract="Person.IPersonService" name="BasicHttpBinding_IPersonService" />
  15. </client>
  16. </system.serviceModel>

二、接口契约和数据契约

  1. [ServiceContract]
  2. public interface IPersonService
  3. {
  4. [OperationContract]
  5. string DoWork(int[] numbers);
  6.  
  7. [OperationContract]
  8. DateTime GetServerTime();
  9.  
  10. [OperationContract]
  11. List<string> GetListStr();
  12.  
  13. [OperationContract]
  14. List<Person> GetList();
  15.  
  16. [OperationContract]
  17. Dictionary<string, int> GetDic();
  18. }
  19.  
  20. [DataContract]
  21. public class Person
  22. {
  23. [DataMember]
  24. public int ID { get; set; }
  25. [DataMember]
  26. public string Name { get; set; }
  27. [DataMember]
  28. public DateTime Birthday { get; set; }
  29. }

三、接口实现

  1. public class PersonService : IPersonService
  2. {
  3. public string DoWork(int[] numbers)
  4. {
  5. return string.Join("|", numbers);
  6. }
  7. public Dictionary<string, int> GetDic()
  8. {
  9. Dictionary<string, int> dic = new Dictionary<string, int>();
  10. dic.Add("one", );
  11. dic.Add("two", );
  12.  
  13. return dic;
  14. }
  15. public List<Person> GetList()
  16. {
  17. List<Person> list = new List<Person>();
  18.  
  19. list.Add(new Person()
  20. {
  21. ID = ,
  22. Name = "张三",
  23. Birthday = new DateTime(, , )
  24. });
  25.  
  26. list.Add(new Person()
  27. {
  28. ID = ,
  29. Name = "李四",
  30. Birthday = new DateTime(, , )
  31. });
  32. return list;
  33. }
  34. public DateTime GetServerTime()
  35. {
  36. return DateTime.Now;
  37. }
  38. public List<string> GetListStr()
  39. {
  40. List<string> list = new List<string>();
  41. list.Add("张三");
  42. list.Add("王芳");
  43. return list;
  44. }
  45. }

服务端使用默认配置

  1. <system.serviceModel>
  2. <behaviors>
  3. <serviceBehaviors>
  4. <behavior>
  5. <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
  6. <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
  7. <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
  8. <serviceDebug includeExceptionDetailInFaults="true"/>
  9. </behavior>
  10. </serviceBehaviors>
  11. </behaviors>
  12. <protocolMapping>
  13. <add binding="basicHttpsBinding" scheme="https" />
  14. </protocolMapping>
  15. <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  16. </system.serviceModel>

Wcf简单实例1的更多相关文章

  1. C# 一个WCF简单实例

    以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 &qu ...

  2. WCF简单实例--用Winform启动和引用

    以订票为例简单应用wcf程序,需要的朋友可以参考下 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 namesp ...

  3. .net WCF简单实例

    最近看到网上招聘有许多都需要WCF技术的人员,我之前一直没接触过这个东西,以后工作中难免会遇到,所谓笨鸟先飞,于是我就一探究竟,便有了这边文章.由于是初学WCF没有深入研究其原理,只是写了一个demo ...

  4. 【5】.net WCF 简单实例

    1.创建WCF项目 2.系统自动生成IWcfService // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”. [ServiceContra ...

  5. WCF 学习总结1 -- 简单实例

    从VS2005推出WCF以来,WCF逐步取代了Remoting, WebService成为.NET上分布式程序的主要技术.WCF统一的模型整合了以往的 WebService.Remoting.MSMQ ...

  6. WCF分布式开发步步为赢(9):WCF服务实例激活类型编程与开发

    .Net Remoting的激活方式也有三种:SingleTon模式.SingleCall模式.客户端激活方式,WCF服务实例激活类型包括三种方式:单调服务(Call Service),会话服务(Se ...

  7. WCF小实例以及三种宿主

    WCF小实例以及三种宿主 最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾:本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Window ...

  8. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

  9. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

随机推荐

  1. Access数据库导入到mysql数据库中

    做项目时需要查询手机号归属地的,用网上提供的接口,耗时太长,反应慢,只能自己在网上搜了一个包含所有手机号归属地的Access数据库,导入到自己的mysql数据库中 Access数据库导入到mysql中 ...

  2. 【转】.NET开发者必备的11款免费工具

    摘要:本文介绍一些最适合.NET开发人员简化Web开发的最佳工具,这些工具都是开源的,有的开发工具你既可以从网上下载可执行文件,也可以下载源代码.一些工具拥有可扩展的框架,是一个持续集成工具. 原文链 ...

  3. table 表格隔行换色实现

    table 表格隔行换色实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  4. Seajs教程

    API 快速参考 该页面列举了 Sea.js 的常用 API.只要掌握这些用法,就可以娴熟地进行模块化开发. seajs.config 用来对 Sea.js 进行配置. seajs.config({ ...

  5. GitHub NetFlow

    https://github.com/search?l=Java&p=1&q=netflow&ref=searchresults&type=Repositories&a ...

  6. ISO15693标准详细介绍

    1.符合ISO/IEC 15693标准的信号接口部分的性能如下:1.1 工作频率 工作频率为13.56MKz±7KHz1.2 工作场强 工作场的最小值为0.15A/m,最大场为5A/m.1.3 调制 ...

  7. hdu 3912 Turn Right

    http://acm.hdu.edu.cn/showproblem.php?pid=3912 这个题我用递归深搜模拟,直接爆栈了.哭啊!为什么! 这个题最主要是能走重复格子,但是方向不一样. 我用的剪 ...

  8. 可以把一些常用的方法,写入js文件,引入html界面

    这样,可以在多处应用.更好一些.缺点是不够灵活. 优点是,一处修改,多处应用. 函数这东西,一般都是先加载的,之后就可以随便调用了. function delquestion(obj){ //conf ...

  9. -_-#【Better JS Code】插入迭代值

    +function() { var i = 0 var values = ['xiaoming', 'xiaohong'] var name = values[i] i++ console.log(n ...

  10. 【贪心】XMU 1061 Ckp的约会

    题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1061 题目大意: n个任务(n<=1000),给定名字和开始.结束时间,求最多能 ...