2010-11-26 21 views
5

एएसपी.NET वेब एप्लिकेशन को केवल समवर्ती उपयोगकर्ताओं की दी गई राशि प्रदान करने के लिए एक अच्छा तरीका क्या होगा?एएसपी.नेट में फ्लोटिंग लाइसेंस कैसे कार्यान्वित करें?

कुछ आवश्यकताएँ हैं:

  • आवेदन लॉगिन (कोई अज्ञात उपयोगकर्ताओं के बारे में चिंता करने की जरूरत) की आवश्यकता है।
  • एकाधिक सर्वर समर्थन (खेत/भार संतुलन)।
  • एक सक्रिय उपयोगकर्ता को सक्रिय सत्र (साइन ऑफ या समाप्त नहीं किया गया) के समान माना जा सकता है।
  • समवर्ती उपयोगकर्ताओं की अधिकतम संख्या तक पहुंचने पर अतिरिक्त लॉग इन अस्वीकार कर दिए जाने चाहिए।
  • उत्तरदायित्व की आवश्यकता है (प्रशासक यह देखने में सक्षम होना चाहिए कि सक्रिय उपयोगकर्ता कौन हैं)।
  • प्रत्येक वेब अनुरोध पर न्यूनतम ओवरहेड (विशेष रूप से प्रत्येक अनुरोध पर डेटाबेस के लिए महंगा यात्रा से बचें)।
  • समवर्ती उपयोगकर्ताओं की कुल संख्या को सही रखा जाना चाहिए भले ही कोई वेब सर्वर लटकता है, नेटवर्क से डिस्कनेक्ट हो जाता है या फिर से शुरू किया जाना चाहिए।
  • अतिरिक्त सर्वर होस्ट सेवाओं (जैसे एप्लिकेशन सर्वर) के लिए उपलब्ध हैं।
+0

ऐसा लगता है कि यह एक प्रतिलिपि spec से एक प्रतिलिपि और पेस्ट प्रश्न है। "जवाबदेही की आवश्यकता है" जैसी चीजें और समवर्ती उपयोगकर्ताओं को प्रतिबंधित करना दो पूरी तरह से अलग चीजें हैं। मुझे लगता है कि आपको केवल विशिष्ट प्रश्न पूछने पर विचार करना चाहिए? – Illuminati

+0

:) वास्तव में मैंने इसे अभी टाइप किया है, मैं वह लड़का हूं जो चश्मा लिखता है। मेरा मतलब है कि जो भी विधि लागू की जाती है, वह व्यवस्थापक के लिए पर्याप्त पारदर्शी होना चाहिए ताकि यह देखने के लिए कि सीमा कब पहुंचती है, एप्लिकेशन में कौन सा लगता है। –

+0

शायद एक एचटीपी मॉड्यूल? आपको इस तर्क को 'AuthenticateRequest' और' PostAuthenticateRequest' ईवेंट 'में लागू करने की आवश्यकता होगी। http://msdn.microsoft.com/en-us/library/ms178473.aspx –

उत्तर

0

आप उपयोग करने में सक्षम होना चाहिए समवर्ती उपयोगकर्ताओं की संख्या सीमित करने के लिए,

<system.web> 
     <applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/> 
</system.web> 

http://blogs.msdn.com/b/rakkimk/archive/2009/07/08/iis7-improving-asp-net-performance-concurrent-requests-while-on-integrated-mode.aspx

+0

धन्यवाद लेकिन यह समवर्ती अनुरोध है, यह किसी उपयोगकर्ता की अवधारणा का समर्थन नहीं करता है, इसलिए मुझे नहीं लगता कि इसका उपयोग फ़्लोटिंग लाइसेंसिंग मॉडल को लागू करने के लिए किया जा सकता है। मुझे सक्रिय सत्रों के साथ वेब एप्लिकेशन पर लॉग इन किए जा सकने वाले उपयोगकर्ताओं की मात्रा सीमित करने की आवश्यकता है। –

+0

हाँ सही .. मैं अकेले कॉन्फ़िगरेशन के माध्यम से इसे प्राप्त करने के किसी भी तरीके से नहीं आया हूं .. आपको शायद लॉगिन तर्क के माध्यम से मौजूदा उपयोगकर्ताओं का ट्रैक रखने के लिए एक कस्टम कार्यान्वयन करने के बारे में सोचना चाहिए? – Illuminati

+0

मैं सहमत हूं; इस सवाल में मैं यह जानने की कोशिश कर रहा हूं कि उसके लिए क्या अच्छा दृष्टिकोण होगा। धन्यवाद। –

2

आप एक वैश्विक चर (स्थिर) का उपयोग करें और अपने Application_OnStart में तर्क ऊपर हुक सकता है, Application_BeginRequest, या पेज_लोड ईवेंट। अधिक उदाहरण के लिए इसे देखें: http://dotnetperls.com/global-variables-aspnet

+0

यह समस्या का हिस्सा हल करता है; यह सर्वर पर सक्रिय उपयोगकर्ताओं को ट्रैक करने की अनुमति दे सकता है, लेकिन एक सर्वर फार्म में ट्रैक करने के लिए, ऐसा लगता है कि एक और विस्तृत कार्यान्वयन की आवश्यकता होगी। –

+0

आह, हाँ, आप सही हैं। सत्र राज्य को प्रक्रिया से बाहर ले जाया जा सकता है और मैं आवेदन स्थिति के साथ सत्र राज्य भ्रमित कर रहा था। आवेदन स्थिति वास्तव में बहुत अस्थिर है (वेब.कॉन्फिग बदलना आपके आवेदन स्थिति को उदाहरण के लिए फ़्लश कर देगा) इसलिए एसक्यूएल सर्वर जैसे कुछ प्रकार के ऑफलाइन स्टोरेज का उपयोग करना बेहतर तरीका होगा।उस डेटाबेस स्टोरेज को प्रबंधित करने के लिए आपको किसी प्रकार का प्रोसेस एजेंट होना होगा ताकि यह किसी सर्वर फार्म या वेब गार्डन टोपोलॉजी में सभी सर्वरों द्वारा पहुंचा जा सके। – SRM

+0

धन्यवाद। हां, ऐसा लगता है कि सर्वर फार्म में सक्रिय उपयोगकर्ताओं की जानकारी को एकत्रित करने के लिए एक सेवा की आवश्यकता होगी। मैं डेटाबेस सर्वर पर विवाद को रोकने के लिए इसके लिए डेटाबेस का उपयोग नहीं करना चाहूंगा। ऐसा लगता है कि एक इन-मेमोरी सूची पर्याप्त होगी। –

संबंधित मुद्दे