कृपया भ्रमित न हों और इसे युनेस्को ASPNet से भिन्न समझें।

**ASP.NET** एक वेब एप्लीकेशन फ्रेमवर्क है जिसका विकास एवं विपणन माइक्रोसॉफ्ट द्वारा प्रोगामर को डायनामिक वेब साइट, वेब एप्लीकेशन एवं वेब सेवायें निर्मित करने की अनुमति हेतु किया गया है। .NET फ्रेमवर्क के संस्करण 1.0 के साथ इसे पहली बार जनवरी 2002 में जारी किया गया था एवं यह माइक्रोसॉफ्ट की एक्टिव सर्वर पेजिज़ (ASP) प्रौद्योगिकी का उत्तराधिकारी है। ASP.NET का निर्माण कॉमन लैग्वेज रनटाइम (CLR) पर किया गया है जिससे प्रोगामरों को कोई भी सहायक .NET भाषा का प्रयोग करते हुए ASP.NET कोड लिखने की सुविधा होती है। ASP.NET SOAP एक्सटेंशन फ्रेमवर्क ASP.NET कंपोनेंट को SOAP संदेशों को प्रक्रियारत करने की सुविधा प्रदान करता है।

इतिहास
------

इंटरनैट सूचना सेवायें 4.0 के 1997 में जारी होने के उपरांत माइक्रोसॉफ्ट ने एक नए वेब एप्लीकेशन मॉडल हेतु संभावनाओं के अनुसंधान पर कार्य प्रारंभ किया जो कि ASP के संबंध में सामान्य शिकायतों, विशेषकर प्रस्तुत एवं सामग्री के प्रथक्करण के संबंध में, का निराकरण कर सके एवं "क्लीन" कोड लिखने में सक्षम हो।  मार्क ऐंडर्स, प्रबंधक IIS टीम एवं ड्यूक विश्वविद्यालय से स्नातक स्कॉट गुथरी, जिन्होंने 1997 में माइक्रोसॉफ्ट में कार्यभार ग्रहण किया, को इस मॉडल के निर्धारण की जिम्मेदारी सौंपी गई। ऐंडर्स एवं गुथरी द्वारा दो माह के भीतर प्रारंभिक डिजाइन विकसित की गयी एवं गुथरी ने वर्ष 1997 में क्रिसमस के अवकाश के दौरान प्रारंभिक प्रोटोटाइप को कोडबद्ध किया।

स्कॉट गुथरी 2007 में. प्रारंभिक प्रोटोटाइप को "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` की घटना फायर होती है, उस समय यह सैट तथा इनिशियलाइज होती हैं तथा अंतिम दृष्टान्त रहने तक उपलब्ध होती है। `एप्लीकेशन` स्टेट विभिन्नतओं को एप्लीकेशन संग्रह का प्रयोग करते हुए देखा जा सकता है जो कि एप्लीकेशन स्टेट विभिन्नताओ के लिये आवरण प्रदान करता है। एप्लीकेशन स्टेट विभिन्नताओं को नाम से पहचाना जाता है।

#### सेशन स्टेट

सेशन स्टेट प्रयोक्ता-परिभाषित सेशन विभिन्नताऐं होती है जो कि प्रयोक्ता सेशन दौरान मौजूद रहती हैं। यह विभिन्नताऐं उपभोक्ता सेशन के विभिन्न अवसरों के लिये विशिष्ट होती है, तथा सेशन `Session` संग्रह का प्रयोग करते हुए देखी जा सकती हैं। सेशन विभिन्नताओं को निष्क्रियता के निर्धारित समय के पश्चात स्वयं ही नष्ट हो जाने के लिये सेट किया जा सकता है, यद्यपि सेशन समाप्त नहीं हुआ हो। ग्राहक सिरे पर, प्रयोक्ता सेशन को या तो कुकीज से अथवा URL में ही सेशन आय डी (Id) की एन्कोडिंग के द्वारा पहचाना जाता है।

ASP.NET, सेशन विभिन्नताओं के लिये पर्सिसटेन्स के तीन मोड को सहायता करता है।

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

व्यू स्टेट से तात्पर्य पेज-स्तर के स्टेट प्रबंधन तंत्र से है, जिसका प्रयोग वेबफॉर्म कंट्रोल्स एवं विड्जैट्स की अवस्था को बनाये रखने के लिए 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 के विभिन्न संस्करणों के साथ सहभागी अन्य फाइल विस्तारों (एक्स्टेंशनों) में शामिल हैं:

| एक्सटेंशन | आवश्यक संस्करण | वर्णन |
| --- | --- | --- |
| असक्स (asax) | 1.0 | Global.asax, अनुप्रयोग-स्तर के लाजिक हेतु प्रयुक्त |
| अस्क्क्स (ascx) | 1.0 | वेब यूज़र कंट्रोल: वेब पेजों पर स्थापित किये जाने वाले कस्टम कंट्रोल |
| अश्क्स (ashx) | 1.0 | कस्टम HTTP हैंडलर्स |
| अस्म्क्स (asmx) | 1.0 | वेब सर्विस पेज संस्करण 2.0 से एक अस्म्क्स फाइल के कोड बिहाइंड पेज को app\_code फोल्डर में रखा जाता है। |
| अक्स्द (axd) | 1.0 | जब web.config में इनेबिल हो, trace.axd आउटपुट अनुप्रयोग-स्तर ट्रेसिंग का निवेदन करते हुए. विशेष webresource.axd हैंडलर के लिये भी प्रयुक्त, जो कंट्रोल/ कंपोनेंट डेब्लपर को एकल फाइल (एक एसेंबली) के परिनियोजन हेतु चित्रों, स्क्रिप्ट, सीएसएस इत्यादि सहित कंपोनेंट/ कंट्रोल पूर्ण को पैकेज करने की अनुमति देता है। |
| ब्राउज़र | 2.0 | XML फॉरमेट में भंडारित ब्राउजर सक्षमता फाइलें, संस्करण 2.0 में पहली बार प्रस्तावित ASP.NET 2.0, इनमें से कई फाइलों को सामान्य वेब ब्राउजर को सहायता प्रदान करने के लिये बिना चूक के (वाय डिफाल्ट) शामिल करता है। ये स्पष्ट करती है कि कौन से ब्राउजर में कौन सी योग्यता है ताकि ASP.NET2 स्वचालित रूप से इसके आउटपुट को कस्टमाइज़ एवं ऑप्टिमाइज़ कर सके। विशेष .browser फाइलें मुफ्त डाउनलोड हेतु उपलब्ध हैं, उदाहरण के लिये, W3C वेलीडेटर, ताकि यह मानक अनुपालित होने के कारण मानक अनुपालित पेजों को भलीभांति प्रदर्शित करे. यह प्रयोग में कठिन ब्राउजर कैप्स सैक्शन को परिवर्तित करता है जोकि मशीन में समरूपित (कनफिगर) थे एवं ASP.NET 1.X में web.config में अवहेलना कर सकते थे। |
| कोंफिग (config) | 1.0 | इस विस्तार का प्रयोग करने के लिये निर्दिष्ट वेब एप्लीकेशन में web.config ही एक मात्र वाय डिफाल्ट फाइल है, (machine.config उसी प्रकार से पूरे वेब सर्वर तथा उसके ऊपर के सभी एप्लीकेशन्स को प्रभावित करता है) हालांकि ASP.NET अन्य कान्फिगरेशन फाइलों को बनाने तथा उपयोग करने के लिये सुविधा प्रदान करता है। इनको XML प्रारूप में भंडारित किया जाता है। |
| सीएस/वीबी (cs/vb) | 1.0 | कोड फाइलें (cs, C# को सूचित करता है, vb विजुअल बेसिक को सूचित करता है) कोड बिहाइंड फाइलें (ऊपर देखें) दो सर्वाधिक आम भाषाओं के लिये प्रमुख रूप से ".aspx.cs" या "aspx.vb" विस्तार का प्रयोग करता है। अन्य कोड फाइलें (प्रायः आम "लायब्रेरी" श्रेणी निहित) भी cs/vb विस्तार के साथ वेब फोल्डर्स में रह सकती हैं। ASP.NET 2 में इन्हें एपीपी-कोड (App\_code) फोल्डर के अन्दर प्लेस किया जाना चाहिये जहां पर वे गतिशील रूप से संकलित तथा पूर्ण एप्लीकेशन के लिये उपलब्धता होती हैं। |
| डीबीएम्एल (dbml) | 3.5 | LINQ, SQL डाटा क्लास फ़ाइल को |
| मास्टर | 2.0 | मास्टर पृष्ठ फ़ाइल. डिफ़ॉल्ट फ़ाइल नाम Master1.master है |
| रेस्क्स (resx) | 1.0 | अंतर्राष्ट्रीयकरण और स्थानीयकरण के लिए संसाधन फ़ाइलें. संसाधन फ़ाइलें (जैसे संदेश) वैश्विक या "स्थानीय" हो सकती हैं जिसका मतलब है एक एकल aspx or ascx file के लिए विशेष. |
| साइटमैप (sitemap) | 2.0 | साइटमैप विन्यास फाइल. डिफ़ॉल्ट फ़ाइल नाम web.sitemap है |
| स्किन | 2.0 | थीम स्किन फ़ाइलें. |
| एसवीसी (svc) | 3.0 | विंडो (Windows) संचार फाउंडेशन सेवा संचिका |
| एड्म्क्स (edmx) | 3.5 | ADO.NET इकाई फ्रेमवर्क मॉडल |

### निर्देशिका ढ़ांचा:

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

विशेष निर्देशिका नाम (ASP.NET 2.0 से) है:

एपीपी-ब्राउजर्स (App\_browser)
साइट-विशिष्ट ब्राउजर परिभाषा फाइलें होती हैं।
एपीपी-कोड (App\_Code)
यह 'रॉ कोड' निर्देशिका है। ASP.NET सर्वर इस फोल्टर की फाइलें (तथा उपनिर्देशिकाएं) स्वयं ही असेम्बली में संकलित करता है जो कि साइट के प्रत्येक पृष्ठ के कोड में देखी जा सकती है। एपीपी-कोड विशेष रूप से डाटा एक्सेस ऐबस्ट्रेक्शन कोड, मॉडल कोड, तथा बिजनेस कोड के लिये प्रयोग किया जायेगा. कोई साइट-विशिष्ट HTTP हेन्डलर्स, मॉड्यूल्स तथा वेब सर्विस कार्यान्वयन भी इस निर्देशिका में जाते हैं। एपीपी-कोड का प्रयोग करते हुए एक विकल्प के रूप में डैव्लपर पूर्वसंकलित कोड के साथ पृथक असेम्बली प्रदान करना चुन सकता है।
एपीपी-डाटा (App\_data)
ऐक्सेस mdb तथा SQL सर्वर mdf फाइलों जैसे डाटाबेस के लिये डिफाल्ट निर्देशिका. यह निर्देशिका सामान्यतः एप्लीकेशन के लिये एक मात्र राइट ऐक्सेस है।
एपीपी-स्थानीय स्रोत (App\_Local Resources)
साइट के व्यक्तिगत पृष्ठों के लिये स्थानीय स्रोत फाइलें होती हैं। जैसे कि checkout.aspx.fr\_FR.resx नाम की फाइल चेक आउट, ए एस पी एक्स पेज के फ्रैंच संस्करण के लिये स्थानीय स्रोत होती है। जब UI कल्चर फ्रेन्च में सेट किया जाता है, ASP.NET स्वयं ही स्थानीयकरण के लिये इस फाइल को ढूंढ़ कर प्रयोग करता है।
ए पी पी - ग्लोबल स्रोत (App\_GlobalResources)
साइट के प्रत्येक पृष्ठ के लिये उपलब्ध स्थानीय स्त्रोतों के साथ resx फाइलें होती हैं। यहां पर ही ए एस पी डेव्लपर स्थानीय मेसेजेस आदि विशेष रूप से भंडारण करेगा। जो कि एक से अधिक ए पी पी-थीम्स साइट की वैकल्पिक थीम्स होती है।
ए पी पी थीम्स (App\_Themes)
साइट की वैकल्पिक थीम्स को रखता है।
ए पी पी वेब रिफरेफरेन्सेस (App\_WebReferences)
साइट में उपभोग होने वाली वेब सेवाओं के संदर्भ हेतु डिस्कवरी फाइल और WSDL फाइलों को रखता है।
बिन (Bin)
नियंत्रकों, अवयवों, अथवा अन्य कोड जो कि आप अपने एप्लीकेशन में रिफरेन्स के लिये चाहते हैं, के लिये एकत्रित कोड (डी एल एल फाइलें) रखता हैं। बिन फोल्डर में कोड से दिखाये जाने वाली कोई भी श्रेणीयाँ आपके एप्लीकेशन में स्वयं ही संदर्भित हो जाती हैं।

निष्पादन
--------

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

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

डेवलपर्स, संस्थापन के पूर्व अपनी 'कोड बिहाइन्ड' फाइलें, एम एस विजुअल (MS Visual) का प्रयोग करते हुए पूर्व संकलित करने के लिये चुन सकते हैं, जिससे उत्पादन पर्यावरण में जस्ट-इन-टाइम संकलन के लिये आवश्यकता को दूर किया जा सके। यह वेब सर्वर पर स्रोत कोड होने की आवश्यकता को दूर करता है।

विस्तार (Extension)
-------------------

माइक्रोसॉफ्ट ने ASP.NET में प्लग करने के लिये कुछ विस्तार ढ़ांचा जारी किया है तथा उसकी कार्यशीलता में विस्तार किया है। उनमें से कुछ हैं:

ASP.NET AJAX
एक विस्तार जिसमें ए जे ए एक्स (AJAX) कार्यशीलता समाविष्ट करते हुए ASP.NET पृष्ठों को लिखने के लिये क्लाइन्ट-साइड तथा सर्वर-साइड दोनों ही कंपोनेंट हों.
ASP.NET MVC Framework
MVC वास्तु-शास्त्र का प्रयोग करते हुए ASP.NET पृष्ठों के लेखक के लिये एक विस्तार.

ASP classic की तुलना में ASP.NET
--------------------------------

ASP.NET, विन्डोज (Windows) प्रयोक्ता इन्टरफेस के समान *कन्ट्रोल* से संकलित किये गये पृष्ठों का निर्माण करने के लिये क्षमता प्रदान करके विन्डोज (Windows) एप्लीकेशन विकास से वेब विकास के लिये डेव्लपर्स सन्क्रमण को आसान बनाने का प्रयास करता है। *बटन* अथवा *लेबल* जैसे वेब कन्ट्रोल वैसे ही कार्य करते हैं जैसे उसका विन्डोज (Windows) प्रतिरूप: कोड अपनी विशेषताऐं सौंप सकता है तथा उसकी घटना की प्रतिक्रिया व्यक्त कर सकता है। कन्ट्रोल को जानकारी होती है कि उसे क्या करना है; जबकि विन्डोज (Windows) कन्ट्रोल स्क्रीन पर अपने आप को ड्रा करता है, वेब कन्ट्रोल एच टी एम एल HTML तथा जावा-स्क्रिप्ट(Javascript) का भाग निर्माण करता है जो कि एण्ड-यूजर के ब्राउजर को भेजे गये परिणाम पृष्ठ के भाग को निर्माण करता है।

ASP.NET प्रोग्रामर को ASP तथा PHP जैसे परम्परागत वेब-स्क्रिप्टिंग पर्यावरण के बजाय घटना वाहित GUI मॉडल का प्रयोग करते हुए एप्लीकेशन्स का विकास करने के लिये प्रोत्साहित करता है। फ्रेमवर्क, जावा-स्क्रिप्ट ((Javascript)) जैसी वर्तमान प्रौद्योगिकियों को स्वाभाविक स्टेटलेस वेब पर्यावरण को दृढ़ स्टेट (अन्तर-अनुरोध) में लाने के लिये आंतरिक घटकों जैसे - "viewstate" के साथ जोड़ने का प्रयास करता है।

ASP क्लासिक से तुलना करने पर अन्य असमानताऐं निम्नवत हैं:

* संकलित कोड का आशय है कि विकास की अवस्था पर डिजाइन - टाइम त्रुटियों के साथ एप्लीकेशन अधिक गति से चलता है।
* ट्राई-कैच ब्लॉक्स प्रयोग करते हुए एक्सेप्शन हेन्डलिंग का उपयोग करते हुए महत्त्वपूर्ण रूप से बेहतर रन-टाइम त्रुटि से निपटना.
* नियंत्रकों तथा घटनाओं जैसे माइक्रोसॉफ्ट विन्डोज (Windows) एप्लीकेशन के लिये एक जैसे रूपक.
* नियंत्रकों तथा क्लास लाइब्रेरीज का एक व्यापक सेट एप्लीकेशन्स के तुरन्त निर्माण में सहायक होता है, साथ ही उपभोक्ता-परिभाषित कन्ट्रोल साधारणतः प्रयोग किये जाने वाले वेब टेम्पलेट को अनुमति देता है, जैसे कि मेनूज. पेज पर इन कन्ट्रोल्स का प्रारूप आसान है क्यों कि अधिकतम एडिटर्स में यह देख कर किया जा सकता है।
* .VB.NET, C#, J#, Delphi.NET, क्रोम आदि में कोडेड किये जाने वाले वेब पेजेस की अनुमति देते हुए, ASP.NET, .NET सामान्य भाषा रन टाइम की बहु भाषा क्षमताओं का उत्तोलन करता है।
* निष्पादन में सुधार करने के लिये पूरे पेज अथवा उसके थोडे से भाग को केच (Cache) करने की क्षमता.
* प्रस्तुतीकरण से बिजनेस लॉजिक को अलग करने के लिये कोड बिहाइंड विकास मॉडल प्रयोग करने की क्षमता.
* पेज तथा कन्ट्रोल दोनों को प्रोग्राम करने के लिये सही लक्ष्य-आयामी डिजाइन का प्रयोग करने की क्षमता.
* यदि कोई ASP.NET एप्लीकेशन मेमोरी को लीक करता है, तो ASP.NET रन टाइम त्रुटि वाले एप्लीकेशन को होस्ट करने वाले एपीपी डोमेन (AppDomain) को अनलोड करता है तथा नये एपीपी डोमेन (AppDomain) में एप्लीकेशन रीलोड करता है।
* ASP.NETमें सेशन स्टेट को माइक्रोसॉफ्ट SQL सर्वर डाटा बेस अथवा वेब सर्वर जैसी मशीन अथवा अलग मशीन पर चलने वाली प्रोसेस में सुरक्षित किया जा सकता है। इस तरह से, जब वेब सर्वर को रीसेट किया जाता है अथवा ASP.NET वर्कर प्रोसेस रीसायकल की जाती है सेशन वेल्यूज की हानि नहीं होती.
* ASP.NET 2.0 सेस्करण के पूर्व के संस्करणों की उनके मानक अपुनालन की कमी के कारण आलोचना हुई है। क्लाइन्ट ब्राउजर को भेजे गये सृजित HTML तथा जावा-स्क्रिप्ट (Javascript) W3C/ECMA मानकों के विरुद्ध हमेशा वैध नहीं करेंगे। इसके अतिरिक्त, फ्रेमवर्क के ब्राउजर डिटेक्शन फीचर ने 'डाउन लेबल ' जैसे माइक्रोसॉफ्ट के स्वयं के इन्टरनेट एक्सप्लोरर के अलावा कई बार वेब ब्राउजर की गलत पहचान की है तथा कुछ फीचर को हटाकर इन क्लाइन्ट को HTML/जावा-स्क्रिप्ट (Javascript) लौटा दी है अथवा कई बार असमर्थ अथवा तोडी है। यद्यपि, 2.0 संस्करण में, साइट कन्फिगरेशन के आधार पर सभी कन्ट्रोल वैध HTML 4.0, XHTML 1.0 (डिफाल्ट) अथवा XHTML 1.1 आउटपुट पैदा करते हैं। मानक-अनुपालित वेब ब्राउजर का पता लगाना अधिक कठिन है तथा केस्केडिंग स्टाइल शीट के लिये सहायता अधिक व्यापक होती है।
* वेब सर्वर कन्ट्रोल: यह वेब फॉर्म के लिये UI प्रदान करने के लिये ASP.NET द्वारा प्रस्तुत किये गये कन्ट्रोल है। यह कन्ट्रोल स्टेट द्वारा प्रबंधित कन्ट्रोल है तथा WYSIWYG कन्ट्रोल है।

आलोचना
------

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 अनुप्रयोगों के विकास के लिए कई उपलब्ध सॉफ्टवेयर संकुल मौजूद हैं:

| उत्पाद | डेवलपर | लाइसेंसिंग | टिप्पणी |
| --- | --- | --- | --- |
| ASP.NET इन्टेल्लीसेन्स जेनरेटर | BlueVision LLC | मुफ़्त |  |
| माइक्रोसॉफ्ट विज़ुअल स्टूडियो | माइक्रोसॉफ्ट | नि: शुल्क है और वाणिज्यिक |  |
| कोड गियर डेल्फी | एम्बर्काडेरो टेक्नोलॉजीज | वाणिज्यिक |  |
| मेंक्रोमेडिया होमसाईट | एडोब सिस्टम्स | वाणिज्यिक |  |
| माइक्रोसॉफ्ट एक्सप्रेशन वेब | माइक्रोसॉफ्ट | वाणिज्यिक |  |
| माइक्रोसॉफ्ट शेयर पॉइंट डिजाइनर | माइक्रोसॉफ्ट | मुफ़्त |  |
| मोनोडेवेलोप | नोवेल और मोनो समुदाय | नि:शुल्क खुला स्रोत |  |
| शार्पडेवेलोप | ICशार्पकोड टीम | नि:शुल्क खुला स्रोत |  |
| Eiffel for ASP.NET  | एफिल सॉफ्टवेयर | नि:शुल्क खुला स्रोत और वाणिज्यिक |  |
| मेक्रोमेडिया ड्रीमवीवर | एडोब सिस्टम्स | वाणिज्यिक | ASP.NET 2.0 की महत्त्वपूर्ण विशेषताओं को सपोर्ट करता है एवं ASP.NET 1.x हेतु अत्यंत अकुशल कोड का उत्पादन करता है: इसके अलावा, कोड उत्पादन एवं ASP.NET विशेषतायें संस्करण 8.0.1 को सपोर्ट करती हैं जो कि संस्करण MX से बहुत कम परिवर्तित था। संस्करण 8.0.2 SQL इन्जैक्शन आक्रमणों से बेहतर सुरक्षा प्रदान करते हैं। |

फ्रेमवर्क्स
-----------

जब ASP.NET के साथ विकास कर रहे हो, तब मानक वेबफार्म्स विकास मॉडल का प्रयोग आवश्यक नहीं है। प्लेट-फार्म हेतु डिजाइन किये गये उल्लेखनीय फ्रेमवर्कों में शामिल हैं:

* .NET डाटाबेस एवं वितरित कम्प्यूटिंग अनुप्रयोगों के निर्माण हेतु बेस वन फाउण्डेशन कंपोनेट लाइब्रेरी (BFC) एक RAD फ्रेमवर्क है।
* DotNetNude एक खुला स्रोत सॉल्युशन है जिसमें एक वेब अनुप्रयोग फ्रेमवर्क एवं एक कन्टेन्ट प्रबंधन तंत्र शामिल होता है जो माड्यूल्स, स्किन्स एवं प्रोवाइडर्स के माध्यम से उन्नत विस्तार योग्यता की अनुमति प्रदान करती है।
* Castle Monorai (कैसेल मोनोरेल), एक खुला-स्त्रोत MVC फ्रेमवर्क है जिसमें रूबी ऑन रेल्स के समान निष्पादन मॉडल है। फ्रेमवर्क का सामान्यतः कासल एक्टिव रिकॉर्ड, जो कि Nhibernate पर बनी ORM परत है, के साथ प्रयोग किया जाता है।
* Spring.Net, जावा (Java) हेतु स्प्रिंग फ्रेमवर्क का एक पोर्ट.
* Skaffold.Net, इण्टरप्राइज अनुप्रयोगों में प्रयुक्त.NET अनुप्रयोगों हेतु एक साधारण फ्रेमवर्क.'

संस्करण
-------

| दिनांक | संस्करण | टिप्पणिया | नये ASP.NET संबंधित विशेषतायें |
| --- | --- | --- | --- |
| 16 जनवरी 2002 | 1.0 | प्रथम संस्करणविजुअल स्टूडियो.NET के साथ जारी | * विरासत, पॉलीमॉरफिज्म एवं अन्य मानक OOP विशेषताओं को सपोर्ट करने वाला ऑब्जेक्ट उन्मुख वेब अनुप्रयोग विकास
	+ डेब्लपर्स को निम्नलिखित के प्रयोग हेतु अब मजबूर नहीं किया जाता: Server.Create object (....) अतः शीघ्र बाइंडिंग तथा टाइप सुरक्षा संभव है।
* विंडोज (Windows) प्रोग्रामिंग पर आधारित; अधिक मजबूत अनुप्रयोग जो साधारणतः HTML प्रदर्शन के अलावा कार्य करे, (जैसे अपवाद हैंडलिंग) के निर्माण हेतु डेब्लपर DLL श्रेणी पुस्तकालयों एवं वेब सर्वर की अन्य विशेषताओं का प्रयोग कर सकते हैं।
 |
| 24 अप्रैल 2003 | 1.1 | विंडोज़ (Windows) सर्वर 2003 के साथ जारी विजुअल Studio.NET 2003 के साथ जारी | * मोबाइल नियंत्रण
* स्वचालित इनपुट अभिप्रमाणन
 |
| 7 नवम्बर 2005 | 2.0 | कोडनाम विडबीविजुअल स्टूडियो 2005 एवं विजुअल वेब डेब्लपर एक्सप्रेसएंव SQL सर्वर 2005 के साथ जारी | * नये डाटा कंट्रोल (ग्रिड व्यू, फॉर्मव्यू, डीटेल्स व्यू)
* घोषणात्मक डाटा एक्सेस हेतु नई तकनीक (SQL डाटा स्त्रोत, ऑब्जैक्ट डाटा स्त्रोत, XMLडाटा स्रोत कंट्रोल्स)
* नेवीगेशन कंट्रोल्स
* मास्टर पृष्ठ
* प्रवेशक का नियंत्रण
* थीम्स/विषय
* स्किन्स
* वेब भाग
* व्यक्तिगतिकरण सेवायें
* पूर्ण पूर्व-संकलन
* नयी स्थानीयकरण तकनीक
* 64 बिट प्रोसेसर हेतु सपोर्ट
* प्रोवाइडर क्लास मॉडल
 |
| 21 नवम्बर 2006 | 3.0 |  | * विंडोज़ (Windows) संचार फाउंडेशन जो सेवाओं की मेजबानी हेतु ASP.NET का प्रयोग कर सके।
* विंडोज़ (Windows) कार्डस्पेस जो लॉगिन रोल हेतु ASP.NETका प्रयोग करता है।
 |
| 19 नवम्बर 2007 | 3.5 | विजुअल स्टूडियो 2008 एवं विंडोज़ (Windows) सर्वर 2008 के साथ जारी | * नये डाटा कंट्रोल्स (लिस्ट व्यू, डाटा पेजर)
* ASP.NET AJAX फ्रेमवर्क के हिस्से के रूप में शामिल
* HTTP पाइपलाइनिंग एवं सिंडीकेशन फीड्स हेतु सपोर्ट.
* RSS, JSON, POX एवं पार्शिअल ट्रस्ट हेतु WCF सपोर्ट
* LINQ इत्यादि की तरह समस्त .NET फ्रेमवर्क 3.5 परिवर्तित होते हैं।
 |
| 11 अगस्त 2008 | 3.5 सर्विस पैक 1 | विजुअल स्टूडियो 2008 सर्विस पैक 1 के साथ जारी | * ASP.NET डायनामिक डाटा को शामिल करना।
* ASP.NET AJAX अनुप्रयोग में ब्राउज़िग हिस्ट्री के नियंत्रण हेतु सपोर्ट.
* ज्यादा बेहतर डाउनलोडिंग हेतु कई जावा-स्क्रिप्ट (Javascript) फाइलों को एकल फाइल में मिलाने की क्षमता
* नये namespaces System.Web.आब्स्त्रक्तिओन एंव System.Web.Routingवेब [Web].अमूर्त और सिस्टम.वेब [Web].अनुमार्गण
 |

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

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

टिप्पणी
-------

1. 1 2  "Architecture Journal Profile: Scott Guthrie". *The Architecture Journal*. Microsoft. January 2007. मूल से 24 अगस्त 2011 को पुरालेखित. अभिगमन तिथि 2008-04-20.
2. ↑  Michiel van Otegem (July 24, 2007). "Interview with Scott Guthrie, creator of ASP.NET". मूल से 9 नवंबर 2007 को पुरालेखित. अभिगमन तिथि 2008-04-20.
3. ↑  Tim Anderson (October 30, 2007). "How ASP.NET began in Java". The Register. मूल से 24 अगस्त 2011 को पुरालेखित. अभिगमन तिथि 2008-04-20.
4. 1 2  "Show #9 - ASP.NET". *The MSDN Show*. Microsoft. December 20, 2000. मूल से 13 अप्रैल 2001 को पुरालेखित. अभिगमन तिथि 2008-04-20.
5. ↑  "Bill Gates speech transcript - Professional Developers Conference 2000". Microsoft. July 11, 2000. मूल से 10 अप्रैल 2008 को पुरालेखित. अभिगमन तिथि 2008-04-20.
6. ↑  "Bill Gates speech transcript - Professional Developers Conference 2000". Microsoft. July 11, 2000. मूल से 10 अप्रैल 2008 को पुरालेखित. अभिगमन तिथि 2008-04-20.
7. ↑  "Show #19 - LIVE! from the PDC". *The MSDN Show*. Microsoft. November 15, 2001. अभिगमन तिथि 2008-04-20.
8. ↑  (MacDonald & Szpuszta 2005, p. 63)
9. 1 2 3  "INFO: ASP.NET State Management Overview". मूल से 26 अक्तूबर 2005 को पुरालेखित. अभिगमन तिथि 2007-10-23.
10. ↑  "ViewState in ASP.NET". मूल से 14 अक्तूबर 2007 को पुरालेखित. अभिगमन तिथि 2007-10-23.
11. ↑  "ASP.Net ViewState Overview". मूल से 16 सितंबर 2008 को पुरालेखित. अभिगमन तिथि 25 मार्च 2010.
12. ↑  "Encrypting Viewstate in ASP.NET". मूल से 28 मार्च 2010 को पुरालेखित. अभिगमन तिथि 2009-07-19.
13. ↑  "ASP.NET मास्टर पेज अवलोकन (माइक्रोसॉफ्ट डेवलपर नेटवर्क)". मूल से 7 सितंबर 2008 को पुरालेखित. अभिगमन तिथि 25 मार्च 2010.
14. ↑  "Global.asax Syntax". मूल से 12 अप्रैल 2008 को पुरालेखित. अभिगमन तिथि 25 मार्च 2010.
15. ↑   Archived 2008-04-08 at the Wayback Machine ASP.NET MSDN से वेब साइट लेआउट
16. ↑  (MacDonald & Szpuszta 2005, pp. 7-8)
17. ↑  "IIS 7.0 समन्वित पाइपलाइन का लाभ कैसे उठाएं". मूल से 24 मार्च 2010 को पुरालेखित. अभिगमन तिथि 25 मार्च 2010.
18. ↑  "FAQ: ASP.NET". Novell. मूल से 2 जनवरी 2010 को पुरालेखित. अभिगमन तिथि 2009-09-22.

सन्दर्भ
-------

* MacDonald, Matthew; Szpuszta, Mario (2005). *Pro ASP.NET 2.0 in C# 2005* (1st edition संस्करण). Apress. आई॰ऍस॰बी॰ऍन॰ 1-59059-496-7.सीएस1 रखरखाव: फालतू पाठ (link)

आगे के पठन के लिए
-----------------

* ऐनी बोएहम: *मुराच्स ASP.NET 3.5 वेब प्रोग्रामिंग विद VB 2008*, 21 जुलाई 2008, माइक मुराच्स और एसोसिएट्स, ISBN 978-1-890774-47-9
* स्टीफन वाल्थर: *ASP.NET 3.5 अनलीशड*, 28 दिस्म्बर, 2007, साम्स प्रकाशन, ISBN 0-672-33011-3 ISBN 0-672-33011-3
* स्टीफन वाल्थर: *डाटा एक्सेस इन ASP.NET 2.0 फ्रेमवर्क (वीडियो प्रशिक्षण)*, 26 सितम्बर 2007, साम्स प्रकाशन, ISBN 0-672-32952-2

बाहरी कड़ियाँ
-------------

|  |  |
| --- | --- |
|  |  विकिपुस्तक पर ***एऍसपी.नेट*** से सम्बन्धित अधिक जानकारी है।  |

* ASP.NET E-book (हिंदी में) अब सीखिए ASP.NET प्रोग्रामिंग आपकी अपनी भाषा हिंदी में
* अपतटीय विकास कंपनी ASP.NET 3.5, WPF, WCF, ASP.NET, कंसल्टिंग, शेयर पॉइंट डेवलप्मेंट, DotNetNuke
* माइक्रोसॉफ्ट की सरकारी ASP.NET 3.5 वेबसाइट
* MSDN पर ASP.NET
* ASP.Net 4 और 2010 IDE में कुछ नई सुविधाएं
* छात्र शैक्षणिक ब्लॉग

साँचा:DotNET

| * दे
* वा
* सं
Microsoft APIs and frameworks |
| --- |
| Graphics | 
 Desktop Window Manager **·**  Direct2D **·**  Direct3D (extensions)  **·**  GDI / GDI+ **·**  WPF **·**  Windows Color System **·**  Windows Image Acquisition **·**  Windows Imaging Component  |
| Audio | 
 DirectMusic **·**  DirectSound **·**  DirectX plugin **·**  XACT **·**  Speech API  |
| Multimedia | 
 DirectX (Media Objects **·**  Video Acceleration) **·**  DirectInput **·**  DirectPlay **·**  DirectShow **·**  Image Mastering API **·**  Managed DirectX **·**  Media Foundation **·**  XNA **·**  Windows Media  **·**  Video for Windows  |
| Web | 
 MSHTML **·**  RSS Platform **·**  JScript **·**  VBScript **·**  BHO **·**  XDR **·**  SideBar Gadgets  |
| Data access | 
 Data Access Components **·**  Extensible Storage Engine **·**  ADO.NET **·**  ADO.NET Entity Framework **·**  Sync Framework **·**  Jet Engine **·**  MSXML **·**  OLE DB **·**  OPC |
| Networking | 
 Winsock (LSP) **·**  Winsock Kernel **·**  Filtering Platform **·**  Network Driver Interface Specification **·**  Windows Rally **·**  BITS **·**  P2P API **·**  MSMQ **·**  MS MPI  |
| Communication | 
 Messaging API **·**  Telephony API **·**  WCF  |
| Administration andmanagement | 
 Win32 console **·**  Windows Script Host **·**  WMI (extensions) **·**  PowerShell **·**  Task Scheduler **·**  Offline Files **·**  Shadow Copy **·**  Windows Installer **·**  Error Reporting **·**  Event Log **·**  Common Log File System  |
| Component model | 
 COM **·**  COM+ **·**  ActiveX **·**  Distributed Component Object Model **·**  .NET Framework  |
| Libraries | 
 Base Class Library (BCL) **·**  Microsoft Foundation Classes (MFC) **·**  Active Template Library (ATL) **·**  Windows Template Library (WTL)  |
| Device drivers | 
 Windows Driver Model  **·**  Windows Driver Foundation (KMDF **·**  UMDF) **·**  WDDM **·**  NDIS **·**  UAA **·**  Broadcast Driver Architecture  **·**  VxD  |
| Security | 
 Crypto API (CAPICOM) **·**  Windows CardSpace **·**  Data Protection API **·**  Security Support Provider Interface (SSPI)  |
| .NET | 
 ASP.NET **·**  ADO.NET **·**  Base Class Library (BCL) **·**  Remoting **·**  Silverlight **·**  TPL **·**  WCF **·**  WCS **·**  WPF **·**  WF  |
| Software factories | 
 EFx Factory **·**  Enterprise Library **·**  Composite UI **·**  CCF **·**  CSF |
| IPC | 
 MSRPC **·**  Dynamic Data Exchange (DDE)  **·**  Remoting **·**  WCF  |
| Accessibility | 
 Active Accessibility **·**  UI Automation  |
| Text and multilingualsupport | 
 DirectWrite **·**  Text Services Framework **·**  Text Object Model **·** Input method editor **·**  Language Interface Pack **·**  Multilingual User Interface **·**  Uniscribe 
 |

साँचा:MS DevTools

| * दे
* वा
* सं
माइक्रोसॉफ़्ट |
| --- |
| लोग | 

|  |  |
| --- | --- |
| संस्थापक | 
* बिल गेट्स
* पॉल एलन

 |
| निदेशक मण्डल | 
* जॉन वेंडेल थॉम्पसन (अध्यक्ष)
* सत्य नडेला (मुख्य कार्यकारी अधिकारी)
* चार्ल्स नोस्की
* हेलमुट पंके
* जॉन डब्ल्यू स्टैंटन
* रीड हॉफमैन
* सैंडी पीटरसन
* पेनी प्रित्ज़कर
* चार्ल्स शार्प
* अर्ने सोरेनसन
* पद्मश्री वॉरियर

 |
| वरिष्ठ नेतृत्व टीम | 
* सत्य नडेला (मुख्य कार्यकारी अधिकारी)
* स्कॉट गुथरी
* एमी हूड (मुख्य वित्ताधिकारी)
* हैरी शुम
* फिल स्पेंसर

 |
| निगमित उपाध्यक्ष | 
* जो बेल्फ़ोर
* रिचर्ड राशिद (वरिष्ठ उपाध्यक्ष)
* सोमा सोमासेगर (वरिष्ठ उपाध्यक्ष)
* सेसर सेर्नुडा
* पैनोस पैनय (वरिष्ठ उपाध्यक्ष)

 |

 |  |
| उत्पाद | 

|  |  |
| --- | --- |
| हार्डवेयर | 
* अज़ुरे किनेक्ट
* होलोलेन्स
* लाइफकैम
* लाइफ़चैट
* सरफेस
	+ हब
	+ गो
	+ लेप्टोप
	+ प्रो
	+ स्टूडियो
	+ ड्यूओ
	+ नियो
* एक्सबॉक्स

 |
| सॉफ़्टवेयर | 
* माइक्रोसॉफ़्ट 365
	+ ऑफिस
		- 365
	+ विंडोज़
* सर्वर्स
* विजुअल स्टूडियो
* एक्सबॉक्स ओएस

 |
| प्रोग्रामन भाषायें | 
* बेसिक
	+ VB.NET
	+ VBA
	+ वीबीस्क्रिप्ट
	+ विज़ुअल बेसिक
* सी#
* ऍफ़#
* पावरशेल
* टाइपस्क्रिप्ट

 |
| वेब गुणधर्म | 
* अज़ुरे
* बिंग
* चैनल 9
* कोडप्लेक्स
* डेवलपर नेटवर्क
* डॉक्स
* एमएसएन
* मिक्सर
* स्टोर
* टेकनेट
* ट्रांसलेटर

 |

 |
| कंपनी | 

|  |  |
| --- | --- |
| सम्मेलन | 
* बिल्ड
* इग्नाइट
* इंस्पायर (पूर्व में टेकएड)
* मिक्स
* पीडीसी
* विनऍचईसी

 |
| प्रभाग | 
* अभियांत्रिकी समूह
	+ मोबाइल
	+ स्काइप यूनिट
* डीजिटल क्राइम यूनिट
* गेराज
* प्रेस
* शोध
* डॉटनेट फाउंडेशन
* आउटकर्व फाउंडेशन
* एक्सबॉक्स गेम स्टूडियोज़

 |
| सम्पदा | 
* माइक्रोसॉफ़्ट रेडमंड परिसर
* माइक्रोसॉफ़्ट एलजीरिया
* माइक्रोसॉफ़्ट मिस्र
* माइक्रोसॉफ़्ट इंडिया
* माइक्रोसॉफ़्ट जापान
* माइक्रोसॉफ़्ट थिएटर

 |

 |
| आलोचना | 
* बंडलिंग ऑफ़ माइक्रोसॉफ़्ट विंडोज़
* क्लिपी
* आईलू
* इण्टरनेट ऍक्सप्लोरर
* माइक्रोसॉफ़्ट बॉब
* एनएसए की
* विंडोज़
	+ एक्सपी
	+ विस्टा
	+ 10

 |
| 
* श्रेणी पृष्ठ श्रेणी

 |