2010-08-03 16 views
5

के बारे में प्रश्न तो मैं अपनी इंटर्नशिप के लिए एक परियोजना पर काम कर रहा हूं और एक ईंट की दीवार को थोड़ा सा मारा है। दुर्भाग्यवश, केवल एक ही लोग जो मुझे पता है कि कार्यालय में मेरी मदद करने के लिए कौन योग्य है, इस समय छुट्टी पर हैं, और दुर्भाग्य से Google असुरक्षित (या मेरी खोज कौशल अपर्याप्त) है, इसलिए मैंने सोचा कि मैं यहां पूछूंगा।सी #, सर्वर, एक्सएमएल

प्रोजेक्ट मूल रूप से एक कंपनी को नकल करने के लिए सर्वर बनाता है जो कंपनी (जो फ़ोन ऐप्स बनाता है) पहले से ही है। मुझे क्या करना है, उनमें से एक ऐप मेरे सर्वर से अनुरोध भेजता है (मुझे ऐसा करने के लिए ऐप को संशोधित करना होगा, लेकिन मुझे नहीं पता), और मेरे सर्वर को एक्सएमएल प्रतिक्रिया के साथ जवाब देना है कि ऐप पहले से ही ऐप है जानता है कि कैसे प्रक्रिया करें। (मुख्य उद्देश्य यह है कि हम देख सकते हैं कि ऐप कैसे प्रतिक्रिया करता है जब असली सर्वर इसे मेरे सर्वर पर अनुकरण करके त्रुटि भेजता है।)

अब, मेरे पास पहले से ही कुछ नमूना HTTP अनुरोध हैं और उनके संबंधित XML प्रतिक्रियाएं आसान हैं , ऐप और असली सर्वर के साथ सिमुलेशन से लिया गया। ऐप सी # में लिखा गया है, और वर्तमान में वास्तविक वेब के ऑनलाइन स्थान पर HTTP वेब अनुरोध भेजता है, जो एक्सएमएल के साथ इन HTTP वेब अनुरोधों का जवाब देता है। मेरे सर्वर, हालांकि, एक ऑनलाइन स्थान नहीं होगा, इसलिए ऐप को स्थानीय होस्ट पर सॉकेट के साथ काम करने के लिए संशोधित करना होगा।

मेरे सवालों का:

1) मेरा मालिक कुछ एक्सएमएल प्रतिक्रियाओं के साथ कुछ अनुरोध संबद्ध करने के लिए एक XML फ़ाइल बनाने के लिए कहा है, लेकिन मैं पता नहीं वह क्या मतलब है या कि यह कैसे करना है। (उन्होंने कहा कि यह एक .ini फ़ाइल के साथ भी किया जा सकता है।) क्या किसी को पता है?

2) एक बार मेरे पास यह एक्सएमएल फ़ाइल है जो इन संगठनों को बना सकती है, मैं इसे अपने सर्वर में कैसे शामिल कर सकता हूं ताकि मेरा सर्वर वैध अनुरोधों की तालिका के खिलाफ प्राप्त अनुरोध की जांच कर सके और पता लगा सके कि कौन सी प्रतिक्रिया वापस भेजनी है ?

3) सॉफ़्टवेयर का उपयोग करने के लिए HTTP वेब अनुरोधों और प्रतिक्रियाओं का उपयोग करने से ऐप को कैसे संशोधित किया जा सकता है?

यदि आपके पास बेहतर उत्तर देने के लिए आपको कोई प्रश्न/स्पष्टीकरण की आवश्यकता है, तो कृपया मुझसे पूछने में संकोच न करें।

धन्यवाद!

+2

क्या आपने उसे सिर्फ स्पष्टीकरण के लिए कहा है? # 1 का मतलब बहुत सी चीजें हो सकती है। –

+3

जब आप सॉफ़्टवेयर में अपनी यात्रा शुरू करते हैं, तो इसे दिल में लें, जब भी संभव हो तो अनाज के खिलाफ न जाएं, आप समय बर्बाद कर देंगे और समय सीमा जला देंगे। एक HTTP क्लाइंट लेना और सॉकेट का उपयोग करने के लिए इसे परिवर्तित करना, ताकि आप अनाज के खिलाफ सॉकेट सर्वर का उपयोग कर सकें, यहां पर प्राकृतिक विधि आपके सर्वर को http संदर्भ में लागू करना है। इसके लिए आईआईएस और एएसएमएक्स सेवा का सबसे अधिक उपयोग करें। इससे भी आसान, मौजूदा सर्वर की प्रतिलिपि लें जो इसे चलाती है और बस इसे संशोधित करें ताकि आपके अनुरोधों के साथ सभी अनुरोधों का उत्तर दिया जा सके। –

+0

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

उत्तर

1

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

वे क्या उपयोग कर रहे हैं, इसके बारे में अधिक जानकारी के बिना, मुझे नहीं पता कि आप यहां बहुत मदद प्राप्त कर पाएंगे।

0

यदि यह क्लाइंट साबुन से संचार करता है तो अपने मालिक से पूछें, यदि ऐसा है तो बस एमएसडीएन पर जाएं और एएसएमएक्स webservice को लागू करने पर ट्यूटोरियल ढूंढें, ट्यूटोरियल का पालन करें और आपके साथ शुरुआत करने के लिए एक खोल होगा।

1

जवाब में # 3 पर सवाल उठाने:

HTTP एक प्रोटोकॉल है जो पहले से ही (सामान्य रूप से पोर्ट 80 का प्रयोग करके) एक विशिष्ट सॉकेट पर चलता है। एक इंटरनेट सॉकेट एक एंडपॉइंट है जिसका उपयोग प्रक्रियाओं के बीच डेटा को परिवहन के लिए किया जाता है। यदि आप अपना खुद का प्रोटोकॉल चलाने के लिए चाहते हैं, तो आपको एक विशिष्ट पोर्ट पर एक नई सॉकेट (टीसीपी या यूडीपी के साथ) बनाना होगा।

हालांकि आपको उनके बीच डेटा का आदान-प्रदान करने के लिए अपना खुद का ग्राहक और सर्वर बनाने की आवश्यकता होगी।

प्रारंभ करने के लिए, here एक कस्टम सॉकेट का उपयोग कर सी # में एक बहुत ही सरल क्लाइंट-सर्वर उदाहरण है।

गुड लक!

0

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

1) ऐसा लगता है कि आपके बॉस सिर्फ ऐप को पुनर्निर्माण किए बिना परीक्षण के लिए एसोसिएशन को आसानी से बदलने का एक तरीका चाहते हैं, इसलिए वह आपको उन एसोसिएशन को एक एक्सएमएल/आईएनआई फाइल में स्टोर करने के लिए कह रहा है जिसे आसानी से संशोधित किया जा सकता है। सी # में आप आसानी से एक्सएमएल और डेटासेट ऑब्जेक्ट्स के बीच जा सकते हैं, इसलिए यह छोटा होना चाहिए। मैं पहले डेटासेट में डेटा संरचना बनाउंगा और फिर xml प्रारूप को आउटपुट करने के लिए डेटासेट के GetXml विधि का उपयोग करूंगा।

2) .NET में आप कैश में ऑब्जेक्ट्स स्टोर कर सकते हैं और एक कैश निर्भरता बना सकते हैं जो एक फ़ाइल एसोसिएशन है। इस प्रकार जब भी फ़ाइल संशोधित की जाती है तो कैश शुद्ध हो जाता है। जब भी आपका प्रोग्राम अनुरोध करता है तो यह ऑब्जेक्ट को कैश से खींचता है, यदि ऑब्जेक्ट कैश में नहीं है तो आपके पास एक शर्त ब्लॉक डिस्क पर xml/ini फ़ाइल से पुनर्निर्माण करता है। मेरे पास उस कंडीशन ब्लॉक को उस फ़ंक्शन पर कॉल किया जाएगा जो उपरोक्त उल्लिखित XML प्रारूप को उस डेटासेट में लोड करता है जिसे कैश में कैश निर्भरता के साथ संग्रहीत किया जाता है।

3) यदि आप अनुप्रयोगों का परीक्षण करने की कोशिश कर रहे हैं I/o, इसे एक अलग परिवहन परत का उपयोग करने के लिए संशोधित करना एक बुरा विचार की तरह लगता है। यदि ऐप वर्तमान में अनुरोध भेजने के लिए HTTP पर काम करता है तो बस HTTP अनुरोध को रूट करें। मुझे संदेह होगा कि ऐप में शायद उस वेबस्राफ्ट के पथ को परिभाषित करने के लिए कॉन्फ़िगरेशन है जो वर्तमान में कॉल करता है, एक बार जब आप जानते हैं कि वह पथ क्या है या तो आप इसे बदल सकते हैं, या यदि यह संभव नहीं है तो सर्वर पर DNS नियम चल रहा है ऐप को अपने एप्लिकेशन के स्थान पर रूट करने के लिए। विंडोज़ पर यह मेजबान फ़ाइल में एक लाइन जोड़ने के रूप में सरल है।

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