2016-08-22 16 views
5

Tôi đang chạy dịch vụ Service Fabric Stateful tại địa phương với 3 phân vùng và 3 Bản sao.Phạm vi biến tĩnh trong Ứng dụng Vải Servie

Ứng dụng có biến tĩnh công khai và giá trị được khởi tạo trong lớp 'khởi động'.

Tôi giả định rằng phạm vi của biến tĩnh là trên mỗi bản sao. Nhưng Dường như phạm vi biến tĩnh được chia sẻ giữa tất cả cá thể trong một nút.

tức là. Tôi đang truy cập các biến tĩnh từ phân vùng 1 bản sao chính nhưng giá trị cho nó từ phân vùng thứ cấp 3 bản sao nơi cả hai bản sao cư trú trong cùng một nút. Giá trị của biến tĩnh dường như bị ghi đè trong một số thứ tự trong cùng một nút.

Phạm vi biến tĩnh bên trong ứng dụng vải dịch vụ Stateful là gì?

Trả lời

7

Mỗi bản sao của một dịch vụ stateful hoặc thể hiện của một dịch vụ không quốc tịch của cùng một loại dịch vụ là một instantiation của bạn StatefulService- hoặc lớp dịch vụ StatelessService có nguồn gốc từ (một với RunAsync) trong quá trình tương tự và trong cùng một AppDomain. Nói cách khác, tất cả các bản sao của một dịch vụ được đặt trên cùng một nút chỉ là một loạt các đối tượng .NET trong cùng một tiến trình. Vì vậy, có, một biến tĩnh sẽ được nhìn thấy trên chúng. Các biến tĩnh không được khuyến nghị. Nếu bạn cần "chỉ một" của một cái gì đó, sử dụng một mẫu đơn và phạm vi singleton trường hợp bản sao dịch vụ/trường hợp, mà bạn sẽ phải làm cho mình với một bảng tra cứu.