ven*_*ene 6 mono wcf nettcpbinding
在尝试在Mono中构建客户端 - 服务器WCF应用程序时,我们遇到了一些问题.将它简化为一个简单的例子我们发现该服务一次只接受一个客户端.如果另一个客户端尝试连接,它将挂起,直到第一个客户端断开连接.
只需更改为BasicHttpBinding即可修复它,但我们需要NetTcpBinding进行双工通信.如果在MS .NET下编译,也不会出现问题.
编辑:我怀疑(并且希望不是)Mono不支持我正在尝试做的事情.在我注意到的情况下,单声道代码通常会在这种情况下抛出NotImplementedExceptions.我使用的是Mono v2.6.4
这是在我们的基本场景中打开服务的方式:
public static void Main (string[] args)
{
    var binding = new NetTcpBinding ();
    binding.Security.Mode = SecurityMode.None;
    var address = new Uri ("net.tcp://localhost:8080");
    var host = new ServiceHost (typeof(Hello));
    host.AddServiceEndpoint (typeof(IHello), binding, address);
    ServiceThrottlingBehavior behavior = new ServiceThrottlingBehavior ()
    {
        MaxConcurrentCalls = 100,
        MaxConcurrentSessions = 100,
        MaxConcurrentInstances = 100            
    };
    host.Description.Behaviors.Add (behavior);
    host.Open ();
    Console.ReadLine ();
    host.Close ();
}
客户端通道的获取方式如下:
var binding = new NetTcpBinding ();
binding.Security.Mode = SecurityMode.None;
var address = new EndpointAddress ("net.tcp://localhost:8080/");
var client = new ChannelFactory<IHello> (binding, address).CreateChannel ();
据我所知这是一个Simplex连接,不是吗?
合同很简单:
[ServiceContract]
public interface IHello
{
    [OperationContract]
    string Greet (string name);
}
服务实现没有ServiceModel标记或属性.
我会根据需要更新详细信息.
我已经尝试过这个问题了,它看起来确实像一个 Mono bug。
我正在移植一个 WCF 应用程序以在 Mono 中运行。我玩过一些 NetTcpBinding 的东西,但我没有尝试过这种情况(与 Mono 托管的服务主机的多个连接)。然而现在我尝试了一下,我能够在 2.6 和最新的每日包中重现。
不过,它确实可以在 .NET 中工作。Mono 和 .NET 之间的任何行为差异都被归类为错误。您应该使用测试用例将其记录在 Bugzilla 上,我也会将其发布在 Mono 新闻列表中。
祝你好运。
| 归档时间: | 
 | 
| 查看次数: | 2562 次 | 
| 最近记录: |