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

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

static void TestTwo()
{
/*********同步访问********/
Person.PersonServiceClient client = new Person.PersonServiceClient();
string result = client.DoWork(new[] { , , });
Console.WriteLine(result); DateTime serverTime = client.GetServerTime();
Console.WriteLine(serverTime); Dictionary<string, int> dic = client.GetDic();
foreach (var item in dic)
{
Console.WriteLine(item.Key + ":" + item.Value);
} //服务店List集合,对应客户端数组
string[] strList = client.GetListStr();
Console.WriteLine(string.Join(",", strList)); Person.Person[] list = client.GetList();
foreach (var item in list)
{
Console.WriteLine(item.ID + "-" + item.Name + "-" + item.Birthday);
}
//关闭连接
client.Close();
}

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

static void TestThree()
{
/******异步访问******/
Person.PersonServiceClient client = new Person.PersonServiceClient();
Task<string> result = client.DoWorkAsync(new[] { , , });
Task<DateTime> serverTime = client.GetServerTimeAsync();
Console.WriteLine(result.Result);
Console.WriteLine(serverTime.Result); //关闭连接
client.Close();
Console.WriteLine("end");
}

客户端配置:

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" />
<binding name="BasicHttpBinding_IPersonService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:60957/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceOne.IService1"
name="BasicHttpBinding_IService1" />
<endpoint address="http://localhost:60957/PersonService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPersonService"
contract="Person.IPersonService" name="BasicHttpBinding_IPersonService" />
</client>
</system.serviceModel>

二、接口契约和数据契约

[ServiceContract]
public interface IPersonService
{
[OperationContract]
string DoWork(int[] numbers); [OperationContract]
DateTime GetServerTime(); [OperationContract]
List<string> GetListStr(); [OperationContract]
List<Person> GetList(); [OperationContract]
Dictionary<string, int> GetDic();
} [DataContract]
public class Person
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public DateTime Birthday { get; set; }
}

三、接口实现

public class PersonService : IPersonService
{
public string DoWork(int[] numbers)
{
return string.Join("|", numbers);
}
public Dictionary<string, int> GetDic()
{
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("one", );
dic.Add("two", ); return dic;
}
public List<Person> GetList()
{
List<Person> list = new List<Person>(); list.Add(new Person()
{
ID = ,
Name = "张三",
Birthday = new DateTime(, , )
}); list.Add(new Person()
{
ID = ,
Name = "李四",
Birthday = new DateTime(, , )
});
return list;
}
public DateTime GetServerTime()
{
return DateTime.Now;
}
public List<string> GetListStr()
{
List<string> list = new List<string>();
list.Add("张三");
list.Add("王芳");
return list;
}
}

服务端使用默认配置

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</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. 如何用angularjs制作一个完整的表格之四__自定义ng-model标签的属性使其支持input之外的html元素

    有的时候我们需要为非input类型的元素添加ng-model来实现双向的数据绑定,从而减少冗余代码,那么可以尝试一下的方式 例如:我页面中使用了contenteditable这个属性来实现用户可直接编 ...

  2. Ajax.BeginForm 防止跳转到新页面

    @using (Ajax.BeginForm("ChangeCompanyId", "navigation", new { area = "confi ...

  3. $_GLOBALS超全局数组和global定义的全局变量区别?

    全局变量:主程序中定义的变量(函数外部),只能在主程序中使用,在函数内部不能调用 背景:解决在函数内部调用全局变量的问题 解决方法: 1.在函数内部声名全局变量 <?php public $va ...

  4. UIAlertView的使用方法

    UIAlertView的使用方法 1. 最简单的用法 UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" mes ...

  5. sql server 国内外 2个同步 ,加一个表.加入同步种

    国内 和国外sql server 订阅 ,数据同步. 因为表是刚开始就弄好的. 那么如果国内加一个表.国外没法同步过去 步骤:1.国外也建一个一抹一样的表 步骤:2.把国内的数据导入到国外 步骤:3. ...

  6. 如何删除windows服务(sc.exe删除和注册表删除两种方法)

    一.什么是Windows服务 Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,它支持着整个Windows的各种操作. ...

  7. 转:Java同步synchronized使用

    原文链接 作者:Jakob Jenkov Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(s ...

  8. “/”应用程序中的服务器错误。 / c:\windows\temp目录权限设置

    说明: 1 对该目录的权限是ASP.net生成编译运行的临时文件需要,ASP不需要这个目录是因为ASP的脚本代码是解释执行. 2 Windows2003默认的设置是可以正常运行ASP.net的,造成问 ...

  9. POJ 3669 广度优先搜索

    题意:巨大流星雨即将袭来.每个流星会对击中的地方以及周围(上下左右四格)造成破坏.Bessie开始时位于(0, 0)位置,并希望逃到一处不会被袭击到的地方(在第一象限内).已知每移动一格需要1个时间单 ...

  10. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...