Tôi cần tạo dịch vụ WCF chấp nhận yêu cầu của khách hàng và kết nối nội bộ với máy từ xa để thực hiện công việc. Máy từ xa có khả năng xử lý rất tốt nhưng không có tốc độ xử lý tốt. Điều này có nghĩa là có thể xử lý ví dụ 1000 giao dịch mỗi giây nhưng mỗi giao dịch có thể mất 1 giây, vì vậy cách duy nhất là có 1.000 giao dịch đồng thời chạy trong cùng một giây.Xử lý bên máy chủ không đồng bộ WCF
Máy từ xa xử lý rất tốt tình huống này, nhưng tôi lo lắng về WCF, nếu mỗi giao dịch là nội bộ (tôi không quan tâm mô hình phía máy khách (đồng bộ hoặc không đồng bộ)) chờ và chặn luồng bên trong máy chủ cho 1 hoặc 2 giây này có thể đại diện cho một 1000 chủ đề làm việc trực tiếp và điều đó có thể rất nguy hiểm, hoặc có thể WCF sử dụng các hồ bơi thread và chỉ cần đặt những người khác yêu cầu trong trạng thái chờ đợi và đó là xấu quá.
Vì vậy, câu hỏi của tôi là về khả năng xử lý yêu cầu không đồng bộ ở phía máy chủ. Vì vậy, dòng chảy giao dịch phải là như thế này:
- cliente khởi tạo một yêu cầu (ở bên mình là một yêu cầu đồng bộ)
- server recive yêu cầu và đặt yêu cầu này trong một Queue giao dịch và phát hành các chủ đề
- Khi tác vụ kết thúc, máy chủ hoàn tất yêu cầu gửi HTTP 200 và dẫn đến máy khách.
Cảm ơn!
Nếu bạn đang phục vụ dịch vụ wcf của mình trong IIS, bạn sẽ không cần thực hiện bất kỳ điều nào ở trên. IIS sẽ tạo một chuỗi riêng biệt cho mỗi yêu cầu, khởi tạo một thể hiện mới của wcf của bạn, xử lý yêu cầu và trả về kết quả. Nếu tồn tại một luồng có sẵn, IIS sẽ sử dụng nó thay vì spooling một cái mới. – edepperson
Điều đó không giải quyết được vấn đề của tôi về Chủ đề "bão hòa", tôi cần một xử lý async không phải là sử dụng lại thread –