2010-04-03 20 views
5

Tooday WCF hizmetlerini kendim barındırmak için ServiceHost'u kullanıyorum.WCF hizmeti ve TCP sunucusunu aynı yuvada nasıl barındırabilirim?

Ben

Ben URL ad üzerinde kontrolü gerekir (bu yüzden izin mümkün olacaktır (yayın TCP akışının çeşit haciz gibi) benim WCF hizmetlere doğrudan yuva operasyonlar için kendi TCP programm yakın barındırmak istiyorum Müşterilerim, TCP akışlarını doğrudan example.com:port/myserver/stream?id=1 veya example.com:port/myserver/stream?id=anything gibi bazı güzel URL'leri kullanarak hizmetime gönderecek ve böylece rahatsız edilmeyeceğim Bir kerede 1 priz için 1 müşteri fikriyle, WCF servislerimi kendi sunucumla aynı bağlantı noktasında tutmak istiyorum ya da www.example.com:port/myWCF/stream adresini arayabilmek için ne gerekiyor? ? id = 222 ... ve herhangi bir bağlantı noktasında çalışmasını istiyorum - yalnızca 80 değil)

Herhangi bir vücut lütfen bana yardımcı olabilir mi?

Şimdi sadece WCF kullanıyorum. Ve nasıl çalıştığından zevk almıyorum. Bu neden bir çok resonun nedenlerinden birini silmek için geçişi başlatmak istiyorum TCP =)

Net-tcp ciltleme veya herhangi bir başka harika WS- * bağlamayı kullanamıyorum (gün içinde en basit olanı kullanıyorum) Flash gibi, AJAX, vb bana kolaylıkla bağlanın).

İhtiyacım olan bağlantı protokolüne hızlı ve kolay bir şekilde bağlanabiliyordum.

Yani .. Herhangi Bir Fikir? Lütfen - yardıma ihtiyacım var.

+0

WCF'de özel bir nakliye yazabilirsiniz. Bu soruya bakın - http://stackoverflow.com/questions/381142/how-to-write-a-socket-based-custom-transport-for-wcf –

+2

Sadece WCF kullanarak sorunun ne olduğunu göremiyorum . Ne yapman gerekiyorsa bunu yapamaz mı? – Aaronaught

+0

WCF Sonsuz gerçek zamanlı olarak TCP soketleri üzerinden yüksek çözünürlüklü veri transferi için çok yavaş ve bugggy. – Rella

cevap

0

WCF ile ilgili sorununuz performanssa, performansı artırmak için XML serileştirmesini ortadan kaldırmak için ikili net TCP bağlamayı deneyin.

Gerçek zamanlı oyunlar gibi bazı yüksek trafik uygulamaları, iletişimin kesilmesinden bu yana iletişimin çoğunluğu için UDP kullanır. TCP ile sipariş ve güvenilirlik elde edersiniz, ancak bu, performansın maliyetine denk geliyor, çünkü paketlerin sipariş paketlerinin çıkmasını bekleyecek şekilde geciktirecek, böylece uygulamayı doğru sıraya koyabilecek veya kayıp paketler için bekleyebileceksiniz. yeniden olmak. Bunun yerine, UDP'yi kullanabilir ve TCP'den daha az sıkı olan verilerin doğrulanması için kendi planınızı uygulayabilirsiniz.

WCF için UDP seçenekleri vardır veya kendi başınıza uygulayabilirsiniz. WCF bir mesaj pompasından başka bir şey değildir ve farklı adımları istediğiniz şekilde değiştirebilirsiniz.

+0

Net-tcp bağlamayı kullanamıyorum çünkü Flash'tan ve diğer şeylerden birine bağlanmak oldukça zordur. İsteğe bağlı olarak hızlı ve daha kolay bağlantı bağlantı protokolü gerçek zamanlı olarak veri aktarımı arasında Yuva ile oluşturulan bir gibi oluşturulan protokol gibi. Benim soket bağlantıları ile benim tek sorun - onları WCF ile iyi bir çift olarak çalışamıyorum (aynı soket üzerinde, böylece benim WCF hizmetlerimi aramak gibi benim TCP sunucusu daimi olabilir - basit ama okunabilir adres) – Rella

+0

Ve ben UDP'Yİ KULLANMAYIN çünkü patronum üzgün ve biz kesinlikle tüm verilerin müşteriye geldiğini düşündük. – Rella

+0

Ancak UDP, verilerin Müşteriden geldiğinden emin olmak için ne yapıyor? Evet, IP adresinin doğru olduğunu gayet iyi anlayabiliyordunuz. Ama eğer bir halka açık site ise, hangi müşterinin aramayı yaptığını tam olarak bilemezsiniz. –

-1

Bunun size yardımcı olup olmayacağından emin değilsiniz, ancak Net TCP Paylaşımı Hizmetinizi açmayı deneyin.

1

Eğer saf soketlere düşecekseniz, hizmetinizi vekil olarak gerçekleştirebilirsiniz. WCF Hizmetlerini başka bir bağlantı noktasında ve uygulamanızı istediğiniz bağlantı noktasında dinleyebilirsiniz. Uygulamanızda istek aldığınızda, üstbilgiyi el ile el ile ayrıştırın ve hava durumunu kontrol edin, hizmetiniz veya WCF Hizmetiniz için tasarlanmıştır. WCF servisi için amaçlanmışsa, WCF servisine bir TCP bağlantısı açın ve alınan verileri ona aktarın ve sonra WCF'nin yanıtını müşteriye geri iletin ..

Diğer taraftan WCF'yi hızlandırabilirsiniz. Kendi özel bağlayıcınızı yazarak. Çok zaman WCF, yansıtma (yavaş olan) kullanılarak yapılan serileştirme üzerinde gevşetir, bunun etrafından dolaşmak, hızınızı önemli ölçüde artıracaktır.

İlgili konular