Triển khai Comet cho ASP.NET? [đóng cửa]


103

Tôi đã tìm cách triển khai nhắn tin giống gmail bên trong trình duyệt và đến với khái niệm Comet . Tuy nhiên, tôi đã không thể tìm thấy một triển khai .NET tốt cho phép tôi thực hiện việc này trong IIS (ứng dụng của chúng tôi được viết bằng ASP.NET 2.0).

Các giải pháp tôi đã tìm thấy (hoặc có thể nghĩ đến, cho vấn đề đó) yêu cầu để lại một chuỗi đang chạy cho mỗi người dùng - để nó có thể trả lại phản hồi cho anh ta khi anh ta nhận được tin nhắn. Tất nhiên, điều này không có quy mô nào cả.

Vì vậy, câu hỏi của tôi là - bạn có biết triển khai ASP.NET cho Comet hoạt động theo một cách khác không? Điều đó có khả thi với IIS không?


12
Tôi đoán MS-thiên nhiên ưu đãi ban đầu thực hiện là SignalR: hanselman.com/blog/...
user423430

Node.JS hiện đã được hỗ trợ trên Azure, sắp tới sẽ hỗ trợ IIS vào năm 2003. Điều đó có nghĩa là chúng tôi sẽ có thể chạy máy chủ sao chổi trong IIS ( windowsazure.com/en-us/develop/nodejs )
goodguys_activate

Câu trả lời:


44

Sao chổi đang gặp thách thức để mở rộng quy mô với IIS vì khả năng kết nối bền bỉ của sao chổi, nhưng hiện có một nhóm đang xem xét các kịch bản của Sao chổi. Cũng nhìn vào blog của Aaron Lerch vì tôi tin rằng anh ấy đã hoàn thành một số công việc của Comet ban đầu trong ASP.NET.


9
Điều này thực sự được thực hiện; kiểm tra WebSync, theo phản hồi của Anton bên dưới. ( freezemountain.com/websync )
jvenema

3
Có ai gọi là đảo ngược ajax không? kiểm tra cái này: pokein.codeplex.com
Zuuum

4
MVC Async Controllers có thể giúp chống lại các vấn đề IIS bằng cách giảm tải các chuỗi chờ không phải của nhân viên IIS, hãy xem bài đăng tuyệt vời này của Clay Lenhart . Cũng xem Dự án ví dụ về máy chủ trò chuyện trên BitBucket.
Jacob

33

WebSync là một máy chủ Comet có thể mở rộng tuân thủ các tiêu chuẩn, tích hợp trực tiếp vào đường ống IIS / .NET. Nó cũng có sẵn theo yêu cầu như một dịch vụ được lưu trữ.

Nó chính thức hỗ trợ tối đa 20.000 kết nối máy khách đồng thời trên mỗi nút máy chủ, nhưng các thử nghiệm riêng lẻ cho thấy nó cao tới 50.000. Thông lượng tin nhắn là tối ưu trong khoảng 1.000-5.000 máy khách đồng thời, với thông điệp được gửi cao tới 300.000 mỗi giây từ một nút duy nhất.

Nó bao gồm hỗ trợ phía máy khách cho JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime và .NET Compact, với hỗ trợ phía máy chủ cho .NET / Mono và PHP.

Phân cụm được hỗ trợ bằng cách sử dụng SQL Server hoặc Azure Caching ngoài hộp, nhưng các nhà cung cấp tùy chỉnh có thể được viết cho bất kỳ thứ gì (Redis, NCache).

Tuyên bố từ chối trách nhiệm: Tôi làm việc cho công ty phát triển sản phẩm này.


17
cần có một từ chối trách nhiệm ở đây, như sản phẩm của bạn của nó ...
Sam Saffron

9
Chắc chắn, nó được sản xuất bởi công ty tôi làm việc :) Chắc chắn không cố gắng che giấu bất cứ điều gì.
Anton

1
@Anton - không che giấu điều gì đó không giống như tiết lộ nó.
RedFilter

1
@Anton Bạn có thể giải thích thêm về cách nó hỗ trợ tới 20k kết nối máy khách đồng thời trên mỗi nút máy chủ không? Những con số này nhìn, cũng .. "quá lớn".
Pacerier

1
Tôi cho rằng sẽ không thận trọng khi hỏi cách websync hoạt động dưới mui xe, về mặt khái niệm - tất nhiên là từ một cái nhìn 25.000 foot.
nocarrier

15

Gần đây tôi đã viết một ví dụ đơn giản về Máy chủ trò chuyện thăm dò ý kiến ​​dài sử dụng Bộ điều khiển không đồng bộ MVC 3 dựa trên một bài viết tuyệt vời của Clay Lenhart

Bạn có thể sử dụng ví dụ về triển khai AppHarbor mà tôi thiết lập dựa trên nguồn từ dự án BitBucket.

Ngoài ra, có thêm thông tin từ bài đăng trên blog của tôi giải thích về dự án .


tôi thích ví dụ về việc triển khai
AppHarbor

'bài đăng blog giải thích dự án' -> web.archive.org/web/20130328042214/http://...
jaybro

Cảm ơn! Mong là bạn thích bài báo này.
Clay Lenhart

4

Trên thực tế, có nhiều sự lựa chọn để tạo trang web hỗ trợ ajax với ASP.NET nhưng thành thật mà nói, PokeIn là cách dễ nhất để tạo ứng dụng web hỗ trợ ajax sao chổi. Nó đã cứu một trong những dự án của công ty tôi.



1

Tôi đã từng sử dụng một trang web trò chuyện từ lâu sử dụng máy chủ phát trực tuyến http được xây dựng tùy chỉnh. Tôi thực sự đã sao chép phần mềm đó tại một thời điểm vì sự tò mò tuyệt đối, và tôi nghĩ nó rất dễ làm. Tôi sẽ không bao giờ cố gắng triển khai một loại "yêu cầu vô hạn" tương tự trong IIS, đặc biệt là trong ASP.NET, bởi vì các yêu cầu này ràng buộc một luồng nhóm luồng (hoặc luồng IO, nếu trình xử lý không đồng bộ được sử dụng) vô thời hạn, có nghĩa là bạn chỉ có thể xử lý rất nhiều trên mỗi máy chủ khi cấu hình nhóm luồng của bạn cho phép.

Nếu tôi có nhu cầu chính đáng mạnh mẽ cho chức năng như vậy, tôi thành thật muốn viết một máy chủ http tùy chỉnh cho nó.

Tôi biết điều đó không thực sự trả lời câu hỏi của bạn, nhưng tôi nghĩ rằng đầu vào có thể có liên quan.


1

Nhóm WS-I đã xuất bản một thứ gọi là "Hồ sơ bảo mật đáng tin cậy"triển khai Glass Fish và .NET dường như hoạt động tốt với nhau.

Với bất kỳ sự may mắn nào cũng có một triển khai Javascript ở đó.

Ngoài ra còn có một triển khai Silverlight sử dụng HTTP Duplex. Bạn có thể kết nối javascript với đối tượng Silverlight để nhận lệnh gọi lại khi một lần đẩy xảy ra.

Ngoài ra còn có các phiên bản trả phí thương mại .


4
Đăng hàng loạt câu trả lời chính xác giống nhau cho một số câu hỏi liên tiếp trong thời gian ngắn có xu hướng làm mất đi một vài dấu hiệu ...
Marc Gravell

2
( psst )

0

Tôi nghĩ rằng cách tiếp cận Comet không thực sự có thể mở rộng trừ khi bạn chuẩn bị mở rộng trang trại web theo chiều ngang (bằng cách thêm nhiều máy chủ web hơn vào hỗn hợp). Cách thức hoạt động là nó để mở một kết nối TCP cho mỗi phiên người dùng, chỉ vì vậy máy chủ có thể đẩy nội dung vào kết nối đó theo thời gian để thông báo ngay cho người dùng về một thay đổi hoặc hoạt động.


6
Mọi thứ chỉ có thể mở rộng theo chiều dọc đến một điểm, sau đó quy mô theo chiều ngang phải diễn ra.
Anton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.