मुझे ओविन कैटाना का उपयोग कब करना चाहिए?


270

मैं ओविन और कटाना में नया हूं। मुझे वास्तव में नहीं मिला कि मुझे OWIN का उपयोग क्यों करना चाहिए, जबकि मैं उपयोग कर सकता हूं IIS। सरल बनाने के लिए, मेरा प्रश्न यह है: अगर मैं OWIN सीखना छोड़ देता हूं और अपनी वेबसाइटों के लिए IIS का उपयोग करता हूं तो मुझे क्या खोना चाहिए?

मैं गुगली कर गया लेकिन कोई सरल व्याख्या नहीं है। यहाँ कुछ जानकारी है , लेकिन वे कुछ शब्दजाल वाक्यांशों का उपयोग करते हैं इसलिए मैं इसे समझ नहीं पा रहा हूं।



2
मुझे आश्चर्य है कि IoT दिशा IoT से कितना प्रभावित है। वास्तव में हम एक Arduino पर IIS छड़ी नहीं कर सकते हम कर सकते हैं।
प्रहरी

जवाबों:


279

Asp.net WebApi v2 में, OWIN पाइपलाइन डिफ़ॉल्ट हो जाती है। यह अंततः किसी भी asp.net परियोजना के तहत मानक पाइपलाइन होने जा रहा है।

मैं इसे यहां लिखे जाने से बेहतर नहीं लगा सकता: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

अनुभाग ".NET (OWIN) के लिए ओपन वेब इंटरफ़ेस" OWIN के लक्ष्यों को पूरी तरह से समझाता है।

OWIN के बिना, asp.net बिट्स को जिस तरह से IIS आवेदन के साथ संचार करता है, के लिए युग्मित किया जाता है। OWIN वेब सर्वर और फ्रेमवर्क घटकों को अमूर्त करता है। इसका अर्थ है कि आपका एप्लिकेशन कोड अब OWIN इंटरफ़ेस के बारे में पता होगा, लेकिन अनुरोध परोसने वाले वेबसर्वर का नहीं।

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

दूसरा पहलू यह है कि यह एक पाइपलाइन के रूप में काम करता है।


ओविन पाइपलाइन


आप वेबसर्वर और आपके एप्लिकेशन के बीच किसी भी बिचौलिये (और जितने चाहें) को प्लग कर सकते हैं।
यह अधिक मॉड्यूलर समाधानों के लिए अनुमति देता है। आप पुनर्वितरण वाले मध्यवर्तियों को विकसित कर सकते हैं जो आपके आवेदन से / के लिए आने वाले अनुरोध / प्रतिक्रिया को प्रभावित कर सकते हैं, लेकिन इन मॉड्यूल को एप्लिकेशन कोड से अलग रखें।

इस मॉड्यूलर दृष्टिकोण के लाभों के लिए खुद को मनाने के लिए, OWIN के लिए उपलब्ध नगेट पैकेजों पर एक नज़र डालें: http://www.nuget.org/packages?q=owin

इनमें से बहुत सारे पैकेज पहले कोर asp.net कार्यक्षमता थे, और मिडलवेयर के रूप में निकाले गए हैं।
उदाहरण के लिए, विभिन्न OAuth प्रदाताओं का उपयोग करके लॉगिन करने के लिए समर्थन जोड़ना एक बुनियादी ढांचा चिंता का विषय बन गया है (एक मिडलवेयर) और अब आपको अपने एप्लिकेशन कोड का हिस्सा बनने की आवश्यकता नहीं है:

या यदि आप अपनी वेबसाइट से सभी चित्रों को स्वचालित रूप से प्यारा बिल्ली के चित्रों द्वारा बदलना चाहते हैं, तो आप ऐसा पारदर्शी रूप से भी कर सकते हैं:

https://github.com/serbrech/Owin.Catify

संपादित करें: यह अब नगेट पैकेज के रूप में उपलब्ध है: Owin.Catify !


आपका उत्तर निश्चित रूप से अच्छा है क्योंकि इसे उखाड़ा गया है, लेकिन इसका पता लगाना मेरे लिए कठिन है।
सैयद मोर्तेजा मौसवी

5
मैं इसे बेहतर कैसे बना सकता हूं? तुम क्या नहीं समझते?
स्टीफन

1
जबकि OWIN में बेन्फ़िट्स होते हैं, इसलिए डिबग करना कठिन लगता है क्योंकि निष्पादन प्रवाह प्रभावी रूप से मिडलवेयर से मिडलवेयर तक 'जंप' करेगा। हर एक संभावित तरीके से प्रतिक्रिया बदल रहा है। विजुअल स्टूडियो के अटैच डिबगर प्रवाह का पालन करने में सक्षम नहीं लगते हैं। और जब कोई अपवाद होता है (वेब ​​अनुप्रयोग पर), तो आपको बस 200 ओके प्रतिक्रिया के साथ एक रिक्त पृष्ठ मिलेगा। विंडोज इवेंट लॉग के अलावा कहीं भी कोई त्रुटि नहीं है।
सिमबोलो

7
मुझे वेबलॉग .asp.net / pglavich / owin-katana- and- getting-started उपयोगी पर स्पष्टीकरण मिला । यह IIS से आपके आवेदन को कम करने और System.Web असेंबली पर निर्भरता का एक तरीका है। HTTP पाइपलाइन में उन घटकों की मात्रा को कम करना, जिससे ऐप हल्का हो।
टेरेंस

2
मुझे यह जोड़ना होगा कि मेरे वर्तमान परिवेश में, कुछ टीमें WebApi का उपयोग करती हैं और कुछ नैन्सी का उपयोग करते हैं। चूंकि दोनों OWIN के शीर्ष पर बैठे हैं, हम एप्टी की हैंडलिंग या स्टेटलेस ऑथेंटिकेशन जैसे बिचौलियों को स्वतंत्र रूप से फ्रेमवर्क से साझा कर सकते हैं। हमने टीम को यह चुनने दिया कि उन्हें सबसे ज्यादा क्या सूट करता है। यही OWIN का सच्चा लाभ है।
स्टीफन

209
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

हाँ य़ह सही हैं। OWIN एक इंटरफ़ेस है और Katana Microsoft द्वारा OWIN इंटरफ़ेस का कार्यान्वयन है । इसलिए हम इन 2 शब्दों (OWIN / KATANA) को एक साथ सुनते हैं और कई बार हम इन 2 शब्दों के बीच के अंतर के बारे में भ्रमित हो जाते हैं। तो, कटाना Microsoft का OWIN इंटरफ़ेस का कार्यान्वयन है। कहते हैं कि BIG-BOSS नाम की एक और कंपनी है जो OWIN का अपना कार्यान्वयन बनाना चाहते थे, वे ऐसा कर सकते हैं और अपने कार्यान्वयन को 'BATANA' नाम दे सकते हैं और OWIN / BATANA जैसे वाक्यांशों का विज्ञापन कर सकते हैं।

तो, क्यों OWIN !!!

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

फिर, उस देश की सरकार वाहन निर्माताओं के लिए एक विनिर्देशन लेकर आई। विनिर्देश निम्नानुसार है:

  1. एक वाहन में 4 पहिये होने चाहिए
  2. वाहन में स्टीयरिंग होना चाहिए।
  3. वाहन में हेडलाइट और सिग्नल लाइट होनी चाहिए।

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

उपर्युक्त उदाहरण के आधार पर, हम कह सकते हैं कि हमारा ASP.NET वेब एप्लिकेशन System.Web असेंबली का उपयोग करता है जो एक ट्रक (जैसे ट्रक) से भरी हुई है और यदि हम थोड़ा वेब अनुप्रयोग बनाना चाहते हैं, जहां हमारा उद्देश्य केवल कुछ फ़ाइलों की सेवा करना है अनुरोधों के एक छोटे से सेट पर, हम उस भारी System.Web असेंबली (ट्रक) का उपयोग करने के लिए बाध्य हैं। अब, OWIN दिखाता है। OWIN विनिर्देशन का एक सेट है (हम इसे इंटरफ़ेस कह सकते हैं) जो एक सर्वर को परिभाषित करता है। उस विनिर्देश के आधार पर, कोई व्यक्ति (वाहन निर्माता की तरह) विशिष्ट समस्या डोमेन / एप्लिकेशन की जरूरतों के आधार पर विभिन्न प्रकार के सर्वर बना सकता है। Microsoft ने अपना स्वयं का कार्यान्वयन OWIN के लिए किया जिसका नाम कटाना रखा गया जो वेब एपीआई की सेवा कर सकता है। जैसा कि WebAPI एक हल्के वजन की तकनीक है, जिसे पूर्ण विकसित सिस्टम की जरूरत नहीं है।

अब, यदि आप पूछें, ' क्या मुझे इसकी आवश्यकता है'? उत्तर है, 'यह आपके प्रदर्शन की आवश्यकता पर निर्भर करता है'। अगर आप मूवी देखने जाने के लिए भी अपने ट्रक को चलाने से गुरेज नहीं करते हैं, तो, शायद आपको OWIN की जरूरत नहीं है। लेकिन अगर आपको लगता है कि, एक हल्के वजन की सेडान कार आपको एक शहर के भीतर, छोटी दूरी पर, फिल्म देखने के लिए चाहिए .. तो .. हाँ, आप जाँच कर सकते हैं कि बाज़ार में उपलब्ध ओविन का क्या कार्यान्वयन है। कटाना OWIN के कार्यान्वयन में से एक है, इसलिए आप जांच कर सकते हैं कि कटाना क्या पेशकश करता है। केवल कटाना ही नहीं, यदि कोई अन्य कंपनी विशिष्ट डोमेन के अनुसार OWIN लागू करती है (उदाहरण के लिए, चिकित्सा उपकरणों के लिए एक सर्वर जो नवीनतम चिकित्सा जानकारी डाउनलोड करेगा) और यदि आप एक डॉक्टर हैं, तो शायद, आप OWIN के उस कार्यान्वयन की जांच कर सकते हैं। इसके अलावा, आप स्वयं किसी भी विशिष्ट आला को लक्षित करते हुए अपना स्वयं का कार्यान्वयन बना सकते हैं।

वेब एप्लिकेशन के संदर्भ में, यदि आप एक साधारण वेब डेवलपर हैं, तो अपने ग्राहकों के लिए कस्टम वेबसाइट विकसित करना, शायद, आपको OWIN के कस्टम कार्यान्वयन के बारे में चिंता करने की आवश्यकता नहीं है, क्योंकि IIS आपको संतुलित तरीके से काम करेगा। यदि आप एक वेब एपीआई परियोजना का निर्माण करते हैं, तो आपको विज़न स्टूडियो -> नई परियोजना से तैयार कटाना आधारित टेम्पलेट मिल जाएगा, इसलिए आपको कटाना विशिष्ट तकनीकों को सीखने के अलावा किसी अन्य चीज के बारे में चिंता करने की आवश्यकता नहीं होगी। इस समय, कटान पूरी तरह से ASP.NET MVC के लिए IIS की आवश्यकता को बदलने के लिए परिपक्व नहीं है, लेकिन शायद, भविष्य में यह होगा।

फिर जब मुझे अपने स्वयं के कार्यान्वयन को लिखने की आवश्यकता हो सकती है?

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

  1. सूची प्राप्त करें
  2. DELETE इन्वेंटरी आईडी = 4
  3. इन्वेंटरी आईडी = ५ पर भरें

बस इतना ही। और कुछ नहीं। तो, आपको इस छोटे से कार्य के लिए पूर्ण IIS वेब सर्वर की आवश्यकता क्यों होगी? आप उस मामले में अपना स्वयं का OWIN कार्यान्वयन बना सकते हैं। (शायद, आप इसके लिए कटाना का उपयोग करेंगे)

ठीक है, तो मैं समझ गया कि, अगर मैं एक ASP.NET MVC वेबसाइट बनाना चाहता हूं, तो मेरे पास IIS को बदलने का विकल्प नहीं है, तो मुझे इस समय कटाना के बारे में जानने की क्या आवश्यकता है?

उत्तर: भले ही काना आईआईएस की जरूरत को पूरा करने के लिए परिपक्व नहीं है, ताकि आप अपनी ASP.NET MVC वेबसाइट को सीधे कटाना में होस्ट कर सकें, लेकिन कटाना ने OWIN के कई शांत इंटरफेस को लागू किया ताकि आप उन विशेषताओं का उपयोग कर लाभ उठा सकें बगल में। उदाहरण के लिए, अपने उपयोगकर्ताओं को फेसबुक, Google, ट्विटर आदि का उपयोग करके लॉगिन करने की अनुमति देना पहले बहुत आसान नहीं था। कटाना आपको कई हुक देता है (एक मध्य-वेयर के रूप में) ताकि आप कटाना को बाहरी सोशल मीडिया आधारित प्रमाणीकरण का ध्यान रखे बिना आसानी से प्लंबिंग कोड लिख सकें। कटाना का उपयोग करने के कई अन्य लाभ हैं जो आपको इस तकनीक का उपयोग शुरू करने पर पता चल सकता है।


1
मैं यह नहीं कहूंगा कि OWIN प्रति कहना एक इंटरफ़ेस है, यह एक मानक है, एक प्रोटोकॉल जिस तरह से मेजबान के लिए एक आवेदन वार्ता को मानकीकृत करता है। लेकिन यह सटीक रूप से महत्वपूर्ण है कि कटाना केवल उस मानक का कार्यान्वयन है जिसे Microsoft द्वारा विकसित और बनाए रखा गया है। अन्य कार्यान्वयन यहाँ सूचीबद्ध हैं: github.com/owin/owin/wiki/ इम्प्लीमेंटेशन
स्टीफन

1
थोड़ा भ्रमित करते हुए जब आप कहते हैं कि वाहन के लिए विनिर्देशन '4 व्हील' है और फिर कोई व्यक्ति 18 पहिया वाहन बनाता है ... तो क्या यह विनिर्देश फिट नहीं होता है ...? या क्या मैं कुछ न कुछ भूल रहा हूं। अच्छा सादृश्य वैसे भी। यह समझना आसान बना दिया
कुरासा

1
@ स्टेफ़ेन: ठीक है, यह सिर्फ एक इंटरफ़ेस की तरह नहीं हो सकता है, मैंने एक उच्च स्तर का विचार देने की कोशिश की ताकि कोई ओ'विन और कटाना के बीच के तकनीकी झगड़ों से बहुत अधिक प्रभावित हुए बिना समझ सके।
इमरान हुसैन

1
"भले ही कटाना IIS की ज़रूरत को पूरा करने के लिए परिपक्व नहीं है, ताकि आप सीधे अपने ASP.NET MVC वेबसाइट को कटाना पर होस्ट कर सकें" ऐसा लगता है कि कटाना 1.0 होने के बाद IIS महत्वपूर्ण नहीं है। नहीं, नहीं, यह सही नहीं है। Microsoft के पास Microsoft.Owin.Host.IIS उपलब्ध है, जो वेब ऐप्स + कटाना को सीधे IIS पर (बिना System.Web के) होस्ट करने की अनुमति देता है। Microsoft प्लेटफ़ॉर्म पर ASP.NET अनुप्रयोगों के लिए IIS अभी भी एक प्रमुख घटक है।
लेक्स ली

2
यह बहुत अच्छा होगा, अगर आप मुझे समझने में मदद कर सकते हैं -what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
अरिंदम नायक

47

उस उत्तर का एक सरल संस्करण यह है कि कटाना पूरी तरह से System.Web असेंबली और पुरानी ASP.NET पाइपलाइन को बदलने के लिए गोंग है, जो आपको दोनों बेहतर लचीलापन देता है (इसे अधिक परिदृश्यों में उपयोग करें और केवल उन हिस्सों का उपयोग करें जो आपको पसंद हैं) और प्रदर्शन।

इसलिए सभी को इसके विकास को देखना चाहिए और जब यह अंतिम रूप से पूरा हो जाए तो स्विच करने के लिए तैयार रहना चाहिए।

नीचे एक आरेख है जिसे मैंने विवरण में भरने के लिए आकर्षित किया है जिसे Microsoft इस लेख में शामिल करने में विफल रहता है ।

यहां छवि विवरण दर्ज करें

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

मैं अब Jexus वेब सर्वर लेखक के साथ काम कर रहा हूं कि हम OWIN / कटाना और Jexus को पाटने के लिए एक होस्ट एडेप्टर कैसे लिख सकते हैं। हमें यह जानकर बहुत खुशी हुई कि OWIN लचीला और उच्च अनुकूलन योग्य है।

संदर्भ: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/


तो मैं आपको यह जवाब देता हूं कि "कटाना पूरी तरह से System.Web असेंबली और पुरानी ASP.NET पाइपलाइन को बदलने के लिए गोंग है"। इसका मतलब यह है कि यह आपके आरेख में सभी सर्वर एडेप्टर को ऊपर से बदल सकता है, या शायद host.systemweb?
नेटफेड

@netfed दुर्भाग्य से OWIN खुद करता है और अब ASP.NET Core कार्यभार संभालता है। यह प्रश्न और उत्तर सभी पुराने हैं।
लेक्स ली

अहा !! तो Asp.net कोर में ओविन क्षमता है? या Asp.net कोर मॉड्यूल के संग्रह के रूप में काम करता है, जहां आप केवल उन मॉड्यूल को लागू कर सकते हैं जिनकी आपको आवश्यकता है, और System.web में निर्मित कार्यों के एक बड़े संग्रह का उपयोग करने के लिए नहीं है?
नेटफेड

2
@netfed, OWIN की मृत्यु हो जाती है (मेरे मोबाइल कीबोर्ड ने मेरे शब्द बदल दिए)। ASP.NET Core यद्यपि मिडलवेयर दृष्टिकोण रखता है, और आप इसके घटकों को अपने पसंद के अनुसार इकट्ठा कर सकते हैं, और नहीं System.Web
लेक्स ली

यह सब निष्कर्ष निकाला है :) स्पष्टीकरण के लिए धन्यवाद।
नेटफेड

15

IIS का उपयोग करते समय मुझे OWIN का उपयोग क्यों करना चाहिए?

OWIN को उन वेब सर्वरों से हटाने के लिए डिज़ाइन किया गया है, जिनके अंतर्गत आप काम करते हैं। यह मिश्रण चौखटे और सर्वर के लिए अनुप्रयोगों को हल्का और पोर्टेबल बना सकता है।

और कटाना Microsoft का OWIN घटकों का कार्यान्वयन है।

पिछले कुछ वर्षों से Microsoft वेब टूल को अधिक चुस्त और प्रतिक्रियाशील बना रहा है क्योंकि उनकी योजना आगे बढ़ रही है। एक उदाहरण के लिए, ASP.Net MVC और ASP.Net वेब API का विकास। वे System.Web dll पर निर्भर नहीं होते हैं जो एक बड़ा बोझ है जो उन्हें लगता है कि अब मुझे लगता है। फायदा यह है कि दोनों घटनाक्रमों को समयबद्ध तरीके से ठीक किया जा सकता है और चक्र पहले से कहीं अधिक तेज है। इसके अलावा अब डेवलपर्स इन अनुप्रयोगों को कस्टम OWIN होस्ट या कटाना पर तैनात कर सकते हैं, जो OWIN कार्यान्वयन का एक संदर्भ है।

आखिर बात क्या है?

Microsoft ने एक परियोजना जारी की है जो IIS के शीर्ष पर एक हल्के OWIN आधारित वेब होस्ट है, जिसे `Helios कहा जाता है। लक्ष्य कुछ स्वतंत्र छोटे घटकों को प्रदान करके ASP.NET/IIS संबंध से बचना है, जो वेब-होस्ट पर स्वतंत्र रूप से चलने वाले स्थापित और प्रबंधित किए जा सकते हैं, जो OWIN विनिर्देशों को लागू करता है।

मुख्य कारणों में से एक प्रदर्शन-कारक है। Helios मानक ASP.Net अनुप्रयोग की तुलना में 2x-3x अधिक थ्रूपुट प्राप्त करने में सक्षम होगा। मेमोरी की खपत के मामले में, Helios System.Web dll की तुलना में बहुत बेहतर है। एक मानक बेंचमार्क में हेलिओस आर्किटेक्चर ने एक मानक ASP.Net एप्लिकेशन की तुलना में लगभग 1GB कम ओवरहेड के साथ 50000 समवर्ती अनुरोधों को प्राप्त करने के लिए एक नमूना आवेदन की अनुमति दी।


1
आपको यह पोस्ट मददगार लग सकती है। simple-talk.com/dotnet/.net-framework/…
nznoor

0

OWIN वेब एप्लिकेशन और होस्टिंग प्लेटफ़ॉर्म के बीच एक अमूर्त है। यदि आप OWIN का उपयोग करके अपना वेब एप्लिकेशन लिखते हैं, तो आप IIS से बंधे नहीं हैं, आप चाहें तो दूसरे होस्ट का उपयोग कर सकते हैं।

आपने पूछा कि IIS के बजाय OWIN का उपयोग क्यों करें, लेकिन ये एक दूसरे के विकल्प नहीं हैं। OWIN IIS और आपके आवेदन के बीच बैठता है ताकि आप अपने आवेदन को फिर से लिखे बिना IIS को स्विच आउट कर सकें।

आप इस पृष्ठ को भी देखना पसंद कर सकते हैं https://github.com/Bikeman868/OwinFramework/wiki/OWIN

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.