2009-06-09 26 views
8

Tôi đang cố gắng sử dụng WCF để triển khai máy chủ kiểu máy sao chổi đẩy tới ứng dụng web ajax.Sao chổi WCF và chủ đề

Trong dịch vụ WCF của tôi, tôi đã triển khai phương thức WaitForEvents gọi Monitor.Wait để tạm dừng luồng cho đến khi dữ liệu mới đến. Tại thời điểm đó, màn hình được xung, và phương thức trả về dữ liệu mới mà đóng yêu cầu kiểu sao chổi.

Yêu cầu được thực hiện lại khi điều này xảy ra.

Hiện tại, tính năng này hoạt động tốt nhưng tôi nhận thấy rằng WCF cần tạo chuỗi mới cho từng người dùng được kết nối. Điều này có thể là do luồng không thể được trả về luồng cho đến khi dữ liệu xuất hiện và do đó mỗi người dùng được kết nối yêu cầu một chuỗi mới.

Tôi muốn thực hiện việc triển khai này hiệu quả hơn bằng cách kết nối nhiều dịch vụ một luồng. Nếu tôi đã sử dụng một ổ cắm, điều này có thể được thực hiện bằng cách để mở ổ cắm và trả lại luồng cho hồ bơi chủ đề trước. Khi dữ liệu mới đến, nó sẽ được phân phối bởi một luồng khác và chúng ta có thể ghi dữ liệu mới trực tiếp vào socket và đóng nó lại.

Có ai biết làm thế nào điều này có thể được thực hiện thông qua WCF?

Tôi đã xem xét "Push-Style Streaming" http://msdn.microsoft.com/en-us/library/bb472551.aspx và họ đề cập rằng "WCF thực hiện một" kéo "mô hình trong đó mã ứng dụng (dịch vụ) trả về một thể hiện của Stream và dựa trên cơ sở hạ tầng cấp thấp hơn để lấy dữ liệu từ luồng này và ghi nó ra mạng. " nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về trang web này.

Rất cám ơn trước!

Trả lời

2

Check-out nComet

Nó không sử dụng WCF, nhưng tôi tin rằng tác giả đang làm việc trên một phiên bản sử dụng WCF. Liên lạc với anh qua CodePlex và hỏi anh ta :-)

"nComet là một thực hiện NET của các Comet (ngược AJAX push) kiến ​​trúc. Đây server-side đường ống sử dụng lâu ngủi client-khởi xướng các kết nối HTTP để báo đẩy cho khách hàng. Khi khách hàng nhận được một câu trả lời, nó ngay lập tức mở ra một yêu cầu HTTP , mà máy chủ nắm giữ cho đến khi nhắn đã sẵn sàng. Kiến trúc này cho phép máy chủ để đẩy động html/xml/json/etc vào trình duyệt, thay vì trình duyệt bỏ phiếu cho máy chủ .

Dự án này có phạm vi để .NET kiến ​​trúc server-side, ban đầu cung cấp một HttpListener (đối với một loạt tùy chỉnh giao tiếp với http.sys trực tiếp) cũng như thực hiện ASP.NET , nơi ASP Triển khai .NET có thể được lưu trữ bên trong IIS cũng như quy trình bên ngoài. Thư viện sẽ đơn giản hóa việc triển khai thông báo chung các mẫu như đẩy dữ liệu mới nhất cũng như đồng bộ hóa. Mã ví dụ và các liên kết đến nhiều triển khai ở phía máy khách cũng sẽ được cung cấp .. "

1

Bạn cũng có thể muốn kiểm tra WebSync, một sao chổi thực hiện NET Hoạt động giống dandy với WCF

(Disclaimer: Tôi làm việc cho công ty)..

Các vấn đề liên quan