एऍसपी.नेट

इतिहास

इंटरनैट सूचना सेवायें 4.0 के 1997 में जारी होने के उपरांत माइक्रोसॉफ्ट ने एक नए वेब एप्लीकेशन मॉडल हेतु संभावनाओं के अनुसंधान पर कार्य प्रारंभ किया जो कि ASP के संबंध में सामान्य शिकायतों, विशेषकर प्रस्तुत एवं सामग्री के प्रथक्करण के संबंध में, का निराकरण कर सके एवं "क्लीन" कोड लिखने में सक्षम हो।  मार्क ऐंडर्स, प्रबंधक IIS टीम एवं ड्यूक विश्वविद्यालय से स्नातक स्कॉट गुथरी, जिन्होंने 1997 में माइक्रोसॉफ्ट में कार्यभार ग्रहण किया, को इस मॉडल के निर्धारण की जिम्मेदारी सौंपी गई। ऐंडर्स एवं गुथरी द्वारा दो माह के भीतर प्रारंभिक डिजाइन विकसित की गयी एवं गुथरी ने वर्ष 1997 में क्रिसमस के अवकाश के दौरान प्रारंभिक प्रोटोटाइप को कोडबद्ध किया।
 प्रारंभिक प्रोटोटाइप को "XSP" कहा गया। वर्ष 2007 के एक साक्षात्कार में गुथरी ने बताया कि "लोग हमेशा यह पूछेंगे कि 'X' का क्या मतलब है। उस समय इसका वास्तव में कोई मतलब नहीं था। XML उससे प्रारंभ हुआ ; XSLT उससे प्रारंभ हुआ। प्रत्येक अच्छी चीज़ X से प्रारंभ होती हुई प्रतीत हुई इसीलिये हमने स्पष्टतः इसका यह नाम रखा." XSP का प्रारंभिक प्रोटोटाइप जावा(Java) का प्रयोग करते हुये बनाया गया था, (8) लेकिन जल्द ही कॉमन लैग्वेज रनटाइम (CLR) के शीर्ष पर नए प्लेटफार्म का निर्माण तय किया गया क्योंकि इसने ऑब्जेक्ट ओरिएंटेड प्रोगामिंग वातावरण, कचरा एकत्रण एवं अन्य विशेषताओं की सुविधा प्रदान की, जो कि वांछनीय विशेषतायें मानी गयीं जिसे माइक्रोसॉफ्ट का कंपोनेंट ऑब्जेक्ट मॉडल प्लेटफॉर्म सपोर्ट नहीं करता. गुथरी ने इस निर्णय को एक "बड़ा जोखिम" करार दिया क्योंकि उनके नये वेब विकास प्लेटफॉर्म की सफलता CLR की सफलता पर निर्भर होगी जो कि XSP की तरह विकास की आंरभिक अवस्था में है, यहाँ तक कि XSP टीम माइक्रोसॉफ्ट में पहली ऐसी टीम थी जिसने CLR को लक्ष्य किया था।
कॉमन लैग्वेज रनटाइम की गति के साथ, XSP को C# (आंतरिक रूप से "प्रोजेक्ट कूल" के रूप में विख्यात लेकिन जनता से गुप्त रखा गया) में पुनः कार्यान्वित किया गया एवं इसका नाम परिवर्तित कर ASP+ रखा गया क्योंकि इस बिंदु तक एक्टिव सर्वर पेजिज़ के उत्तराधिकारी के रूप में नए प्लेटफॉर्म को देखा गया एवं ASP विकसितकर्ताओं हेतु आसान माइग्रेशन मार्ग उपलब्ध कराने का इरादा था।
फीनिक्स, एरिजोना में 02 मई 2000 को आयोजित ASP कनेक्शन सम्मेलन में मार्क ऐंडर्स ने पहली बार ASP+ का प्रदर्शन किया। विस्तृत जनता के समक्ष प्रदर्शन एवं ASP+ का आरंभिक बीटा रिलीज़ (एवं शेष .NET फ्रेमवर्क) 11 जुलाई 2000 को ऑरलैंडो, प्लोरिडा में आयोजित 2000 प्रोफेशनल डैब्लपर्स सम्मेलन में किया गया। बिल गेट्स की मुख्य प्रस्तुति के दौरान, फुजित्सू ने ASP+ को COBOL के एक संयुग्म के रूप में प्रयोग का प्रदर्शन किया एवं माइक्रोसॉफ्ट के नये विजुअल बेसिक .NET एवं C# लैग्वेज कई अन्य लैग्वेज के साथ इसके सपोर्ट की उद्घोषणा की गयी, इसके अलावा एक्टिव स्टेट द्वारा सृजित इंटरऑपरेबिलिटी टूल्स के रूप में पायथन एवं पर्ल सपोर्ट की उद्घोषणा की गयी।
वर्ष 2000 के उत्तरार्ध में ".NET" ब्रांड का एक बार निश्चय हो जाने के पश्चात ASP+ का नाम बदलकर ASP.NET रखने का निर्णय लिया गया। उस वर्ष द MSDN शो में मार्क ऐंडर्स ने यह बताया कि ".NET प्रयास कई कारकों के बारे में है, यह सॉफ्टवेयर को एक सेवा के रूप में प्रदान करने के बारे में है, यह XML एवं वेब सेवाओं के बारे में है एवं यह इंटरनेट में इसकी क्षमता अनुसार वृद्धि करने के बारे में है।.. हम इसका नाम .NET फ्रेमवर्क बनाने वाले अन्य प्लेटफॉर्म अंशों के साथ लाना चाहते हैं।"
चार वर्षों के विकास एवं 2000 व 2001 में बीटा रिलीज की श्रेणी के उपरांत, ASP.NET 1.0 को 05 जनवरी 2002 को .NET फ्रेमवर्क के संस्करण 1.0 के एक भाग के रूप में जारी किया गया। रिलीज़ होने के पहले ही, ASP.NET के बारे में दर्जनों किताबें लिखी गयीं एवं माइक्रोसॉफ्ट ने इसे बड़े पैमाने पर वेब सेवाओं हेतु अपने प्लेटफॉर्म के रूप में प्रोत्साहित किया। गुथरी ASP.NET हेतु उत्पाद यूनिट प्रबंधक बने एवं विकास जारी रहा तथा 24 अप्रैल 2003 को विंडोज़ (Windows) सर्वर 2003 के एक भाग के रूप में संस्करण 1.1 रिलीज हुआ। इस रिलीज़ में मोबाइल उपकरणों हेतु ASP.NET के सपोर्ट में सुधार पर ध्यान केन्द्रित किया गया।

पेजिज़

.NET पेज, जिन्हें विधिवत रूप से "वेब फॉर्म्स " के रूप में जाना जाता है, अनुप्रयोग विकास हेतु मुख्य निर्माण ब्लॉक हैं। फाइलों में वेब फॉर्म्स ".aspx " एक्सटेंशन के साथ उपस्थित रहते हैं; ये फाइलें विशेष रूप से स्थितिज (X) HTML मार्कअप के साथ सर्वर साइड वेब कंट्रोल एवं प्रयोक्ता कंट्रोल को पारिभाषित करने वाले मार्कअप रखती हैं जिसमें डेब्लपर्स वेब पेज हेतु समस्त आवश्यक स्थितिज एवं गतिज सामग्री रखते हैं। इसके अतिरिक्त डायनामिक कोड, जो कि सर्वर पर चलाता है, को एक ब्लॉक <% ------- डायनामिक कोड ------ % > के भीतर एक पेज में रखा जा सकता है जो कि PHP, JSP तथा ASP जैसी अन्य वेब विकास प्रौद्योगिकियों के समान है, लेकिन डाटा बाइन्डिंग के उद्देश्य के अलावा इस तरीके को सामान्यतः हतोत्साहित किया जाता है क्योंकि पेज प्रदर्शन के समय इसमें अधिक कॉल्स की आवश्यकता होती है।
ध्यान दें कि यह नमूना कोड-बिहाइंड के विरोध में कोड "इनलाइन" का उपयोग करता है।

 
 <%@ Page Language="C#" %>

 <!DOCTYPE <span class="goog-gtc-fnr-highlight">html</span> PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">

 protected void Page_Load(object sender, EventArgs e)

 {
 Label1.Text = DateTime.Now.ToLongTimeString();
 }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">
 <title>Sample page</title></head><body>
 <form id="form1" runat="server">
 <div>
 The current time is: <asp:Label runat="server" id="Label1" />
 </div>
 </form></body></html>

कोड-बिहाइंड मॉडल

माइक्रोसॉफ्ट बिहाइंड मॉडल का प्रयोग करते हुये डायनामिक प्रोगाम कोड के साथ कार्य अनुशंसित करता है जो कि इस कोड को एक अलग फाइल या विशेष रूप से निर्धारित स्क्रिप्ट टैग में रखता है। कोड बिहाइंड फाइलों का नाम विशेष रूप से MyPage.aspx.cs या MyPage.aspx.vb जैसा होता है जबकि पेज फाइल MyPage.aspx होती है (पेज फाइल (ASPX) जैसा ही फाइल नाम लेकिन पेज लैंग्वेज को दर्शाते हुये अंतिम एक्सटेंशन के साथ). यह तरीका माइक्रोसॉफ्ट विजुअल स्टूडियो एवं अन्य IDEs में स्वचालित है। प्रोगामिंग के इस तरीके का प्रयोग करते हुये डेब्लपर दस्तावेज के प्रक्रियागत अध्ययन के स्थान पर विभिन्न घटनाओं जैसे 'पेज लोड हो रहा है' या 'एक कंट्रोल पर क्लिक किया जा रहा है' आदि के उत्तर हेतु कोड लिखता है।
ASP.NET का कोड-बिहाइंड मॉडल परंपरागत ASP से अलग है जिसमें यह डेब्लपर को प्रस्तुति तथा सामग्री के पृथक्करण को ध्यान में रखते हुए अनुप्रयोगों के निर्माण के लिये प्रोत्साहित करता है। सिद्धांत रूप में, यह एक वेब डिजाइनर को, उदाहरण के लिए, इसे चलाने वाले प्रोग्रामिंग कोड में व्यवधान हेतु डिजाइन मार्कअप पर कम क्षमता के साथ ध्यान केन्द्रित करने की अनुमति देगा। यह मॉडल व्यू-कंट्रोलर फ्रेमवर्क में दृश्य से कंट्रोलर के पृथक्करण के समान है।

उदाहरण

<%@ Page Language="C#" CodeFile="SampleCodeBehind.aspx.cs" Inherits="WebsiteSampleCodeBehind"
&lt;/source&gt;
उपरोक्त टैग ASPX फाइल के प्रारंभ में रखा गया है। @ पेज की कोड फाइल गुण विनिर्देश फाइल (.csया .vf) को बताती हैं जो कि कोड बिहाइंड के रूप में कार्य करते हैं जबकि अंतर्निहित गुण उस श्रेणी को बताते है जिससे पेज प्राप्त होता है। इस उदाहरण में @ पेज विनिर्देश SampleCodeBehind.aspx में शामिल है, तब SampleCodeBehind.aspx.cs इस पेज हेतु कोड-बिहाइंड के रूप में कार्य करता है।
प्रणाली का प्रयोग;नेमस्पेस वेबसाइट{
 सार्वजनिक आंशिक वर्ग SampleCodeBehind : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 Response.Write("Hello, dear!");;
 }
 }}
इस मामले में, Page_Load() तरीका ASPX पेज के आग्रह के समय प्रत्येक बार आमंत्रित किया जाता है। प्रोगामर प्रोसेसिंग करने के लिए पेज एक्जीक्यूशन प्रोसेस के विभिन्न चरणों में ईवेंट हैंडलर्स को कार्यान्वित कर सकता है।

प्रयोक्ता नियंत्रण (यूज़र कंट्रोल)

एक ईवेंट बबलिंग तंत्र इसके युक्त पेज तक प्रयोक्ता नियंत्रण द्वारा चलाये गये ईवेंट को पास करने की योग्यता उपलब्ध कराता है।

कस्टम नियंत्रण (कस्टम कंट्रोल)

प्रोगामर ASP.NET अनुप्रयोगों हेतु कस्टम कंट्रोल का निर्माण भी कर सकते हैं। यूज़र कंट्रोलों के प्रतिकूल, इन कंट्रोलों में अपने समस्त कोड एक DLL-फाइल में एकत्र करने वाली ASPX मार्क अप फाइल नहीं होती. ऐसे कस्टम कंट्रोलों का प्रयोग विभिन्न वेब एप्लीकेशनों एवं विजुअल स्टूडियो प्रोजेक्टों में किया जा सकता है (जिसकी यूज़र कंट्रोल में अनुमति नहीं है) रजिस्टर विनिर्देश का प्रयोग करते हुये, DLL से कंट्रोल को लोड किया जाता है।

प्रस्तुतीकरण तकनीक

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

राज्य प्रबंधन

ASP.NET एप्लीकेशन्स, वेब सर्वर पर होस्ट किये जाते है तथा स्टेट-लेस HTTP प्रोटोकॉल पर देखे जाते है। इसलिये, यदि एप्लीकेशन स्टेट-फुल अर्न्तक्रिया का प्रयोग करता है, तो इसे स्वंय ही स्टेट प्रबन्धन को कार्यान्वित करना होगा। ASP.NET अनुप्रयोगों में स्टेट प्रबन्धन के लिये ASP.NET विभिन्न कार्यकलाप प्रदान करता है। सिद्धांततः, माइक्रोसॉफ्ट "स्टेट" को अधिकतर GUI स्टेट मानता है, बड़ी समस्या उस समय पैदा होगी जब कोई एप्लीकेशन फिनिट स्टेट मशीन जैसे "डाटा ट्रेक" पर नजर रखने की आवश्यकता समझता है जो कि अनुरोध (आलसी मूल्यांकन) के दौरान अल्पकालिक स्टेट है अथवा इसे प्रारंभ करने में वक्त लगता है।

एप्लीकेशन स्टेट

एप्लीकेशन स्टेट उपभोक्ता-परिभाषित विभिन्नताओ का संग्रह है जो कि एक ASP.NET एप्लीकेशन के द्वारा शेअर किया जाता है। जिस समय एप्लीकेशन के प्रथम अवसर पर लोडिंग के समय Application_onstart की घटना फायर होती है, उस समय यह सैट तथा इनिशियलाइज होती हैं तथा अंतिम दृष्टान्त रहने तक उपलब्ध होती है। एप्लीकेशन स्टेट विभिन्नतओं को एप्लीकेशन संग्रह का प्रयोग करते हुए देखा जा सकता है जो कि एप्लीकेशन स्टेट विभिन्नताओ के लिये आवरण प्रदान करता है। एप्लीकेशन स्टेट विभिन्नताओं को नाम से पहचाना जाता है।

व्यू स्टेट

व्यू स्टेट से तात्पर्य पेज-स्तर के स्टेट प्रबंधन तंत्र से है, जिसका प्रयोग वेबफॉर्म कंट्रोल्स एवं विड्जैट्स की अवस्था को बनाये रखने के लिए ASP.NET अनुप्रयोगों द्वारा उत्सर्जित HTML पेजों द्वारा किया जाता है। कंट्रोल्स की स्थिति को कोडबद्ध किया जाता है एवं _व्यूस्टेट नाम से प्रचलित अदृश्य फील्ड में प्रत्येक फॉर्म प्रस्तुति पर सर्वर को भेजा जाता है। सर्वर, वैरिएबिल को वापस भेजता है ताकि जब भी पेज को पुनः प्रस्तुत करते हैं, कंट्रोल उनकी अंतिम अवस्था पर प्रस्तुत होते हैं। सर्वर के पक्ष में, अनुप्रयोग व्यूस्टेट को परिवर्तित कर सकता है, यदि प्रोसेसिंग के परिणामस्वरूप कंट्रोल की अवस्था में अद्यतनीकरण हो। सर्वर पर स्वतंत्र या अकेले कंट्रोलों की अवस्था को डीकोडेड किया जाता है एवं व्यूस्टेट कलेक्शन का प्रयोग करते हुये ASP.NET पेजों पर प्रयोग हेतु उपलब्ध हैं।
इसके लिए मुख्य उद्देश्य पोस्टबैक्स से परे फॉर्म सूचना का संरक्षण है। अतः जब एक प्रयोक्ता फॉर्म को भरता है एवं कोई गलत मूल्य प्रविष्ट कर देता है तो इसमें सुधार के लिए प्रयोक्ता को वापस करते समय फॉर्म स्वतः भर जाता है। व्यूस्टेट बिना किसी चूक के (वाय डिफाल्ट) ऑन होता है एवं पेज पर प्रत्येक कंट्रोल के बाद यह डाटा को सामान्यतः श्रेणीबद्ध कर देता है, इस बात को दृष्टिगत किये बिना कि इसका वास्तविक प्रयोग पोस्टबैक के दौरान हुआ था। इसके व्यवहार में सुधार किया जा सकता है (और किया भी जाना चाहिये), हालाकि, व्यूस्टेट प्रति कंट्रोल, प्रति पेज या सर्वर-वाइड आधार पर डिसऐबिल किया जा सकता है।
डेब्लपर्स को पेज या कंट्रोल के व्यूस्टेट में संवेदनशील या व्यक्तिगत सूचना भंडारित करते समय सावधान रहने की आवश्यकता है क्योंकि व्यूस्टेट डाटा वाले बेस 64 स्ट्रिंग को वेब पर उपलब्ध किसी भी एक टूल या किसी भी जेनरिक बेस 64 डिकोडर द्वारा आसानी से अश्रेणीबद्ध किया जा सकता है। बिना किसी चूक के (वाय डिफाल्ट), _व्यूस्टेट मूल्य को इन्क्रिप्ट नहीं करता, हालाकि, निश्चित स्तर की सुरक्षा के रखरखाव की अनुमति हेतु सर्वर-वाइड (एवं सर्वर विशेष) आधार पर इन्क्रिप्शन को इनेबिल किया जा सकता है।(31)

सर्वर साइड कैचिंग

ASP.NET एक "कैचे" लक्ष्य प्रदान करता है जिसे प्रयोग के दौरान शेयर किया जाता है तथा उसका विभिन्न लक्ष्यों का भंडारण करने के लिये भी प्रयोग किया जा सकता है। "कैचे" लक्ष्य में केवल निर्दिष्ट समय की मात्रा के लिये डाटा निहित होता है जो कि समय के गुजरने के साथ ही अपने आप समाप्त हो जाता है।

अन्य

ASP.NET द्वारा सपोर्ट किये जाने वाले स्टेट प्रबंधन के अन्य तरीकों में कुकीज़, कैचिंग एवं क्वैरी स्ट्रिंग का प्रयोग शामिल है।

टेम्पलेट इंजन

जब प्रथम बार रिलीज़ किया जाता है तब ASP.NET को टैम्पलेट इंजन की कमी होती है। क्योंकि .NET का ढ़ांचा लक्ष्य उन्मुख होता है तथा विरासत को अनुमति प्रदान करता है, जिसे कई डेब्लपर्स "system.Web.UI.Page" से प्राप्त किये हुये नयी आधार श्रेणी को पारिभाषित करेंगे, लिखने की विधि जो HTML को प्रतिपादित करती है तथा बाद में इस नई श्रेणी से प्राप्त किये गये पृष्ठों को अपने एप्लीकेशन में बनाऐंगे. जबकि इससे आम तत्वों का साइट पर पुनः प्रयोग किया जा सकेगा, इससे जटिलता में वृद्धि होती है तथा मार्कअप के साथ स्रोत कोड मिल जाता है। इससे भी अधिक, इस विधि को एप्लीकेशन को शुरु करके केवल देख कर ही जांचा जा सकता है, न कि उसे डिजाइन करते समय. अन्य डेब्लपर्स ने उसी नेवीगेशन तथा प्रत्येक पृष्ठ के अन्य तत्वों के कार्यान्वयन से बचने के लिये इनक्लूड फाइल तथा अन्य तरीकों को प्रयोग किया है।
ASP.NET ने "मास्टर पेजेस" का धारणा का परिचय दिया है जो कि टेम्पलेट आधारित पृष्ठ विकास की अनुमति देता है। एक वेब एप्लीकेशन में एक या एक से अधिक मास्टर पेजेस हो सकते हैं जोकि ASP.NET 3.5 से शुरु होकर एक साथ रखे जा सकते हैं। मास्टर टेम्पलेट में कन्टेन्ट प्लेस होल्डर्स के नाम से प्लेस होल्डर कंट्रोल होते हैं जो यह प्रदर्शित करते हैं कि गतिशील सामग्री कहां जाती है, साथ ही साथ HTML तथा जावा-स्क्रिप्ट(Javascript) चाइल्ड पेजेस के दौरान प्रयोग किया जाता है।
चाइल्ड पेजेस उन कन्टेन्ट प्लेस होल्डर कंट्रोल्स का प्रयोग करते हैं जिसे मास्टर पेज के प्लेस होल्डर से प्रतिचित्रित किया जाना चाहिये जोकि कन्टेन्ट पेज में निहित हैं। बचे हुये पृष्ठ को मास्टर पेज के शेयर्ड भागों से पारिभाषित किया जाता है, जैसेकि वर्ड प्रोसेसर का मेल-मर्ज होता है। कन्टेन्ट पेज के सभी मार्कअप तथा सर्वर नियंत्रक कन्टेन्ट प्लेस होल्डर नियंत्रक में ही प्लेस किये जाने चाहिये।
जब कन्टेन्ट पेज के लिये कोई आग्रह किया जाता है तब ASP.NET कन्टेन्ट पेज के आउटपुट को मास्टर पेज के आउटपुट के साथ मिलाता है तथा उपभोक्ता को आउटपुट भेजता है।
मास्टर पेज कन्टेन्ट पेज से पूरी तरह सुगम्य रहता है। इसका आशय यह है कि कन्टेन्ट पेज अभी भी हैडर्स में परिवर्तन कर सकता है, शीर्षक को बदल सकता है, कैचिंग आदि को कॉन्फिगर कर सकता है। यदि मास्टर पेज सार्वजनिक विशेषताओं अथवा विधियों को एक्सपोज़ करता है (जैसे कि कॉपीराइट नोटिस की सैटिंग करने के लिये) तो कन्टेन्ट पेज भी इसका प्रयोग कर सकता है।

निष्पादन

ASP.NET, वेब सर्वर पर एक या अधिक DLL फाइलों के लिये सर्वर-साइड कोड के संकलन के द्वारा अन्य स्क्रिप्ट-आधारित प्रौद्योगिकियों (क्लासिक ए एस पी मिलाकर) के ऊपर निष्पादन लाभों को उद्देशित करता है। यह संकलन प्रथम बार पृष्ठ के अनुरोध करते ही (इसका आशय है कि डेवलपर को पृष्ठों के लिये अलग संकलन कदम उठाने की आवश्यकता नहीं है) स्वयं ही घटित होता है। यह फीचर संकलित बायनरी के निष्पादन लाभों के साथ स्क्रिप्टिंग भाषाओं के द्वारा आसान विकास प्रदान करता है। हालांकि, संकलन, वेब प्रयोक्ता के लिए ध्यान देने योग्य परन्तु संक्षिप्त देरी पैदा कर सकता है, जब वेब सर्वर से नवीनतम संकलित पृष्ठ का प्रथम बार अनुरोध किया हो, परन्तु तब तक फिर से नहीं जब तक अनुरोध किये पृष्ठ को आगे अपडेट नहीं किया जाता.
ASPX तथा अन्य स्रोत फाइलें इन्टरनेट सूचना सेवा सर्वर (अथवा अन्य अनुकूल ASP.NET सर्वर्स; नीचे अन्य कार्यान्वयन देखें) पर वर्चुअल होस्ट में प्लेस की जाती है। प्रथम बार क्लाइन्ट पृष्ठ के लिये अनुरोध करता है, नेट ढ़ांचा फाइल को नेट असेम्बली में पेअर तथा संकलित करता है तथा प्रतिक्रिया भेजता है; अगले अनुरोध DLL फाइलों से सर्व किये जाते हैं। डिफाल्ट से ही, ASP.NET प्रथम अनुरोध पर 1000 फाइलों के बैच में पूरी साइट को संकलित करेगा। यदि संकलन की देरी से समस्याऐं आ रही हैं तो, बैच का आकार अथवा संकलन योजना को ट्विक्ड (tweaked) किया जा सकता है।
डेवलपर्स, संस्थापन के पूर्व अपनी 'कोड बिहाइन्ड' फाइलें, एम एस विजुअल (MS Visual) का प्रयोग करते हुए पूर्व संकलित करने के लिये चुन सकते हैं, जिससे उत्पादन पर्यावरण में जस्ट-इन-टाइम संकलन के लिये आवश्यकता को दूर किया जा सके। यह वेब सर्वर पर स्रोत कोड होने की आवश्यकता को दूर करता है।

आलोचना

IIS 6.0 पर तथा उससे नीचे, ए एस पी फ्रेमवर्क के विभिन्न संस्करणों का प्रयोग करते हुए लिखे गये पृष्ठ थर्ड-पार्टी लाइब्रेरीज के उपयोग के बगैर सेशन स्टेट को शेअर नहीं कर सकते. यह आलोचना ASP.NET तथा साथ साथ IIS-7 को रन करने वाले ASP एप्लीकेशन पर लागू नहीं होती. IIS-7 के साथ मॉड्यूल एकीकृत पाइप लाइन में रन कर सकती है जो मॉड्यूल को किसी भी अनुरोध को कार्यान्वित करने के लिये कोई भी भाषा में लिखने की अनुमति देता है।
ASP.NET 2.0 वेब फॉर्म मार्कअप का निर्माण करता है जो डब्ल्यु थ्री सी (W3C) वैधता पास करती है परंतु यह विवादास्पद है कि क्या यह सुगम्यता में वृद्धि करता है, जो कि सांकेतिक XHTML पेज + CSS प्रतिनिधित्व का एक लाभ है। कई कन्ट्रोल जैसे कि लॉगिंग कन्ट्रोल तथा विजार्ड कन्ट्रोल, डिफाल्ट से ही प्रारूप के लिये HTML टेबलज का प्रयोग करते हैं। माइक्रोसॉफ्ट ने ASP.NET 2.0 css कन्ट्रोल एडप्टर को जारी करके इस समस्या का समाधान किया है जो एक फ्री एड-ऑन है जो कि अनुवर्ती सुगम्य XHTML+ CSS मार्कअप के निर्माण के साथ साथ ASP.NET 4.0 में लॉगिन कन्ट्रोल में एक विशेषता जोड़ता है जो उसे टेबल मोड के बजाय डिव मोड पर रन करने में सक्षम बनाता है।
पृष्ठों की पुनः स्थिति तथा ब्राउजर हिस्ट्री बदलने जैसे ASP.NET वेब फॉर्म फीचर केवल इंटरनेट एक्सप्लोरर में ही उपलब्ध हैं।
माइक्रोसॉफ्ट, वेब सेवाओं तथा फलस्वरूप प्राथमिक एप्लीकेशन सर्वर सॉल्युशन के साथ IIS / ASP.NET को स्थापित करता है। जटिल बिजनेस एप्लीकेशन्स जो कि "आउट ऑफ द बॉक्स" माइक्रोसॉफ्ट आग्रह का प्रयोग करते हैं, उन्हें कार्यान्वित करते समय जटिल वैचारिक कमियां दृष्टिगोचर हुईं. ASP.NET में सॉलिड स्टेट प्रबंधन की कमी है ASP.NET वर्कर्स प्रक्रिया के स्वयं ही पुनः शुरू होने के कारण डेव्लपर्स को, कस्टम स्टेट हैंडलिंग मॉड्यूल्स जो कि कुछ बाहरी प्रोसेस में स्टेट स्टोर करना चाहिये, को हैंडकोड करने की आवश्यकता है। इसको आसान उदाहरण से समझाया जा सकता है। कल्पना कीजिये एक ASP.NET वेब साइट जो कि सर्वर कंपोनेंट पर विश्वास करती है, उसे अपने स्टेट को सुरक्षित रखना चाहिये तथा स्टेट जटिल अलगोरिथम - जैसे कि नक्शे के ऊपर सुपर इम्पोजिंग रूट जियोमेट्री, के परिणामस्वरूप प्राप्त किया गया था। एक मार्ग ने अगले ग्राहक अनुरोधों को संकलित तथा मल्टीपल करने के लिये बहुत से CPU चक्र लिये हैं, वह मेपटाइल्स को प्रदर्शित करते समय निष्कर्ष देखेगा.
अगला उदाहरण - जब स्टेट लीगेसी COM लक्ष्य में, जो कि वेब/ सर्वर स्टेट सर्वर के मध्य मार्शल नहीं किया जा सकता, संक्षिप्त किया जाता है, एकमात्र संभव मोड (इन प्रोक्) है जो कि एप्लीकेशन के पुनः शुरू होने के कारण अविश्वनीय होता है।

अन्य कार्यान्वयन

मोनो प्रोजेक्ट ASP.NET 1.1 एवं अधिकतर ASP.NET 2.0 को सपोर्ट करता है। ASP.NET को मोनो के साथ इन तीन में से किसी एक विकल्प का प्रयोग करते हुये चलाया जा सकता है: mod_mono मॉड्यूल का प्रयोग करते हुए अपाचे होस्टिंग, तीव्र CGI होस्टिंग एवं XSP.