Mono'da bir istemci-sunucu WCF uygulaması oluşturmaya çalışırken bazı sorunlara rastladık. Sadece çıplak bir örneğe indirgeyerek, hizmetin aynı anda yalnızca bir istemci kabul ettiğini gördük. Başka bir istemci bağlanmaya çalışırsa, ilki kesilene kadar askıda kalır.Mono WCF NetTcp hizmeti bir seferde yalnızca bir istemci alır
Basitçe BasicHttpBinding ile değiştirdiğinizde, ancak çift yönlü iletişim için NetTcpBinding'a ihtiyacımız var. Ayrıca, MS .NET altında derlenmiş ise sorun görünmüyor.
DÜZENLEME: Mono'nun yapmaya çalıştığım şeyi desteklemediğinden şüpheliyim (ve umarım). Mono kodu genellikle fark ettiğim kadarıyla NotImplementedExceptions atar. Ben Mono v2.6.4 kullanıyorum
Bu hizmet bizim temel senaryoda açıldığında nasıl: Bildiğim kadarıyla olarak
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();
:
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();
}
istemci kanal böyle elde edilir Bu Simplex bir bağlantı, değil mi?
sözleşme basitçe:
[ServiceContract]
public interface IHello
{
[OperationContract]
string Greet (string name);
}
Servis uygulaması hiçbir ServiceModel etiketleri veya özellikleri vardır.
Gerektiğinde ayrıntıları ile güncelleyeceğim.
Hizmet neye benziyor? Nasıl bağlanıyorsun Ne alıyorum Dubleks yönü ... Ne kadar iyi (bilmiyorum) Dubleks Mono çalışır bilmiyorum. Son noktayı böyle çalıştırmayı ve basit, simpleks bir servis kullanmayı mı denediniz? – TheNextman
Eninde sonunda Dubleks kullanmalıyım, ancak geri aldığımız bu basit örnek basit bir simpleks servistir. Anlayabildiğim kadarıyla doğru bir şekilde çalışmalı ve BasicHttp ile çalışacak. Soruyu diğerleriyle güncelleyeceğim. – vene
Eğer onu kaçırdıysanız, bunun şimdi düzeltilebileceği anlaşılıyor. Bkz. Alexcepois hata raporu: https://bugzilla.novell.com/show_bug.cgi?id=610659 – TheNextman