2009-11-23 11 views
27

System.Net नाम स्थान में, वहाँ इस तरह के रूप में इसी तरह नाम के साथ बहुत सारे अलग अलग वर्गों, कर रहे हैं मुख्य हैं जिनके बारे में मैं उत्सुक हूं।.NET: WebBrowser, WebClient, WebRequest, HTTPWebRequest ... ARGH!</p> <ul> <li>WebBrowser और WebClient</li> <li>WebRequest और HTTPWebRequest</li> <li>WebResponse और HttpWebResponse</li> </ul> <p>उन:

प्रत्येक व्यक्ति का कार्य क्या है? वे एक दूसरे से अलग कैसे हैं?

इसके अलावा, आप किस मामले में उपयोग करेंगे?

उत्तर

41

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

HttpWebRequest एक ठोस वर्ग है जो आपको HTTP पर किसी भी प्रकार की फ़ाइल कोड में अनुरोध करने की अनुमति देता है। आप आमतौर पर इसे बाइट्स की धारा के रूप में प्राप्त करते हैं। इसके बाद आप इसके साथ क्या करते हैं आपके आवेदन पर निर्भर है।

HttpWebResponse आपको वेब सर्वर से प्रतिक्रिया को संसाधित करने की अनुमति देता है जिसे पहले HttpWebRequest का उपयोग करने का अनुरोध किया गया था।

WebRequest और WebResponse सार आधार वर्ग कि HttpWebRequest और HttpWebResponse से विरासत हैं। आप इन्हें सीधे नहीं बना सकते हैं। इनमें से प्राप्त अन्य वर्गों में एफटीपी और फाइल कक्षाएं शामिल हैं।

वेब क्लाइंट मैंने हमेशा एक अच्छा सहायक वर्ग के रूप में देखा है जो उदाहरण के लिए, वेब यूआरएल से फ़ाइल डाउनलोड या अपलोड करने के लिए सरल तरीके प्रदान करता है। (उदाहरण के लिए डाउनलोडफाइल और डाउनलोडस्ट्रिंग विधियों)। मैंने सुना है कि यह वास्तव में कुछ तरीकों के लिए दृश्यों के पीछे HttpWebRequest/HttpWebResponse का उपयोग करता है।

यदि आपको वेब अनुरोधों और प्रतिक्रियाओं पर अधिक बढ़िया दाग नियंत्रण की आवश्यकता है, तो HttpWebRequest/HttpWebResponse शायद जाने का तरीका है। अन्यथा वेब क्लाइंट आमतौर पर सरल होता है और नौकरी करेगा।

+0

** बोल्ड ** ... :) जेके, लेकिन धन्यवाद! –

+0

आप वास्तव में सही हैं, किया। क्या आप वास्तव में 12 हैं? आप अपनी उम्र से 3 गुना अधिक लोगों की तुलना में अधिक स्पष्ट रूप से लिखते हैं! StackOverflow पर युवा लोगों को देखना बहुत अच्छा है। यदि आप बाद में प्रोग्रामर बनना चाहते हैं तो आप यहां ** अच्छी ** जानकारी की एक बड़ी राशि सीखेंगे। बोल्ड के बारे में – Ash

+0

@ एश लॉल, लेकिन हाँ, मैं 12 हूँ :)। धन्यवाद! –

2

वेबरक्वैस्ट और वेब रेस्पॉन्स अमूर्त कक्षाएं हैं। HTTPWebRequest और HTTPWebResponse उनके कार्यान्वयन हैं।

7

मुझे किसी भी System.Net.WebBrowser के बारे में पता नहीं है, लेकिन वेब क्लाइंट मूल रूप से एक कक्षा है जो आपको वेब से स्मृति या यहां तक ​​कि सीधे फ़ाइल में फ़ाइलों को आसानी से डाउनलोड करने (एचटीएमएल पेज सहित) डाउनलोड करने देता है। एक मूल कोड नमूना इस तरह दिखता है:

string html; 
using (var wc = new WebClient()) 
{ 
    html = wc.DownloadString("http://stackoverflow.com/questions/1780679/"); 
} 

आप वेब क्लाइंट के साथ बहुत कुछ कर सकते हैं, लेकिन कुछ सीमाएं हैं। यदि आपको कुछ गंभीर वेब स्क्रैपिंग करने की आवश्यकता है, तो आपको निम्न स्तर प्राप्त करने की आवश्यकता होगी। यही वह जगह है जहां HttpWebRequest/HttpWebResponse आते हैं। आप किसी भी अनुक्रम में, सामान्य वेब ब्राउज़र भेज सकते हैं, कोई भी अनुरोध भेजने के लिए उनका उपयोग कर सकते हैं। उदाहरण के लिए, आपको उस पृष्ठ का अनुरोध करने से पहले आपको किसी वेब साइट से प्रमाणित करने की आवश्यकता हो सकती है, और वेब क्लाइंट ऐसा करने में सक्षम नहीं हो सकता है। HttpWebRequest होगा।

अब, एक और विकल्प है। System.Windows.Forms.WebBrowser एक नियंत्रण एक फ़ॉर्म पर रखने के लिए डिज़ाइन किया गया है। यह मूल रूप से इंटरनेट एक्सप्लोरर में इस्तेमाल किए गए इंजन को वेब ब्राउज़र की सभी क्षमताओं को प्रदान करने के लिए लपेटता है। सामान्य स्क्रैपिंग के लिए आपको इसका सावधानी बरतने की ज़रूरत है: यह पोर्टेबल नहीं है (मोनो के लिए बुरा), बहुत सारे संसाधनों का उपयोग करता है, एक पूर्ण ब्राउज़र चलाने के समान सुरक्षा समस्याएं होती हैं, और साइड इफेक्ट्स जैसे संभावित रूप से पॉपअप विंडो लीक करना पड़ता है। नियंत्रण किसी विशिष्ट ज्ञात वेब संसाधन से कनेक्ट करने के लिए किसी रूप में सबसे अच्छा उपयोग किया जाता है। उदाहरण के लिए, आपके पास बिक्री के लिए एक विंडोज फॉर्म ऐप हो सकता है, और वेब ऐप जहां आप इसे डाउनलोड के लिए बेचते हैं। आप एक WebBrowser नियंत्रण प्रदान कर सकते हैं जो इस वेबसाइट पर कुछ पेज दिखाता है जो विशेष रूप से आपके ऐप में देखने के लिए लक्षित हैं जो उपयोगकर्ताओं को इन-ऐप अपग्रेड खरीदने की अनुमति देता है।

0

वेब क्लाइंट HTML पृष्ठ लाने के लिए काफी साफ तरीका है। प्रतिक्रिया स्ट्रिंग डाउनलोड करने के लिए कोड स्निपेट यहां दिया गया है।

string getHtmlPageUsingWC(string strQuery, System.Net.WebProxy proxy = null) 
    { 
     string strResponse = String.Empty; 
     using (WebClient wc = new WebClient()) 
     { 
      wc.Encoding = Encoding.UTF8; 
      IWebProxy wp = WebRequest.DefaultWebProxy; 
      wp.Credentials = CredentialCache.DefaultCredentials; 
      wc.Proxy = wp; 
      wc.Headers.Add("Accept-Language:en"); 

      NameValueCollection nvc = new NameValueCollection(); 
      nvc.Add("q", strQuery); 

      wc.QueryString.Add(nvc); 

      try 
      { 
       strResponse = wc.DownloadString(m_strURL); 
      } 
      catch (Exception ex) 
      { 
       strResponse = "Request Declined: " + ex.Message; 
       Console.WriteLine(ex.Message); 
      } 
     } 

     return strResponse; 
    }