Asp.net वेब साइट या asp.net वेब अनुप्रयोग?




12 Answers

वेब साइट है जो आप आईएसएएस जैसे एएसपी.नेट वेब सर्वर पर तैनात करते हैं। बस फ़ाइलों और फ़ोल्डरों का एक गुच्छा। वेब साइट में कुछ भी नहीं है जो आपको विज़ुअल स्टूडियो (कोई प्रोजेक्ट फाइल नहीं है) के साथ संबंध करता है कोड-पीढ़ी और वेब पेजों का संकलन (जैसे .aspx, .ascx, .master) रनटाइम पर गतिशील रूप से किया जाता है , और इन फ़ाइलों में परिवर्तनों को ढांचे द्वारा पता लगाया जाता है और स्वचालित रूप से पुन: संकलित किया जाता है आप कोड डाल सकते हैं जिसे आप विशेष ऐपसीडीओ फ़ोल्डर में पृष्ठों के बीच साझा करना चाहते हैं, या आप इसे पहले से संकलित कर सकते हैं और बिन फ़ोल्डर में विधानसभा डाल सकते हैं।

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

App_Code बनाम बिन

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

कोड के पीछे

यह विषय .aspx और .ascx फ़ाइलों के लिए विशिष्ट है। यह विषय नए एप्लिकेशन फ़्रेमवर्क जैसे एएसपी.नेट एमवीसी और एएसपी.नेट वेब पेजों में कम-से-कम प्रासंगिक है, जो कोडबीहिंड फाइलों का इस्तेमाल नहीं करते हैं।

सभी कोड फ़ाइलों को एक एकल असेंबली में संकलित करके, .aspx पृष्ठों और .ascx नियंत्रणों के codebehind फ़ाइलें, वेब अनुप्रयोगों में आपको हर थोड़ा बदलाव के लिए पुन: निर्माण करना होगा, और आप लाइव परिवर्तन नहीं कर सकते यह विकास के दौरान एक वास्तविक दर्द हो सकता है, क्योंकि परिवर्तनों को देखने के लिए आपको पुन: निर्माण करना पड़ता है, जबकि वेब साइट परिवर्तनों के साथ रनटाइम में पता चलता है और पृष्ठों / नियंत्रणों को स्वचालित रूप से पुनः कंपाइल किया जाता है।

रनटाइम होने से कोडबेहिंड असेंबलियों का प्रबंधन आपके लिए कम काम है, क्योंकि आपको पृष्ठों को देने / अनन्य नामों को नियंत्रित करने, या उन्हें अलग नामों में व्यवस्थित करने की चिंता करने की ज़रूरत नहीं है।

मैं नहीं कह रहा हूं कि कोड फाइलों को तैनात करना हमेशा एक अच्छा विचार है (विशेष रूप से साझा की गई कोड फ़ाइलों के मामले में नहीं), लेकिन कोडबीफिंक फ़ाइलों में केवल ऐसे कोड शामिल होने चाहिए जो UI विशिष्ट कार्य, वायर-अप इवेंट हैंडलर आदि। आपका एप्लिकेशन होना चाहिए स्तरित ताकि महत्वपूर्ण कोड हमेशा बिन फ़ोल्डर में समाप्त हो जाए अगर ऐसा मामला है तो कोडबेहिन्द फाइलों को तैनात करना हानिकारक नहीं माना जाना चाहिए।

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

इसके अलावा, वेब अनुप्रयोगों में आपको पेज / नियंत्रण में त्रुटि का पता नहीं मिलता है क्योंकि कंपाइलर केवल आपके कोडबीहिंड क्लासेस को संकलित करता है और मार्कअप कोड नहीं (एमवीसी में आप इसे एमवीसीबिइल्ड वीव्स विकल्प का उपयोग करके ठीक कर सकते हैं), जो रनटाइम पर संकलित होता है

दृश्य स्टूडियो

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

दृश्य स्टूडियो 2010 में एक और अच्छी सुविधा पेश की गई है Web.config रूपांतरण यह वेब साइट्स में भी उपलब्ध नहीं है अब वीएस 2013 में वेब साइट्स के साथ काम करता है

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

एक एमवीसी वेब अनुप्रयोग प्रोजेक्ट में आपके पास सामान्य कार्यों के लिए अतिरिक्त कमांड और डायलॉग हैं, जैसे 'ऐड व्यू', 'गॉ ऑन व्यू', 'कंट्रोलर जोड़ें' आदि। ये किसी एमवीसी वेब साइट में उपलब्ध नहीं हैं।

यदि आप IIS एक्सप्रेस को विकास सर्वर के रूप में उपयोग करते हैं, तो वेब साइट्स में आप आभासी निर्देशिका जोड़ सकते हैं। यह विकल्प वेब एप्लीकेशन में उपलब्ध नहीं है।

NuGet पैकेज पुनर्स्थापना वेब साइट पर काम नहीं करता, आपको मैन्युअल रूप से packages.config पर सूचीबद्ध संकुल को स्थापित करना होगा पैकेज पुनर्स्थापना अब वेब साइट्स के साथ काम करता है जो NuGet 2.7 शुरू करता है

asp.net .net visual-studio projects-and-solutions

जब मैं विजुअल स्टूडियो में एक नया एएसपी.नेट प्रोजेक्ट शुरू करता हूं, तो मैं एक asp.net वेब अनुप्रयोग बना सकता हूं या मैं एक asp.net वेब साइट बना सकता हूँ।

एएसपी.नेट वेब अनुप्रयोग और एएसपी.नेट वेब साइट के बीच अंतर क्या है? मैं एक दूसरे से क्यों चुनूं?

क्या मैं जिस दृश्य स्टूडियो का उपयोग कर रहा हूं उस पर आधारित अलग-अलग जवाब है?




जब तक आप गतिशील रूप से संकलित प्रोजेक्ट के लिए एक विशिष्ट आवश्यकता नहीं है , तब तक किसी वेब साइट प्रोजेक्ट का उपयोग न करें

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

मुझे सच में नहीं पता है कि वे दर्द-उत्प्रेरण, विवेक-निवारण, उत्पादकता कार्बूनल वेब साइट प्रोजेक्ट प्रकार के लिए विज़ुअल स्टूडियो 2005 में वेब अनुप्रयोगों को क्यों गिराए।




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

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

वेब अनुप्रयोग मॉडल में गतिशील संकलन नहीं है, लेकिन आप उन चीजों पर नियंत्रण हासिल करते हैं जिन्हें मैंने उल्लेख किया है।

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

अधिक विस्तृत विश्लेषण में पाया जा सकता है:




यह आप क्या विकसित कर रहे हैं पर निर्भर करता है

एक सामग्री उन्मुख वेबसाइट पर इसकी सामग्री अक्सर बदलती रहती है और वेबसाइट इसके लिए बेहतर होती है।

एक ऐप के पास डाटाबेस में संग्रहीत डाटा और इसके पन्नों और कोड बदलने की संभावना कम होती है। इस मामले में यह बेहतर है कि वेब अनुप्रयोग तैयार किया जाए, जहां विधानसभाओं की तैनाती बहुत अधिक नियंत्रित होती है और इकाई परीक्षण के लिए बेहतर समर्थन होता है।




प्रमुख अंतर में से एक यह है कि वेबसाइटें गतिशील रूप से संकलित करती हैं और इन-मक्खी असेंबलियों को बनाते हैं। वेब अनुप्रयोगों एक बड़े विधानसभा में संकलित

दोनों के बीच का अंतर दृश्य स्टूडियो 2008 में समाप्त हो गया है।




एप्लिकेशन आमतौर पर तैनाती से पहले संकलित किए जाते हैं, जहां वेबसाइट ऐपकोड डायरेक्टरी का उपयोग करती है। जब ऐप कोड फ़ोल्डर में कोई भी बदलाव होता है तो सर्वर कोड को फिर से संकलित करेगा। इसका मतलब है कि आप मक्खी पर एक वेबसाइट के साथ कोड जोड़ सकते हैं / बदल सकते हैं।

एक ऐप का लाभ यह है कि कोई पुनः कंपाइलिंग नहीं है और इसलिए प्रारंभिक प्रारंभिक समय तेज़ हो जाएगा।




एक "वेब साइट" का कोड एक विशेष App_Code निर्देशिका में है और यह कई डीएलएल (असेंबलियों) में रनटाइम पर संकलित है एक "वेब अनुप्रयोग" को एक एकल डीएलएल में प्रीकंपल किया गया है।




वेब अनुप्रयोग परियोजना मॉडल

  • विज़ुअल स्टूडियो के रूप में एक ही वेब प्रोजेक्ट सिमेंटिक्स प्रदान करता है। नेट वेब प्रोजेक्ट्स परियोजना फाइल (प्रोजेक्ट फाइलों पर आधारित संरचना) है मॉडल बनाएं - इस परियोजना में सभी कोड एक एकल विधानसभा में संकलित किए गए हैं। IIS और अंतर्निहित ASP.NET विकास सर्वर दोनों का समर्थन करता है। विजुअल स्टूडियो 2005 (रिफैक्टरिंग, जेनरिकिक्स आदि) और एएसपी.नेट (मास्टर पेज, सदस्यता और लॉगइन, साइट नेविगेशन, थीम, आदि) की सभी सुविधाओं का समर्थन करता है। FrontPage सर्वर एक्सटेंशन (FPSE) का उपयोग अब एक आवश्यकता नहीं है

वेब साइट परियोजना मॉडल

  • कोई प्रोजेक्ट फाइल (फाइल सिस्टम के आधार पर)
  • नया संकलन मॉडल
  • डायनामिक संकलन और प्रत्येक पृष्ठ दृश्य पर संपूर्ण साइट के निर्माण के बिना पृष्ठों पर काम करना।
  • IIS और अंतर्निहित ASP.NET विकास सर्वर दोनों का समर्थन करता है।
  • प्रत्येक पृष्ठ में यह स्वयं की विधानसभा है
  • स्पष्ट कोड मॉडल



वेब अनुप्रयोग प्रोजेक्ट्स में, विज़ुअल स्टूडियो को पृष्ठों और उपयोगकर्ता नियंत्रणों के लिए अतिरिक्त .designer फ़ाइलों की आवश्यकता है। वेब साइट परियोजनाओं को इस ओवरहेड की आवश्यकता नहीं है। मार्कअप को स्वयं डिजाइन के रूप में समझा जाता है




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

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

त्रुटि और इस त्रुटि के साथ रनटाइम पर:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

मेमोरी-बाधित लेगसी हार्डवेयर पर बड़ी साइटों को परिवर्तित करने की मेरी सिफारिश है कि स्वयं को वेब साइट मॉडल पर वापस लौटने का विकल्प दें। प्रारंभिक सफलता की समस्याओं के बाद भी बाद में रेंगते हो सकते हैं




निश्चित रूप से वेब एप्लिकेशन, एकल DLL फ़ाइल और बनाए रखने में आसान। लेकिन एक वेबसाइट अधिक लचीला है; आप जाने पर aspx फ़ाइल को संपादित कर सकते हैं




वेबसाइटें - कोई भी समाधान फ़ाइल नहीं बनाई जाएगी। अगर हम दृश्य स्टूडियो के लिए वेबसाइटों की कोई आवश्यकता नहीं बनाना चाहते हैं

वेब अनुप्रयोग - एक समाधान फ़ाइल बनाई जाएगी। अगर हम वेब अनुप्रयोग बनाना चाहते हैं तो दृश्य स्टूडियो की आवश्यकता होनी चाहिए। यह बिन फ़ोल्डर में एक एकल .dll फ़ाइल बनाएगा।




Related