/ / नेटवर्क प्रोग्रामिंग निम्न स्तर या कक्षा अमूर्तता? - c #, .net, नेटवर्क-प्रोग्रामिंग, विनसॉक, सॉकेट

नेटवर्क प्रोग्रामिंग निम्न स्तर या कक्षा सार तत्व? - सी #, नेट, नेटवर्क प्रोग्रामिंग, विंसॉक, सॉकेट

मैं नेटवर्क के विषय पर बहुत सारे प्रश्न देखता हूंप्रोग्रामिंग। सभी सवालों और जवाबों के बावजूद मुझे नहीं पता कि कौन सा तरीका शुरू करना सबसे अच्छा है। क्या यह औसत स्तर से शुरू करना बेहतर है, या तुरंत .NET C # में काम करना है, बिना विवरण के नीचे जाना? लिनक्स में Winsock या BSD सॉकेट प्रोग्रामिंग के साथ जाना बेहतर है?

उत्तर:

उत्तर № 1 के लिए 1

आप अभी भी निम्न स्तर की टीसीपी या यूडीपी प्रोग्रामिंग कर सकते हैंC # में, इसलिए उस बिंदु पर यह वास्तव में केवल एक पसंद का विषय है कि क्या आप C, C #, आदि में नेटवर्क कोड लिखना चाहते हैं ... यदि आप जो कुछ करने की कोशिश कर रहे हैं वह यह है कि नेटवर्क कोड कैसे लिखना है, तो मैं इस पर विचार करूंगा। एक व्यक्तिगत पसंद की भाषा अधिक है क्योंकि अंतर्निहित नेटवर्क अवधारणाएं समान हैं।


उत्तर № 2 के लिए 1

.NET C #

आपके पास:

  • टीसीपी, यूडीपी आदि के साथ काम करने के लिए निम्न स्तर का एपीआई
  • .NET रिमोटिंग
  • WCF (http, tcp, नामित पाइप, MSMQ)

मैं अंतिम विकल्प की सिफारिश करूंगा लेकिन इस बात पर निर्भर करता है कि आप क्या सीखने की कोशिश कर रहे हैं: वितरित ऐप्स या निम्न स्तर के सॉकेट API की नॉटी ग्रिटि का निर्माण करना।


उत्तर № 3 के लिए 1

यह सब आपके मौजूदा प्रोग्रामिंग कौशल पर निर्भर करता है। मैं निचले स्तरों से शुरू नहीं करूंगा जैसे कि Socket वर्ग (या TcpClient/UdpClient) अतुल्यकालिक प्रोग्रामिंग की कम से कम बुनियादी समझ के बिना।

सॉकेट प्रोग्रामिंग से शुरू होने वाले बहुत से लोग रीड विधि ब्लॉक के बाद से रीडिंग के लिए एक अलग थ्रेड लॉन्च करते हैं। यह है बहुत समस्या को हल करने का कोई तरीका नहीं, खासकर सर्वर में। BeingRead / EndRead जाने का रास्ता है।

अगला ऊपर एक हस्तांतरण प्रोटोकॉल डिज़ाइन कर रहा है क्योंकि tcn की गारंटी नहीं है कि पूरा संदेश एक पर दिया गया है। यह केवल गारंटी देता है कि आपके संदेश सही क्रम में आए।

सॉकेट प्रोग्रामिंग के साथ अगली बड़ी बात यह है कि आने वाले डेटा को कैसे संभालना है। एक नौसिखिया गलती यह है कि तार अनुप्रयोगों को शुरू करना है जिसके परिणामस्वरूप सर्वर अनुप्रयोगों में बहुत अधिक मेमोरी का उपयोग होगा। उपयोग byte[] आने वाले डेटा को प्रबंधित करने के लिए बफ़र्स और एक बफर पूल (फ्लाईवेट पैटर्न) (यदि आपको एक अच्छी तरह से डिज़ाइन किया गया प्रोटोकॉल है तो एक आसान काम होना चाहिए)।

जैसा कि आप देख सकते हैं, यह "बिना किसी पूर्व अनुभव के साथ लेने के लिए काफी बड़ा काम है। डब्ल्यूसीएफ एक बेहतर विकल्प है क्योंकि यह आपके लिए अधिकांश सामान को संभालता है।