【发布时间】:2012-07-04 23:35:50
【问题描述】:
我是 mono 的新手,但有人要求我研究在 Linux、Android 和/或 MacOS 上使用 mono 运行我们现有的 .NET 客户端应用程序。
服务器/客户端使用 WCF 双工通信与 NetTcpBinding。我创建了一个非常精简的客户端版本,以尝试分析与服务器的连接的哪些基本原理将在单声道中工作(我正在运行单声道 v2.10.8)。
我遇到的第一个问题是转换到 IClientChannel。客户端上的 factory.CreateChannel 结果给出了 InvalidCastException。但我设法通过创建一个实现服务合同和 IClientChannel 的帮助接口来解决这个问题
public interface IMySessionChannel : IMySession, IClientChannel {}
...并在我的 ChannelFactory 中使用它
_factory = new DuplexChannelFactory<IMySessionChannel>(....)
但我还是有点问题。我为 IClientChannel 的 Closing、Closed 和 Faulted 事件添加了事件处理程序,这些事件在接收到事件时会在客户端向屏幕写入消息。
在 Windows 上一切正常,但是当以单声道运行客户端(仍然在仅运行单声道命令提示符的 Windows 机器上)并关闭服务器时,事件似乎没有传递给客户端。
我错过了什么吗?单声道中的 IClientChannel 接口是否存在一般问题?对服务器的调用与回调一样工作,但我只是遇到了 IClientChannel 的一些问题。
提前感谢您的帮助!
【问题讨论】: