Có cách nào để cấu hình một Dịch vụ WCF để tạo một Thread mới để xử lý bất kỳ yêu cầu mới nào không?Dịch vụ WCF tạo ra một chuỗi mới cho mỗi yêu cầu mới
Trả lời
Không, bởi vì bạn sẽ không bao giờ muốn thực hiện việc này. Bạn đang thực sự cố gắng đạt được điều gì?
EDIT
Dựa trên nhiều thông tin hơn, đây là những gì tôi nghĩ.
Nếu bạn chỉ muốn "trạng thái dính" theo yêu cầu, bạn nên sử dụng trạng thái trên Instance và sử dụng InstanceContextMode.PerCall, theo phản hồi của marc_s.
Nếu bạn cần trạng thái lưu trữ cục bộ cho cuộc gọi, bạn có thể xem xét sử dụng ICallContextInitializer làm cách để sắp xếp trạng thái qua chuỗi mà WCF chọn để gọi phương thức của bạn (và làm sạch trạng thái luồng khi cuộc gọi kết thúc).
Nhưng bạn không nên quan tâm đến "chuỗi nào". WCF sẽ xử lý với một hồ bơi thread thay cho bạn.
Bạn có thể giải thích thêm một chút không? –
Ý tưởng là chia sẻ các phiên db, thông tin đăng nhập, v.v. trong một yêu cầu bằng cách lưu trữ chúng trong ThreadContext. Điều này sẽ giúp chúng tôi trong việc thực hiện rollbacks, v.v. – Nazgul
tất nhiên bạn có thể - nó thực sự thậm chí là thực hành tốt nhất được đề nghị! ServiceHost có một nhóm các chủ đề công nhân cho mục đích chính xác này –
Có bạn có thể làm điều đó - nó được gọi là xử lý yêu cầu "cho mỗi cuộc gọi". ServiceHost sẽ tạo một phiên bản mới của lớp dịch vụ của bạn cho mỗi yêu cầu đến để xử lý một yêu cầu đó.
Để làm điều này, bạn cần phải thiết lập lớp dịch vụ của bạn (một trong những thực hiện giao diện dịch vụ) là "PerCall" - bạn làm điều này bằng cách áp dụng một thuộc tính trên lớp dịch vụ của bạn:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class YourService : IYourService
{
...
}
Marc
Thao tác này sẽ tạo một cá thể Dịch vụ mới cho mỗi cuộc gọi, nhưng không sinh ra một chuỗi mới cho mỗi cuộc gọi. – Nazgul
nhưng nó sẽ gán cá thể dịch vụ mới cho một chuỗi công nhân để xử lý yêu cầu ...... –
Tôi không nghĩ rằng bạn có thể làm nhiều hơn thế này. Tôi không biết về bất kỳ thiết lập nào trong WCF để tạo một chuỗi mới hoàn toàn cho mỗi yêu cầu. Và tại sao bạn thực sự muốn ?? Tạo một luồng đầy đủ là một hoạt động khá tốn kém - tại sao không sử dụng nhóm chủ đề công nhân tích hợp sẵn có? –
Phụ thuộc vào chính xác những gì bạn muốn, nhưng hành vi dịch vụ sau đây sẽ giải quyết nó:
ServiceBehavior:
ConcurrencyMode=ConcurrencyMode.Multiple
InstanceContextMode=InstanceContextMode.Single
lớp học của bạn sẽ là một singleton, nhưng tất cả các cuộc gọi được thực hiện với phương pháp này sẽ chạy trong một separ ăn sợi. Nếu bạn cần bất kỳ đồng bộ hóa mặc dù bạn phải làm điều đó bằng tay.
Cũng đừng quên xem xét việc điều chỉnh để biết các vấn đề về hiệu suất tiềm năng.
- 1. Nếu một thùng chứa servlet tạo ra thể hiện javax.servlet.http.HttpServlet mới cho mỗi yêu cầu gửi đến?
- 2. Cách đăng nhập yêu cầu thô trong dịch vụ WCF
- 3. Dịch vụ dữ liệu WCF - Lỗi yêu cầu
- 4. Tại sao Chrome đưa ra yêu cầu mới cho hình ảnh SVG này mỗi lần, nhưng không phải cho PNG?
- 5. Dịch vụ REST REST không nhận ra yêu cầu PUT
- 6. Điều chỉnh dịch vụ WCF
- 7. Dịch vụ WCF và Dịch vụ Windows
- 8. Tái sử dụng một khách hàng dịch vụ WCF hoặc tạo một ứng dụng mỗi lần?
- 9. Dịch vụ WCF được lưu trữ trong IIS với ràng buộc net.msmq tạo ra sự cố
- 10. Dịch vụ WCF trả về một lớp tùy chỉnh tạo ra lỗi trong Reference.cs
- 11. Cần tạo một RunTimeException mới cho EmptyStacks
- 12. Gọi một dịch vụ web yêu cầu xác thực http cơ bản từ máy khách wcf
- 13. HTTP Request lỗi Bad khi yêu cầu một hợp đồng dịch vụ WCF
- 14. WCF một dịch vụ hoặc nhiều dịch vụ
- 15. Express.js/Ứng dụng hộ chiếu tạo phiên mới cho mỗi yêu cầu, mặc dù ID phiên trong tiêu đề yêu cầu
- 16. Dịch vụ RIA .NET/Dịch vụ WCF
- 17. Dịch vụ Windows/Trang bảo vệ mới cho ngăn xếp không thể được tạo
- 18. Dịch vụ báo cáo Cscading Làm mới tham số
- 19. Dịch vụ WCF gọi một dịch vụ WCF khác không thành công với lỗi web 400 Yêu cầu không hợp lệ
- 20. Yêu cầu dịch vụ web bảo mật
- 21. Jinja2: Tạo hàng mới cho mỗi 3 mục
- 22. Dịch vụ WCF và Luồng
- 23. Xóa ActivityId khỏi WCF Yêu cầu
- 24. Thông số yêu cầu RSpec/Capybara Yêu cầu - Không thể đưa ra để POST phiên người dùng mới
- 25. Android - tạo một dịch vụ chạy mỗi ngày một lần
- 26. WCF - Xem yêu cầu xml/phản hồi tới dịch vụ web an toàn
- 27. GAE Go - "Yêu cầu này gây ra một quá trình mới để bắt đầu cho ứng dụng của bạn ..."
- 28. Dịch vụ WCF thay vì Dịch vụ Web ASMX?
- 29. Máy khách Java JAX-WS, khả năng tương thích dịch vụ WCF: "400: Yêu cầu Xấu"
- 30. Cách tạo một dịch vụ WCF STA (đơn luồng)
WCF không thực hiện việc này? – Jehof
không, không phải theo mặc định – Nazgul