Đã kiểm tra sự cố trong IIS cục bộ của tôi.
Đây là mã của tôi.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service : IService
{
public static int _counter = 0;
public string GetData()
{
_counter++;
return _counter.ToString();
}
}
Với cấu hình IIS mặc định, một quy trình chạy trên mỗi ứng dụng và mã này hoạt động như mong đợi. Kết quả được tăng lên trong mọi cuộc gọi dịch vụ.
Điều này có ý nghĩa vì InstanceContextMode
không quản lý luồng. Nó chỉ kiểm soát tuổi thọ của cuộc đời là InstanceContext
.
Biết rằng chúng tôi vẫn không thể xem xét sử dụng các biến tĩnh cho dữ liệu có thể thay đổi được như là phương pháp hay nhất. IIS có thể được cấu hình là "Web Garden". Cấu hình đó có nghĩa là có nhiều hơn một quy trình làm việc được phép cho mỗi nhóm ứng dụng và mọi quá trình sẽ có bản sao biến tĩnh riêng của nó.
http://www.iis.net/ConfigReference/system.applicationHost/applicationPools
Làm thế nào tôi có thể làm cho một số đối tượng có sẵn cho tất cả các cuộc gọi của khách hàng WCF? Có thể thực hiện điều đó trong IIS hoặc tôi có nên lưu trữ dịch vụ WCF trong dịch vụ cửa sổ không?
Đối tượng phải được lưu trữ trong lưu trữ liên tục như cơ sở dữ liệu hoặc bộ nhớ cache được phân phối. IIS vẫn là một máy chủ tuyệt vời cho các dịch vụ và nó cung cấp mọi thứ mà dịch vụ windows có thể làm cộng thêm nhiều hơn nữa.
Nguồn
2012-06-13 18:14:24
Tôi không nhận được điểm đầu tiên (ý của bạn là gì: cùng một proxy wcf?) Điểm thứ hai, bởi vì tôi muốn tải một số dữ liệu từ db và phân phối nó cho khách hàng (tốc độ có liên quan). Các dịch vụ bền vững, mặt khác, theo như tôi biết, hãy sử dụng cookie để lưu trữ dữ liệu phiên của khách hàng. Vì vậy, lưu trữ một wcf trong một cửa sổ dịch vụ sự lựa chọn đúng để đi? – John
@ John - Trong điểm đầu tiên, bởi 'WCF proxy', tôi có nghĩa là đối tượng được tạo ở phía máy khách để truy cập dịch vụ. Vì vậy, giả sử bạn sử dụng một proxy WCF để thực hiện một số cuộc gọi dịch vụ, lớp tĩnh (ở phía máy chủ) sẽ vẫn như cũ. Tôi sẽ không tư vấn cho điều này trừ khi các cuộc gọi dịch vụ có liên quan. Về câu hỏi thứ hai của bạn, tôi thích ý tưởng sử dụng dịch vụ Windows để duy trì các biến toàn cục. Đã không sử dụng nó trước đây, nhưng hãy thử. – Channs
Tôi hiểu điều đó. Cảm ơn bạn đã gợi ý. – John