Tôi đang tạo một ứng dụng với dịch vụ NetTcpBinding
và một số BasicHttpBinding
. Thông qua các dịch vụ này, khách hàng gửi yêu cầu đến ứng dụng: các yêu cầu này phải được đưa vào đối tượng Queue
, đó là hàng đợi yêu cầu đến.Truy cập đồng thời vào một hàng đợi theo nhiều chủ đề
- Cả hai dịch vụ phải cho phép các cuộc gọi đồng thời từ khách hàng.
- Điều này có nghĩa là cả hai dịch vụ nên truy cập đồng thời vào hàng đợi để thêm các yêu cầu đã nhận.
- Ngoài ra, một chuỗi khác phải truy cập hàng đợi để nhận và xử lý yêu cầu.
Tôi có thể sử dụng ConcurrencyMode.Multiple
và có thể thực hiện nhiều cuộc gọi cùng một lúc. Tuy nhiên, điều này không đảm bảo quyền truy cập đồng thời vào hàng đợi. Tôi có nên đặt hai ServiceHost
vào hai luồng khác nhau không? Ví dụ:
- Chủ đề đầu tiên dequeues và xử lý các yêu cầu trong hàng đợi.
- Tuyến thứ hai khởi tạo dịch vụ
NetTcpBinding
và thêm các yêu cầu mới vào hàng đợi. Hơn nữa, nó sẽ gửi bất kỳ trả lời thông qua gọi lại. - Tuyến thứ ba khởi tạo dịch vụ
BasicHttpBinding
và thêm các yêu cầu mới vào hàng đợi.
Đây là ý tưởng của tôi. Vì tôi gần như là một newbie, tôi sẽ biết ơn nếu bạn có thể cho tôi một số lời khuyên. Có lẽ tôi nên bắt đầu viết ba chủ đề truy cập vào hàng đợi đồng thời: cho thời điểm hai chủ đề đầu tiên có thể enqueue yêu cầu ngẫu nhiên vào hàng đợi, trong khi chủ đề thứ ba tiêu thụ các yêu cầu này.
Bạn có bị ràng buộc với Hàng đợi không? Bạn có thể sử dụng ConcurrentQueue hoặc BlockingCollection không? Đây là một vấn đề tiêu dùng/sản xuất khá tiêu chuẩn. – Joe
@Joe: Hiện tại tôi nên sử dụng các bộ sưu tập không an toàn, như 'Queue',' Dictionary', ect .. – enzom83
Bất kỳ lý do cụ thể nào? Bạn chỉ cần reimplementing bánh xe rất có thể. – Joe