Realizacja Comet dla ASP.NET? [zamknięte]

Szukałem sposobów na implementację komunikatorów podobnych do Gmaila w przeglądarce i doszedłem do koncepcji Comet. Jednak nie udało mi się znaleźć dobrej implementacji. NET, która pozwala mi to zrobić w IIS (nasza aplikacja jest napisana w ASP.NET 2, 0).

Rozwiązania, które znalazłem (lub które mogłem wymyślić), wymagają pozostawienia działającego wątku dla każdego użytkownika - tak, aby mógł zwrócić mu odpowiedź, gdy otrzyma wiadomość. To w ogóle się nie skaluje, z oczywiście.

Więc moje pytanie brzmi - Czy wiesz o ASP.NET implementacja dla Comet, która działa w inny sposób? Czy to w ogóle możliwe z IIS?

Author: Doron Yaacoby, 2008-09-15

8 answers

Comet jest trudny do skalowania z IIS ze względu na trwałą łączność komety, ale jest zespół, który bada teraz scenariusze komet. Zajrzyj też na blog Aarona Lercha jak sądzę, zrobił kilka wczesnych prac w ASP.NET.

 44
Author: Scott Hanselman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-09 17:58:29

WebSync jest zgodnym ze standardami skalowalnym serwerem Comet, który integruje się bezpośrednio z rurociągiem IIS/. NET. Jest również dostępny na żądanie jako usługa hostowana.

Oficjalnie obsługuje do 20 000 jednoczesnych połączeń klienta na węzeł serwera, ale poszczególne testy wykazały, że jest to aż 50 000. Przepustowość komunikatów jest optymalna w okolicach 1000-5000 jednoczesnych klientów, a wiadomości dostarczane są z jednego węzła nawet do 300 000 na sekundę.

It zawiera obsługę po stronie klienta JavaScript,. NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime i. NET Compact, z obsługą po stronie serwera dla. NET / mono i PHP.

Klastrowanie jest obsługiwane za pomocą SQL Server lub Azure buforowanie po wyjęciu z pudełka, ale niestandardowych dostawców można pisać dla prawie wszystkiego (Redis, NCache).

Zastrzeżenie: pracuję dla firmy, która rozwija ten produkt.

 33
Author: Anton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-20 17:06:26

Ostatnio napisałem prosty przykład długiego serwera czatu używającego kontrolerów asynchronicznych MVC 3 opartych na świetny artykuł Claya Lenharta

Możesz użyć przykładu na wdrożeniu AppHarbor, które skonfigurowałem w oparciu o źródło z projektu BitBucket.

Więcej informacji można znaleźć na moim blogu wyjaśniającym projekt .

 15
Author: Jacob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 14:22:12

W rzeczywistości istnieje wiele możliwości, aby stworzyć stronę obsługiwaną przez ajax z ASP.NET ale szczerze, PokeIn jest najprostszym sposobem na stworzenie aplikacji webowej obsługującej ajax. To uratowało jeden z projektów mojej firmy.

 4
Author: BigbangO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-16 18:28:26

Możesz również spojrzeć na Kaazing Enterprise Gateway, która wydała wersję produkcyjną swojej bramki webSocket [HTML5], która całkowicie zastępuje sposób comet i umożliwia połączenia full-duplex między przeglądarkami i serwerami aplikacji.

Możesz również spojrzeć na Light Streamer dema

 3
Author: Vikram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-22 23:13:18

Kiedyś korzystałem z czatu dawno temu, który wykorzystywał niestandardowy serwer strumieniowy http. Odtworzyłem to oprogramowanie w pewnym momencie z czystej ciekawości i myślę, że jest to wystarczająco łatwe do zrobienia. Nigdy nie próbowałbym zaimplementować podobnego typu "nieskończonego żądania" w IIS, szczególnie w ASP.NET, ponieważ żądania wiążą wątek puli wątków (lub wątek IO, jeśli używane są asynchroniczne manipulatory) w nieskończoność, co oznacza, że można obsłużyć tylko tyle na serwer, co konfigurację puli wątków pozwala.

Gdybym miał silną uzasadnioną potrzebę takiej funkcjonalności, szczerze napisałbym do niej niestandardowy serwer http.

Wiem, że to nie odpowiada na twoje pytanie, ale pomyślałem, że wkład może być istotny.

 1
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-17 00:04:24

Grupa ws-i opublikowała coś o nazwie "niezawodny bezpieczny Profil", który ma szklaną rybę i implementację.NET, która najwyraźniej współdziała dobrze.

Przy odrobinie szczęścia istnieje również implementacjaJavascript .

Istnieje również implementacja Silverlight, która używa dupleksu HTTP. możesz podłączyć javascript do obiektu Silverlight , aby uzyskać wywołania zwrotne, gdy wystąpi push.

Są też komercyjne płatne wersje jak również.

 1
Author: random65537,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:36

Myślę, że podejście Comet nie jest naprawdę skalowalne, chyba że jesteś przygotowany do rozbudowy farmy internetowej poziomo(dodając więcej serwerów internetowych do miksu). Sposób, w jaki to działa, polega na tym, że pozostawia połączenie TCP otwarte dla każdej sesji użytkownika, tylko po to, aby serwer mógł od czasu do czasu wcisnąć rzeczy do tego połączenia, aby natychmiast poinformować użytkownika o zmianie lub aktywności.

 0
Author: cruizer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 03:29:56