单工、双工
单工 模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线
双工 指二台通讯设备之间,允许有双向的资料传输。
实例
Case One
没有返回值的单工函数。一切正常。
- Server SingleService.cs
/// <summary>
/// 单工
/// </summary>
[ServiceContract]
public interface ISingleService
{
[OperationContract(IsOneWay = true)]
void DoTestWork(string message);
}
public class SingleService : ISingleService
{
public void DoTestWork(string message)
{
Console.WriteLine("从客户端发来的消息:" + message);
}
}
- Client Main()
static void Main(string[] args)
{
MS.SingleServiceClient client = new MS.SingleServiceClient();
string message = "你好,单工!";
client.DoTestWork(message);
Console.ReadKey();
}
result
服务已启动。
从客户端发来的消息:你好,单工!
Case Two
对 SingleService 修改如下。即为方法添加返回值
- Server SingleService.cs
/// <summary>
/// 单工
/// </summary>
[ServiceContract]
public interface ISingleService
{
[OperationContract(IsOneWay = true)]
DateTime DoTestWork(string message);
}
public class SingleService : ISingleService
{
public DateTime DoTestWork(string message)
{
Console.WriteLine("从客户端发来的消息:" + message);
return DateTime.Now;
}
}
报错如下
未经处理的异常: System.InvalidOperationException: 使用 IsOneWay=true 标记的操作
不得声明输出参数、引用参数或返回值。
...
Case Three
对于上面的报错,有一种解决方案。
就是将 IsOneWay = false
。这就变回了普通的双工。