2012-08-01 6 views
13

यदि मेरे पास एकाधिक हब कक्षाओं का उपयोग करने वाले एकाधिक पृष्ठ हैं, तो इसका प्रबंधन करने का सबसे अच्छा तरीका क्या है?आपकी वेबसाइट पर एकाधिक सिग्नलआर कनेक्शन/हब

- क्या यह वेबसाइट में किसी अन्य पृष्ठ पर नेविगेट करना बुरा है और अनिवार्य रूप से पिछले पृष्ठ पर खुले उसी हब क्लास के कनेक्शन को "फिर से खोलना" है?

- किसी पृष्ठ पर कई हब कनेक्शन ठीक है क्योंकि वे सभी एक कनेक्शन में एकीकृत हैं, भले ही वे अलग-अलग हब कक्षाएं हों?

उत्तर

8

हब्स से शुरू करने के लिए WIKI entry for Hubs और Client Side of Hubs पढ़ें। एक से अधिक पृष्ठों के संदर्भ के अनुसार कुछ चीजें हैं।

  1. जब आप एक केंद्र शुरू यह एक आईडी जो कि हब (किसी उदाहरण के साथ इस बात की पुष्टि कर सकते हैं) एक से अधिक पृष्ठों से अधिक के लिए एक ही रहता है अपने ग्राहक देता है।
  2. उसी हब के कनेक्शन को फिर से खोलना बुरा नहीं है। हो सकता है कि आपके पास क्लाइंट साइड विधि सभी पृष्ठों पर चल रही हो, हालांकि यदि कोई क्लाइंट एकाधिक विंडो खोल रहा है या एक पृष्ठ से दूसरे पृष्ठ पर जा रहा है तो आपके पास उस हब पर एक ही कनेक्शन आईडी होगी ताकि आप संपर्क में रह सकें। यदि यह एकाधिक हब था तो आपको हब्स के साथ-साथ कनेक्शन आईडी प्रबंधित करना होगा। तो यह सवाल इस तरह है "क्या अलग-अलग वेबसाइटों के लिए मेरे इंटरनेट कनेक्शन की सेवा करने वाले कई आईएसपी होना बुरा है"। आप उन्हें प्राप्त कर सकते हैं लेकिन यह एक overkill है। एक आईएसपी आपके लिए सभी पृष्ठों को भी सर्वर कर सकता है।
  3. एक पृष्ठ पर एकाधिक केंद्र आदर्श नहीं हैं लेकिन यह काम करेगा। फिर उत्तर को समस्या के संदर्भ में थोड़ा सा संदर्भ चाहिए, लेकिन आम तौर पर आप समूहों के माध्यम से या अन्य पैरामीटर आधारित दृष्टिकोण का उपयोग करके समान कनेक्शन आईडी पर विभिन्न अनुरोधों के बीच अंतर कर सकते हैं। उसी पृष्ठ पर दो हब होने के कारण मैसेजिंग के विभिन्न क्षेत्रों को अलग करने के लिए पैरामीटर या समूहों का उपयोग करने से अधिक संसाधन (इस परीक्षण की आवश्यकता है) ले सकता है।

उदाहरण:

आप एक पृष्ठ के दो भाग हैं कि, एक ग्राफ जो वास्तविक समय उपयोगकर्ता गतिविधि और एक क्षेत्र वास्तविक समय डेटा एक तालिका के रूप में उपयोगकर्ताओं द्वारा किया गया परिवर्तन देखने के लिए पता चलता है। क्या आप दो हब या दो समूह बनायेंगे या क्या? ऐसे अन्य पृष्ठ हैं जो समान ग्राफ और डेटा तालिका का उपयोग करते हैं।

मेरे समाधान:

  1. मैं अनुप्रयोग सर्वर से वास्तविक समय डेटा प्राप्त करने के लिए के लिए एक एकल हब का निर्माण करेगा।
  2. मैं ग्राफ़ पॉइंट और डेटा टेबल भेजने के लिए सर्वर पर विभिन्न विधियों का निर्माण करूंगा।
  3. मैं उन पृष्ठों पर क्लाइंट साइड विधि तैयार करूंगा जो इन ग्राफों का उपयोग उसी हब पर सर्वर विधियों के साथ संवाद करने के लिए करते हैं।

जब आप पृष्ठों के बीच स्विच करते हैं तो क्लाइंट एक ही हब से कनेक्ट होगा और GetGraph या GetDataTable या दोनों का अनुरोध करेगा और प्रासंगिक डेटा के साथ अपने क्लाइंट को पॉप्युलेट करेगा। इसी तरह सर्वर पर जब आप डेटा बदलते हैं तो आप क्लाइंट साइड विधि को सभी क्लाइंट या समूह को अपडेट करने के लिए कॉल कर सकते हैं (इस जटिलता को जोड़ने दें)

मान लें कि आपके पास आपके आवेदन को देखने वाले छात्र और शिक्षक हैं। उन्हें डेटा स्तर के विभिन्न स्तर की आवश्यकता होती है। आप समूहों को हब पर अलग रखने के लिए उपयोग कर सकते हैं ताकि आप शिक्षकों को छात्रों और छात्रों के डेटा के लिए शिक्षकों की जानकारी नहीं भेज रहे हों।

  1. अपने हब में शामिल होने पर आप उन्हें अपनी भूमिका या किसी भिन्नता समारोह से जुड़े समूह में शामिल होने के लिए जोड़ सकते हैं।
  2. जब आप सभी ग्राहकों को भेजते हैं, तो अब आप उन ग्राहकों के समूह को भेज सकते हैं जो शिक्षक या छात्र हैं। शिक्षकों या छात्रों के लिए एक और केंद्र नहीं बना रहे हैं, वे सभी एक ही केंद्र पर हैं।

"यह बुरा है" और "ठीक है" के आपके प्रश्न पर वापस आना वास्तविक आवेदन के संदर्भ के बिना स्थापित करना मुश्किल है। मैं एक परिदृश्य के बारे में सोच नहीं सकता जहां आप Performance के अलावा कई हबों को उचित ठहरा सकते हैं।

+0

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

+0

जैसा कि उत्तर में @ एसएएम द्वारा सुझाया गया है, आप इसे कर सकते हैं और इसे यहां समझाया गया है http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#multiplehubs –

+0

I मुझे पता है, और इस तरह मैंने अपना आवेदन स्थापित किया है। मैं बस टिप्पणी कर रहा था क्योंकि आपने कहा था कि आप ऐसे परिदृश्य के बारे में नहीं सोच सकते जहां आप कई हबों को उचित ठहरा सकते हैं –

18

आप अपनी साइट पर एक कनेक्शन साझा करने वाले एकाधिक हब प्राप्त कर सकते हैं। सिग्नलआर 2.0 को एक साइनलर कनेक्शन पर एकाधिक हब्स को संभालने के लिए अपडेट किया गया था जिसमें प्रदर्शन में कोई कमी नहीं हुई थी।

सरकारी डॉक्स: http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#multiplehubs

सभी ग्राहकों को अपने सेवा ("/ signalr" या अपने कस्टम URL अगर आप एक निर्दिष्ट) के साथ एक SignalR कनेक्शन स्थापित करने के लिए एक ही URL का उपयोग करेगा, और कहा कि कनेक्शन के लिए प्रयोग किया जाता है सेवा द्वारा परिभाषित सभी हब्स।

एक ही कक्षा में सभी हब कार्यक्षमता को परिभाषित करने की तुलना में एकाधिक हब्स के लिए कोई प्रदर्शन अंतर नहीं है।