ASP.NET için kuyruklu yıldız uygulaması? [kapalı]


103

Bir tarayıcı içinde Gmail benzeri mesajlaşmayı uygulamanın yollarını arıyordum ve Comet konseptine ulaştım . Ancak, bunu IIS içinde yapmama izin veren iyi bir .NET uygulaması bulamadım (uygulamamız ASP.NET 2.0 ile yazılmıştır).

Bulduğum (veya bu konuda düşünebildiğim) çözümler, kullanıcı başına çalışan bir iş parçacığı bırakmayı gerektiriyor - böylece bir mesaj aldığında ona bir yanıt döndürebilir. Elbette bu hiç ölçeklenmiyor.

Öyleyse sorum şu - Comet için farklı bir şekilde çalışan bir ASP.NET uygulaması biliyor musunuz? IIS ile bu mümkün mü?


12
Sanırım ilk MS-kutsanmış uygulama SignalR: hanselman.com/blog/…
user423430

Node.JS artık Azure'da desteklenmektedir, yakında 2003'te IIS desteklenecektir. Biz (IIS içinde kuyruklu yıldız sunucusu çalıştırmak mümkün olacak Bu demektir ki windowsazure.com/en-us/develop/nodejs )
goodguys_activate

Yanıtlar:


44

Comet, kuyruklu yıldızın kalıcı bağlantısı nedeniyle IIS ile ölçeklendirmek için zor, ancak şu anda Comet senaryolarını inceleyen bir ekip var. Ayrıca , ASP.NET'te bazı erken Comet çalışmaları yaptığına inandığım için Aaron Lerch'in bloguna da bakın .


9
Bu aslında uygulanıyor; Anton'un aşağıdaki yanıtı başına WebSync'e bakın. ( frozenmountain.com/websync )
jvenema

3
Ters ajax denen var mı? şuna bir
bak

4
MVC Async Denetleyicileri, beklemeyi IIS dışı çalışan iş parçacıklarına aktararak IIS sorunlarıyla mücadeleye yardımcı olabilir, Clay Lenhart'ın bu harika gönderisine bakın . Ayrıca BitBucket'ta Sohbet Sunucusu Örnek Projesi'ne bakın.
Jacob

33

WebSync , doğrudan IIS / .NET ardışık düzenine entegre olan, standartlarla uyumlu, ölçeklenebilir bir Comet sunucusudur. Ayrıca talep üzerine barındırılan bir hizmet olarak da mevcuttur.

Resmi olarak sunucu düğümü başına 20.000'e kadar eşzamanlı istemci bağlantısını destekler, ancak bireysel testler 50.000'e kadar çıktığını göstermiştir. İleti verimi, tek bir düğümden saniyede 300.000'e kadar yüksek iletilerle birlikte 1.000-5.000 eşzamanlı istemci markası civarında optimaldir.

JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime ve .NET Compact için istemci tarafı desteği ve .NET / Mono ve PHP için sunucu tarafı desteği içerir.

Kümeleme, SQL Server veya Azure Önbelleğe Alma özelliği kullanılarak desteklenir, ancak hemen hemen her şey için özel sağlayıcılar yazılabilir (Redis, NCache).

Sorumluluk Reddi: Bu ürünü geliştiren şirket için çalışıyorum.


17
Ürününüz olarak burada bir sorumluluk reddi beyanı olmalı ...
Sam Saffron

9
Elbette çalıştığım şirket tarafından üretiliyor :) Kesinlikle hiçbir şeyi saklamaya çalışmıyorum.
Anton

1
@Anton - bir şeyi gizlememek onu ifşa etmekle aynı şey değildir.
RedFilter

1
@Anton Sunucu düğümü başına 20k eşzamanlı istemci bağlantısını nasıl desteklediği hakkında daha fazla ayrıntı verebilir misiniz? Bu rakamlar çok büyük görünüyor .. "çok büyük".
Pacerier

1
Elbette 25.000 fitlik bir bakış açısıyla websync'in kaputun altında nasıl çalıştığını sormanın mantıklı olacağını sanmıyorum.
nocarrier

15

Kısa bir süre önce Clay Lenhart'ın harika bir makalesine dayanarak MVC 3 Async Denetleyicilerini kullanan Uzun Yoklamalı Sohbet Sunucusunun basit bir örneğini yazdım.

Örneği BitBucket projesinden gelen kaynağa göre kurduğum bir AppHarbor dağıtımında kullanabilirsiniz .

Ayrıca, projeyi açıklayan blog yazımda daha fazla bilgi bulabilirsiniz .


AppHarbor dağıtımındaki örneği beğendim
guaike

'projeyi açıklayan blog yazısı' -> web.archive.org/web/20130328042214/http://…
jaybro

Teşekkürler! Makaleyi beğendiğine sevindim.
Clay Lenhart

4

Aslında ASP.NET ile ajax destekli web sitesi oluşturmak için birçok seçenek vardır, ancak dürüst olmak gerekirse PokeIn , ajax destekli bir kuyruklu yıldız web uygulaması oluşturmanın en kolay yoludur. Şirketimin projelerinden birini kurtardı.



1

Bir keresinde uzun zaman önce özel olarak oluşturulmuş bir http akış sunucusu kullanan bir sohbet sitesini kullandım. Aslında bu yazılımı bir noktada tamamen meraktan yeniden ürettim ve bence yapmak yeterince kolay. IIS'de, özellikle ASP.NET'te asla benzer bir "sonsuz istek" türü uygulamaya çalışmam çünkü istekler bir iş parçacığı havuzu iş parçacığını (veya zaman uyumsuz işleyiciler kullanılıyorsa GÇ iş parçacığını) süresiz olarak bağlar, bu da yalnızca iş parçacığı havuzu yapılandırmanızın izin verdiği kadar sunucu başına çok işleyin.

Bu tür bir işlevsellik için güçlü ve meşru bir ihtiyacım olsaydı, gerçekten bunun için özel bir http sunucusu yazardım.

Bunun sorunuzu gerçekten cevaplamadığını biliyorum, ancak girdinin alakalı olabileceğini düşündüm.


1

WS-I grubu , görünüşte birlikte çalışan bir Glass Fish ve .NET uygulamasına sahip "Güvenilir Güvenli Profil" adlı bir şey yayınladı iyi bir şekilde birlikte .

Şansınız varsa, orada bir Javascript uygulaması da vardır.

Ayrıca HTTP Duplex kullanan bir Silverlight uygulaması da vardır . Sen edebilirsiniz Silverlight javascript bağlamak bir itme meydana geldiğinde geri aramalar almak için nesne.

De vardır ticari ödenen versiyonları kuyu olarak.


4
Aynı cevabı bir dizi soruya arka arkaya toplu olarak göndermek birkaç bayrağı
açmaya

2
( psst )

0

Web çiftliğini yatay olarak genişletmeye hazır değilseniz (karışıma daha fazla web sunucusu ekleyerek) Comet yaklaşımının gerçekten ölçeklenebilir olmadığını düşünüyorum. Çalışma şekli, kullanıcı oturumu başına bir TCP bağlantısını açık bırakmasıdır, böylece sunucu zaman zaman bir değişiklik veya etkinlik hakkında kullanıcıyı anında bilgilendirmek için bu bağlantıya bir şeyler gönderebilir.


6
Her şey yalnızca dikey olarak bir noktaya kadar ölçeklenebilir, bundan sonra yatay ölçeklemenin gerçekleşmesi gerekir.
Anton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.