Szukałem sposobów zaimplementowania wiadomości przypominających Gmaila w przeglądarce i doszedłem do koncepcji Comet . Jednak nie udało mi się znaleźć dobrej implementacji .NET, która pozwoliłaby mi to zrobić w IIS (nasza aplikacja jest napisana w ASP.NET 2.0).
Rozwiązania, które znalazłem (lub mogłem wymyślić, jeśli o to chodzi) wymagają pozostawienia działającego wątku na użytkownika - tak, aby mógł zwrócić mu odpowiedź, gdy otrzyma wiadomość. To oczywiście wcale się nie skaluje.
Moje pytanie brzmi - czy znasz implementację ASP.NET dla Comet, która działa w inny sposób? Czy jest to w ogóle możliwe w przypadku usług IIS?
Odpowiedzi:
Skalowanie komety za pomocą usług IIS jest trudne ze względu na stałą łączność komety, ale jest zespół, który analizuje teraz scenariusze dotyczące komety. Spójrz także na blog Aarona Lercha, ponieważ wydaje mi się, że wykonał on kilka wczesnych prac nad kometą w ASP.NET.
źródło
WebSync to zgodny ze standardami skalowalny serwer Comet, który integruje się bezpośrednio z potokiem IIS / .NET. Jest również dostępna na żądanie jako usługa hostowana.
Oficjalnie obsługuje do 20 000 równoczesnych połączeń klientów na węzeł serwera, ale w indywidualnych testach osiągnięto nawet 50 000. Przepustowość wiadomości jest optymalna w okolicach 1 000-5 000 współbieżnych klientów, przy czym komunikaty są dostarczane z prędkością do 300 000 na sekundę z pojedynczego węzła.
Obejmuje obsługę po stronie klienta dla 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 przy użyciu programu SQL Server lub Azure Caching po wyjęciu z pudełka, ale niestandardowych dostawców można napisać dla prawie wszystkiego (Redis, NCache).
Zastrzeżenie: Pracuję dla firmy, która opracowuje ten produkt.
źródło
Niedawno napisałem prosty przykład serwera Long Polling Chat używającego kontrolerów asynchronicznych MVC 3 w oparciu o świetny artykuł Claya Lenharta
Możesz użyć przykładu we wdrożeniu AppHarbor, które skonfigurowałem na podstawie źródła z projektu BitBucket.
Więcej informacji dostępnych w moim wpisie na blogu wyjaśniającym projekt .
źródło
W rzeczywistości istnieje wiele możliwości stworzenia strony internetowej obsługiwanej przez Ajax z ASP.NET, ale szczerze mówiąc, PokeIn jest najłatwiejszym sposobem na stworzenie aplikacji internetowej obsługującej kometę Ajax . Uratował jeden z projektów mojej firmy.
źródło
Możesz również spojrzeć na Kaazing Enterprise Gateway, która wydała produkcyjną wersję swojej bramy webSocket [HTML5], która całkowicie zastępuje kometę i umożliwia połączenia w trybie pełnego dupleksu między przeglądarkami i serwerami aplikacji.
Możesz również obejrzeć prezentacje Light Streamer
źródło
Dawno temu korzystałem z witryny czatu, która korzystała z niestandardowego serwera strumieniowego HTTP. W pewnym momencie odtworzyłem to oprogramowanie z czystej ciekawości i myślę, że jest to dość łatwe. 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 są używane asynchroniczne programy obsługi) w nieskończoność, co oznacza, że możesz tylko obsłużyć tyle na serwer, na ile pozwala na to konfiguracja puli wątków.
Gdybym miał silną uzasadnioną potrzebę takiej funkcjonalności, szczerze napisałbym dla niej niestandardowy serwer http.
Wiem, że to tak naprawdę nie odpowiada na twoje pytanie, ale pomyślałem, że dane wejściowe mogą być istotne.
źródło
Grupa WS-I opublikowała coś o nazwie „Niezawodny bezpieczny profil”, które ma implementację Glass Fish i .NET, które najwyraźniej dobrze ze sobą współpracują .
Przy odrobinie szczęścia istnieje również implementacja Javascript .
Istnieje również implementacja Silverlight korzystająca z protokołu HTTP Duplex. Możesz połączyć javascript z obiektem Silverlight, aby uzyskać wywołania zwrotne w przypadku wypychania.
Istnieją również płatne wersje komercyjne .
źródło
Myślę, że podejście Comet nie jest naprawdę skalowalne, chyba że jesteś przygotowany na poziome rozszerzenie farmy internetowej (przez dodanie większej liczby serwerów internetowych do mieszanki). Sposób działania polega na tym, że pozostawia otwarte połączenie TCP na sesję użytkownika, aby serwer mógł od czasu do czasu przesyłać rzeczy do tego połączenia, aby natychmiast poinformować użytkownika o zmianie lub działaniu.
źródło