我们一起学习WCF 第四篇单通讯和双向通讯

前言:由于个人原因很久没有更新这个系列了,我会继续的更新这系列的文章。这一章是单向和双向通讯。所谓的单向就是只有发送却没有回复,双向是既有发送还有回复。就是有来无往代表单向,礼尚往来表示双向。下面我用一个简单用例图表示一下(其中一个老师很严厉说的话大家都默默接受,另一个则相反)


首先我们先看单向通讯:

第一步:编写服务协定

1  [ServiceContract(Namespace = "singleTrans")]
2     public interface ITeacher
3    {
4         [OperationContract(IsOneWay = true)]
5         void Speak(string message);
6    }

单向服务协定

注释1:IsOneWay = true  表示单向通讯,false表示双向通讯

第二步:完成服务协定

1  public void Speak(string message)
2        {
3           Console.WriteLine("老师下达的命令:{0}",message);
4        }

实现协定

第三步:配置服务器(同前几篇)

第四步:客户端调用运行结果

那么单向通讯就完成了。

现在我们修改一下服务协定

协定
 [ServiceContract(Namespace = "singleTrans")]
    public interface ITeacher
   {
        [OperationContract(IsOneWay = true)]
        string Speak(string message);
   }
实现
    public string Speak(string message)
       {
          Console.WriteLine("老师下达的命令:{0}",message);
            return "保证完成任务";
       }

修改版

运行结果:

出现错误了所有总结:

启用单向通讯的方法,不能有返回值(void可以),不能有out参数,只允许传入参数

现在我们在来看一下双向协定

把刚刚的IsOneWay = false。然后在次运行看看结果

这回就成功了,既调用了服务,也得到了返回的数据。

这一篇也表面也很简单,但是很多更深的需要自己去理解去想。

源码下载

时间: 2024-07-31 16:39:28

我们一起学习WCF 第四篇单通讯和双向通讯的相关文章

[老老实实学WCF] 第四篇 初探通信--ChannelFactory

原文:[老老实实学WCF] 第四篇 初探通信--ChannelFactory 老老实实学WCF 第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起来.然而,仔细品味一下,这里面仍有许多疑点:服务器是如何建起服务的?我们在客户端调用一个操作后发生了什么?元数据到底是什么东西?等等.我们现在对WCF的理

(转)[老老实实学WCF] 第四篇 初探通信--ChannelFactory

第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了.我们不禁感叹WCF模型的简单,寥寥数行代码和配置,就可以把通信建立起来.然而,仔细品味一下,这里面仍有许多疑点:服务器是如何建起服务的?我们在客户端调用一个操作后发生了什么?元数据到底是什么东西?等等.我们现在对WCF的理解应该还处于初级阶段,我们就会觉得有许多这样的谜团了. 虽然我们生活在WCF为我们构建的美好的应

python学习记录第四篇--数据库

只要用到MySQLdb,使用时请先安装MySQLdb,百度上可以下载! #coding=utf-8'''@author: 使用python操作MySQL数据库'''import MySQLdb#import MySQLdb.cursorsconn=MySQLdb.connect(user='root',passwd='root') #connect共三个值,user,passwd,host,无密码且连接本地数据库时,可以都为空.cur=conn.cursor() #创建游标,使用游标进行数据库操

重温WCF之数单向通讯、双向通讯(五)

1.启用单向通讯的方法,不能有返回值(void可以),不能有out参数,只允许传入参数. [ServiceContract(Namespace = "MyNamespace")] public interface IService { [OperationContract(IsOneWay = true)] void DoTestWork(string message); } 2.双向通讯是有问必有答的(哪怕方法返回void,客户端也会收到一条空消息). [ServiceContrac

我们一起学习WCF 第三篇头消息验证用户身份

前言:今天我主要写的是关于头消息的一个用处验证用户信息 下面我画一个图,可以先看图 第一步:我们先开始做用户请求代码 首先:创建一个可执行的上下文对象块并定义内部传输的通道 using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel)) 然后:创建头消息 要发送的SOAP传输的内容 MessageHeader myHeaderUid = MessageHeader.CreateHea

我们一起学习WCF 第六篇文件传输

原文? http://www.cnblogs.com/LipeiNet/p/4653830.html ? 前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进行服务器的监听.ok,现在来看看文件传输需要什么:第一需要传输的信息(文件名,流等)第二需要传输状态(是否传输成功,传输失败返回的信息)下面用图详细的表示下 第一步:先定义两个类 1 [MessageContract] 2 public class ResultMessage 3 { 4 [Mess

我们一起学习WCF 第十篇Wcf中实现事物

数据一致性在工作中显得非常重要,有时候我们库中出现脏数据导致程序报错,但是又很难发现这样的错误,所以为了数据的完整性建议在程序中加入事物. 什么是事物:我们都有团队合作吧,比喻团队有3个人,a负责设计,b负责前端,c负责后台,那么他们三个就是一个整体,哪一个人那里出了问题就要被打回. 第一步:我们开始定义个一个接口 [ServiceContract] public interface IUserInfo { [OperationContract] int AddInfo(); } 第二步当然是实

JavaWeb学习总结第四篇--Servlet开发

Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请求—响应模式就是典型的Web应用程序访问过程. JavaWeb应用程序中所有的请求—响应都是由Servlet完成的.Servlet是JavaWeb的核心程序,所有的网址最终都交给Servlet处理.Servlet并没有main之类的执行方法.当用户访问服务器的时候,Tomcat是通过调用Servle

Python学习【第四篇】用户输入及判断

用户输入: 例1.写一个用户输入密码的小程序,流程如下: 1.用户输入自己的用户名 2.打印"Hello+用户名" 1 #!/usr/bin/env python 2 3 #name = raw_input("What is your name?") #only on python 2.x 4 name = input("What is your name?") 5 print("Hello " + name ) 例2.输入密