كيفية جعل المورد (الشاشة) متاحًا لمستخدم واحد فقط في كل مرة في تطبيق .Net الموزع؟

StackOverflow https://stackoverflow.com/questions/354113

سؤال

لدي تطبيق نماذج Windows يستند إلى خادم العميل ويحتاج إلى شاشة مسؤول فقط.يجب تنفيذ وظيفة المسؤول بطريقة تمكن مسؤول واحد فقط في أي وقت من الوصول إلى تلك الشاشة.يتحدث تطبيق عميل نماذج Windows إلى الخادم باستخدام .NET Remoteing.ويتم توزيع جانب الخادم على أجهزة متعددة.

هل كانت مفيدة؟

المحلول

ويمكن أن يتم ذلك من خلال أكثر سهولة باستخدام جدول DB. عادة DB بالفعل المتسامحة وهو مورد آمنة للاستخدام لسيناريو قفل المشتركة. فقط لديك جدول القفل الذي يحتوي على بعض المعلومات عن الموارد مقفلة، الذي لديه ذلك، ومتى، وما إلى ذلك.

ويمكنك أيضا استخدام واحدة من العديد من "خوادم الدولة" في السوق لتخزين حالة قفل. هذا هو إدخال نقطة فشل رغم ذلك، إلا إذا كنت تستثمر في واحدة من التكنولوجيات دولة موزعة الجديدة.

ولكن، كنت في وضع حقا نفسك للمزيد من القضايا. عليك ان تحصل على الشاشة للسماح إجبار فتح، وعرض لديه قفل، الخ أنت أفضل حالا تبحث في سبب الحاجة هذا القفل حقا. هل هي التكنولوجيا أو الأعمال التجارية شرط؟ يمكنك بسهولة وتنفيذ نظيفة سيناريو تحديث البيانات المتشائمة التي من شأنها تحسين تجربة المستخدم.

نصائح أخرى

تحتاج إلى الاحتفاظ بعضو ثابت على الخادم يشير إلى ما إذا كانت النافذة قيد الاستخدام حاليًا.تأكد من أنه آمن للخيط باستخدام قفل() وظيفة عند تحديد القيمة.يمكنك بعد ذلك التحقق من هذه القيمة قبل إظهار شاشة المسؤول.

بقدر ما يتعلق الأمر بالخادم، فقد ذكرت أنه موجود على أجهزة كمبيوتر متعددة.هل هذا نوع من الطوبولوجي المتوازن الذي يعمل كخادم افتراضي واحد؟إذا كان الأمر كذلك، فقد تحتاج إلى الاحتفاظ بالقيمة في قاعدة البيانات.فكر في الأمر بنفس الطريقة التي يستمر بها ASP.Net حالة الجلسة.يمكنني التواجد على الخادم، ولكن إذا كانت هناك مزرعة خوادم، فيمكن نقلها إلى SQL Server لتستخدمها جميع الخوادم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top