में सिंगलेट्स के साथ काम करना मुझे एक सिंगलटन क्लास के साथ समस्या है जिसमें मैं रिमोटिंग के माध्यम से खुलासा कर रहा हूं। अपने सर्वर में मेरे पास है:नेट रीमोटिंग
TcpChannel channel = new TcpChannel(Settings.Default.RemotingPort);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemotableObject), "RemotableObject",
WellKnownObjectMode.Singleton);
RemotableObject एक सिंगलटन उद्देश्य यह है कि MarshalByRefObject विरासत है।
मेरे क्लाइंट के माध्यम से उससे कनेक्ट: के रूप में दूरस्थ चला जाता है
remoteObject = (RemotableObject)Activator.GetObject(
typeof(RemotableObject),
string.Format("tcp://{0}:{1}/RemotableObject", serverIP, serverPort));
सब कुछ काम करता है महान जहाँ तक है, लेकिन जब मैं इस तरह अपने सर्वर कोड में सिंगलटन वस्तु का उपयोग:
int someValue = RemotableObject.Instance.SomeDynamicValue;
यह
ग्राहकों की तुलना में एक अलग उदाहरण का उपयोग करता है। मैंने यह भी सत्यापित किया है कि RemotableObject में निजी कन्स्ट्रक्टर डीबगिंग के दौरान दो बार मारा जाता है।
यदि मैं अपने सर्वर कोड में रिमोटिंग के माध्यम से RemotableObject को एक उदाहरण प्राप्त करता हूं, तो वांछित व्यवहार प्राप्त कर सकता हूं, लेकिन क्या ऐसा कोई तरीका है कि मैं अपने क्लाइंट को रिमोटिंग ओवरहेड के बिना सर्वर से उसी ऑब्जेक्ट तक पहुंच सकता हूं?
यह पूरी तरह से काम किया! शीघ्र जवाब देने के लिए ध्न्यवाद! – Todd
'मेसगुरी' का मूल्य क्या होना चाहिए? मेरे टीसीपी चैनल को 'यूजर टीसीपी' कहा जाता है और मैंने उस नाम के साथ और यूरी के साथ प्रयास किया है: 'tcp: // localhost: 5000/userTcp' और दोनों मुझे कोई सेवा नहीं मिली त्रुटि प्रदान करते हैं। – moondaisy
यह 'tcp: // [ServerName] होना चाहिए: [PortNumber]/MesgUri'' tcp: // MYSERVERNAME: 5212/usersTcp' –