Tôi cần Dịch vụ của mình để cập nhật các trường trong bộ nhớ dùng chung cho ứng dụng khách để đọc và hiển thị. Tôi đã tìm thấy giải pháp hiện tại của mình không hiệu quả do Session 0 Isolation.Chia sẻ bộ nhớ giữa Dịch vụ và Ứng dụng Windows, điều gì là dễ nhất?
Tôi đã đổi tên thành mutex
es trong không gian tên toàn cầu mà sửa chữa yếu tố đó, nhưng nó không giống như các dll sẽ tuân theo chia sẻ giữa các phiên bất chấp một giải pháp cho Session 0 Isolation phúc:
"Chọn rõ ràng không gian tên Local \ hoặc Global \ cho bất kỳ đối tượng được đặt tên nào, chẳng hạn như sự kiện hoặc bộ nhớ được ánh xạ mà dịch vụ có sẵn."
Tôi không biết phần nào của dll có thể được phân loại là đối tượng được đặt tên và sẽ mất quá nhiều thời gian để cài đặt lại và bước qua nó để kiểm tra.
Tôi đã thấy số lượng mã cho các kênh được đặt tên và đã được tắt. Tôi không muốn tạo một tập tin mà chạm vào đĩa như tôi tưởng tượng là cần thiết của giải pháp memoryMappedFile. Có thể chia sẻ các phần của dll được thực hiện để làm việc? Nếu không thì điều gì là dễ nhất?
public ref class ServerGUIBridge
{
public:
#pragma data_seg(".sdata")
static int commonIntShouldBeGlobal = 0;
static bool hasBeenInitializedMakeMeGlobal = false;
#pragma data_seg()
#pragma comment(linker, "/section:.sdata,rws")
Tôi đang sử dụng .NET 2.0 để không có WCF.
Nếu bạn tạo tệp ánh xạ bộ nhớ với INVALID_FILE_HANDLE, thì không có tệp nào được tạo. Nó chỉ là bộ nhớ được phân trang khi không được truy cập trong một thời gian. Lưu ý rằng các phần được chia sẻ là một lỗ hổng bảo mật - bạn không thể đặt ACL trên một phần được chia sẻ. (Điều gì xảy ra nếu một máy khách đi vào và thực hiện 'hasBeenInitializedMakeMeGlobal = false' hoặc' commonIntShouldBeGlobal = rand() '?) –
@Raymond" Nếu hFile là INVALID_HANDLE_VALUE, quá trình gọi cũng phải chỉ định kích thước cho đối tượng ánh xạ tệp trong dwMaximumSizeHigh và các thông số dwMaximumSizeLow. Trong trường hợp này, CreateFileMapping tạo một đối tượng ánh xạ tệp có kích thước được chỉ định được hỗ trợ bởi tệp hoán trang hệ thống thay vì bởi một tệp trong hệ thống tệp. " - Vậy nó được sao lưu nếu tệp phân trang hệ thống bị tắt? – John
"Được hỗ trợ bởi tệp trang hệ thống" là từ ngữ kém. Nó thực sự nên được "hỗ trợ bởi hệ thống bộ nhớ ảo." Nếu pagefile bị vô hiệu hóa, thì hệ thống bộ nhớ ảo chỉ là bộ nhớ vật lý. –