# ஏஎஸ்பி.நெட்



**எஎஸ்பி.நெட்** என்பது மைக்ரோசாஃப்டினால் உருவாக்கப்பட்டு, சந்தைப்படுத்தப்பட்ட ஒரு வலை பயன்பாட்டு வரைச்சட்டம் ஆகும். இது ஆற்றல்மிகு வலைத்தளங்களையும், வலை பயன்பாடுகளையும் மற்றும் வலை சேவைகளையும் உருவாக்க நிரலாளர்களுக்கு உதவுகிறது. ஜனவரி 2002-ல் முதன்முறையாக .நெட் வரைச்சட்டத்தின் பதிப்பு 1.0 வெளியிடப்பட்டது. இது அதற்கு முன்னர் இருந்த மைக்ரோசாஃப்டின் Active Server Pages (ASP) தொழில்நுட்பத்தைக் கடந்து வெற்றி பெற்றது. எஎஸ்பி.நெட் தொழில்நுட்பம், பொதுமொழி செயல்நேர (Common Language Runtime - CLR) அடித்தளத்தில் உருவாக்கப்பட்டிருக்கிறது. இதில் எந்தவொரு .நெட் மொழியையும் பயன்படுத்தி நிரலாளர்களால் குறியீடுகளை எழுத முடியும். எஎஸ்பி.நெட் SOAP விரிவாக்க வரைச்சட்டமானது, SOAP சேதிகளைச் செயல்படுத்த எஎஸ்பி.நெட் உட்கூறுகளை அனுமதிக்கிறது.  

## வரலாறு

1997-ல் இணைய தகவல் சேவைகள் (IIS) வெளியிடப்பட்ட பின்னர், எஎஸ்பி குறித்த பொதுவான குறைபாடுகளைத் தீர்க்கும் ஒரு புதிய வலை பயன்பாட்டு மாதிரியை உருவாக்குவதற்கான சாத்தியக்கூறுகளை மைக்ரோசாஃப்ட் ஆராய தொடங்கியது. குறிப்பாக புறத்தோற்றபாங்கையும், தகவலடக்கத்தையும் (content) பிரித்து காட்டும் வகையில், "தெளிவான" குறியீடுகளை எழுதுவதற்காக இதன் ஆய்வு தொடங்கி இருந்தது. இணைய தகவல் சேவைகள் குழுவின் ஒரு மேலாளரான மார்க் ஆண்டர்ஸும், டூக் (Duke) பல்கலைக்கழகத்தில் பட்டம் பெற்ற பிறகு 1997-ல் மைக்ரோசாஃப்டில் சேர்ந்திருந்த ஸ்காட் குத்ரே இருவரும் அந்த மாதிரிவடிவம் எப்படி இருக்க வேண்டும் என்பது குறித்து வரையறுக்க பணிக்கப்பட்டார்கள். ஆண்டர்ஸ் மற்றும் குத்ரே இருவரும் இரண்டு மாத காலத்தில் ஆரம்ப வடிவமைப்பை உருவாக்கினார்கள். 1997-ன் கிறிஸ்துமஸ் விடுமுறையின் போது குத்ரே இதற்கான ஆரம்பநிலை மூலமுன்மாதிரி குறியீடுகளை உருவாக்கினார். முதல் முன்மாதிரியானது, "XSP" என்று அழைக்கப்பட்டது. குத்ரே ஒரு 2007 நேர்காணலில் விளக்கம் அளிக்கும் போது, "எல்லோரும் X எதை குறிக்கிறது என்று கேட்பார்கள். இப்போது இது எதையும் குறிக்கவில்லை. XML கூட இப்படி தான் தொடங்கியது. XSLT கூட அப்படி தான் தொடங்கியது. அருமையானது எல்லாமே X என்பதில் இருந்து தான் தொடங்கி இருக்கிறது. இதனால் தான் நாங்களும் இதற்கு இவ்வாறு பெயரிட்டோம்." என்று குறிப்பிட்டார். ஆனால் புதிய பணித்தளத்தைப் பொதுமொழி செயல்நேரத்தில் உருவாக்க தீர்மானிக்கப்பட்டது. மைக்ரோசாஃப்டின் Component Object Model பணித்தளத்திலிருந்த கசடுகள் சேகரிப்பும் (Garbage collection), பிற வசதிகளும் மிகவும் தேவையான வசதிகளாக கருதப்பட்டன. அவர்களின் புதிய வலை அபிவிருத்தி பணித்தளத்தின் வெற்றி CLR-ன் வெற்றியைச் சார்ந்திருந்தது. XSP போலவே, CLR அதன் ஆரம்பநிலை அபிவிருத்திகளில் இருந்தது. ஆகவே மைக்ரோசாஃப்டில் CLR-ஐ அதிகமாக இலக்கில் கொண்ட முதல் குழுவாக XSP குழு அமைந்தது.  

பொதுமொழி செயல்நேர அடித்தளத்திற்கு நகர்ந்ததால், XSP மீண்டும் C#-ல் நிறுவப்பட்டு, ASP+ என்று பெயர் மாற்றப்பட்டது. இந்த நிலையில் இந்த புதிய பணித்தளம் எஎஸ்பி-யை வெற்றி கொண்டுவிட்டதாக கருதப்பட்டது. அத்துடன் எஎஸ்பி அபிவிருத்தியாளர்கள் இதற்கு சுலபமாக மாறுவதற்கான வழியை அளிப்பதே இந்த புதிய பணித்தளத்தின் நோக்கமாக இருந்தது.  

2000ஆம் ஆண்டு மே 2ஆம் தேதி, அரிஜோனாவின் போனிக்ஸில் நடந்த எஎஸ்பி இணைப்புகள் மாநாட்டில், மார்க் ஆண்டர்ஸ் முதன்முறையாக ASP+ பணித்தளத்தின் விளக்கத்தை வெளியிட்டார். புளோரிடாவின் ஓர்லண்டோவில் 2000ஆம் ஆண்டு ஜூலை 11-ல் நடைபெற்ற, மேம்பாட்டு வல்லுனர்கள் மாநாட்டில் ASP பற்றிய பரந்த மக்களுக்கான விளக்கமும், ASP+ ஆரம்பநிலை முன்சோதனை வெளியீடும் வெளியிடப்பட்டது. இம்மாநாட்டில், மைக்ரோசாஃப்டின் புதிய விஷூவல் பேசிக்.நெட் மற்றும் C# மொழிகளும் அறிவிக்கப்பட்டன. அதனோடு பல்வேறு மென்பொருள் கருவிகளின் மூலமாக Python மற்றும் Perl வசதிகளும் எடுத்துக்காட்டப்பட்டன.  

2000-ஆம் ஆண்டின் இரண்டாம் பாதியில், ".நெட்" முத்திரைச்சொல் முடிவு செய்யப்பட்டவுடன், ASP+ என்பது எஎஸ்பி.நெட் என்று பெயர் மாற்ற தீர்மானிக்கப்பட்டது. அந்த ஆண்டில் *MSDN நிகழ்ச்சி* யில் தோன்றிய மார்க் ஆண்டர்ஸ் குறிப்பிடுகையில், "உண்மையில் பல்வேறு காரணிகளின் அடிப்படையில் .நெட் முனைவு அமைந்திருக்கிறது. இது XML மற்றும் வலை சேவைகள் சார்ந்தது என்பதுடன், உண்மையில் இது முடிந்த வரை இணையத்தை மேம்படுத்துகிறது... நாங்கள் .நெட் வரைச்சட்டத்தை உருவாக்கும் ஏனைய பணித்தள விஷயங்களையும் இதற்கு ஒத்த வகையில் கொண்டு வர விரும்புகிறோம்." என்று தெரிவித்தார். மேலும் மைக்ரோசாஃப்ட் வலை சேவைகளுக்கான தங்கள் பணித்தளத்தின் ஒரு பாகமாக இதை மைக்ரோசாஃப்ட் வலுவாக ஊக்குவித்தது. ASP.NET-க்கான தயாரிப்பு பிரிவு மேலாளராக குத்ரே நியமிக்கப்பட்டார். 2003ஆம் ஆண்டு ஏப்ரல் 24-ல் விண்டோஸ் சர்வர் 2003-ன் ஒரு பாகமாக பதிப்பு 1.1 வெளியிடப்பட்டது. இந்த புதிய பதிப்பு கைபேசி சாதனங்களுக்கு ASP.NET-ன் உதவியை மேம்படுத்தும் வகையில் அமைந்திருந்தது.  

## பண்புகள்
### பக்கங்கள்

உத்தியோகப்பூர்வமாக "வலைப்படிவங்கள்" என்று அழைக்கப்படும் .NET பக்கங்களே பயன்பாட்டு அபிவிருத்திக்கான முக்கிய கட்டுமானப் பிழம்புகளாக இருக்கின்றன. இந்த வலைப்படிவங்கள் ஒரு ".aspx" விரிவாக்கங்களுடன் கோப்புகளில் இடம் பெற்றிருக்கும். நிரல்படுத்தல் வார்த்தைகளில் கூறுவதானால், இந்த கோப்புகள் குறிப்பிடத்தக்க அளவில் மாறா (X)HTML மார்க்அப்பைக் கொண்டிருக்கும். அத்துடன் வழங்கனின் வலை கட்டுப்பாடுகளையும், பயனர் கட்டுப்பாடுகளையும் வரையறுக்கும் மார்க்அப்களையும் கொண்டிருக்கும். இங்கே தான் அபிவிருத்தியாளர்கள் வலைப்பக்கத்திற்குத் தேவையான அனைத்து மாறா மற்றும் மாறும் தகவலடக்கத்தை வைத்திருப்பார்கள். மேலும் அத்துடன், வழங்கனில் ஓடி கொண்டே இருக்கும் மாறும் குறியீடானது, ஒரு பக்கத்தில் இருக்கும் <code></code> என்ற ஒரு பகுதிக்குள்ளேயே அமைக்கப்படுகிறது. இது PHP, JSP, மற்றும் ASP போன்ற பிற வலை அபிவிருத்தி தொழில்நுட்பங்களைப் போன்றதே. ஆனால் தரவு பிணைத்தல் (data binding) தேவைகளில் தவிர, பொதுவாக இதற்கு ஊக்கம் அளிக்கப்படுவதில்லை. பக்கத்தைப் பெறும் போது நிறைய அழைப்புகள் தேவைப்படுவதால் இது இவ்வாறு செய்யப்படுகிறது.  

பின்வரும் உதாரணம், பின்புற குறியீட்டு முறைக்கு (code-behind) பதிலாக, "inline" குறியீட்டைப் பயன்படுத்துவதைக் கவனிக்கவும்.  
<source lang="csharp">  
<%@ Page Language="C#" %>  

<!DOCTYPE html 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>  
</source>  

### பின்புற குறியீட்டு முறை
பின்புற குறியீட்டு முறையைப் பயன்படுத்தி டைனமிக் நிரல் குறியீட்டுடன் தொடர்புபடுவதையே மைக்ரோசாஃப்ட் பரிந்துரைக்கிறது. இந்த முறையானது குறியீட்டை ஒரு பிரத்யேக கோப்பில் இடுகிறது அல்லது பிரத்யேகமாக வடிவமைக்கப்பட்ட ஸ்க்ரிப்ட் ஒட்டியில் (tag) இருத்துகிறது. பின்புற குறியீட்டு முறையின் கோப்புகள் *Mypage.aspx.cs* அல்லது *Mypage.aspx.vb* போன்ற குறிப்பிடத்தக்க பெயர்களைக் கொண்டிருக்கும். குறிப்பாக, ASPX கோப்பு போன்றே இதே கோப்பு பெயர்கள் இருக்கும். ஆனால் இறுதியில் இருக்கும் நீட்சி மட்டும் பக்க மொழியைக் குறிப்பிட்டு காட்டும் வகையில் அமைந்திருக்கும். இந்த செயல்முறை மைக்ரோசாஃப்டின் விஷூவல் ஸ்டூடியோவிலும் மற்றும் பிற IDE-களிலும் தானாகவே நடக்கிறது. இந்த பாணியிலான நிரல்படுத்தலைப் பயன்படுத்தும் போது, அபிவிருத்தியாளர் பல்வேறு நிகழ்வுகளுக்கு, அதாவது ஆவணம் முழுவதையும் ஒரு வழிமுறைப்படி செய்யாமல், பக்கம் ஏற்றப்படுவது, அல்லது ஒரு கட்டுப்பாட்டுக் கட்டளை சொடுக்கப்படுவது போன்ற நிகழ்வுகளுக்கு பிரதிபலிப்பைக் காட்டும் வகையில் குறியீட்டை எழுதுகிறார்.  

ASP.NET-ன் பின்புற குறியீட்டு முறை பழைய எஎஸ்பி-இல் இருந்து வெளியேறுவதற்கான வழியைக் காட்டுகிறது. அதில் புறத்தோற்றபாங்கையும், தகவலடக்கத்தையும் பிரித்து காட்டுவதை மனதில் வைத்து பயன்பாடுகளை உருவாக்க அபிவிருத்தியாளர்களை அது ஊக்குவிக்கிறது.  

#### உதாரணம்

<source lang="asp">  
<%@ Page Language="C#" CodeFile="SampleCodeBehind.aspx.cs" Inherits="Website.SampleCodeBehind"  
AutoEventWireup="true" %>  
</source>  

மேற்படி ஒட்டி ASPX கோப்பின் தொடக்கத்திலேயே இடம் பெற்றிருக்கும். *@ Page* directive-ன் *குறியீட்டுகோப்பு* தன்மை, அந்த கோப்பு பின்புற குறியீட்டு முறையில் செயல்படுவதைக் குறிக்கிறது. அதேசமயம் அதிலிருக்கும் பழைய குறிப்பு, அந்த பக்கம் எதிலிருந்து பெறப்பட்டதோ அதன் வகையை குறிப்பிட்டுக் காட்டுகிறது. இந்த எடுத்துக்காட்டில், *@ Page* directive ஆனது SampleCodeBehind.aspx-ல் சேர்க்கப்பட்டிருக்கிறது. பின்னர் SampleCodeBehind.aspx.cs ஆனது இந்த பக்கத்திற்கு பின்புற குறியீட்டு முறையாக செயல்படுகிறது:  

<source lang="csharp">  
using System;  

namespace Website  
{  
public partial class SampleCodeBehind : System.Web.UI.Page  
{  
protected void Page_Load(object sender, EventArgs e)  
{  
Response.Write("Hello, Every one!");  
}  
}  
}  
</source>  

இதில், Page_Load முறையானது, ASPX பக்கம் கோரப்படும் ஒவ்வொருமுறையும் மீண்டும் மீண்டும் அழைக்கப்படுகிறது. நிரலாளர் செயல்முறைப்படுத்தலைச் செய்ய பக்க செயல்பாட்டு செயல்முறையின் பல்வேறு நிலைகளில் நிகழ்வு கையாளுனிகளை (event handlers) நிறுவலாம்.  

### பயனர் கட்டுப்பாடுகள்

ASP.NET நுட்பம், பயனர் கட்டுப்பாடுகளை உருவாக்குவதன் மூலமாக மறுஉபயோகத்திற்குரிய உட்கூறுகளை உருவாக்க உதவுகின்றன. ஒரு பயனர் கட்டுப்பாடு ஒரு வலைப்படிவத்தின் அதே கட்டமைப்பையே கொண்டிருக்கும். ஆனால் விதிவிலக்காக அந்த கட்டுப்பாடுகள் <code>System.</code><code>Web.UI.UserControl</code>-ல் இருந்து பெறப்பட்டு, ASCX கோப்புகளில் சேமிக்கப்படுகின்றன. ASPX கோப்புகளைப் போலவே, ASCX கோப்பும் நிலையான HTML அல்லது XHTML மார்க்அப்பையும், அத்துடன் மார்க்அப்-களை வரையறுக்கும் வலைக்கட்டுபாட்டையும், மற்றும் பிற பயனர் கட்டுப்பாடுகளையும் கொண்டிருக்கிறது.  

நிரலாளர்கள் தங்களின் சொந்த பண்புகள், முறைகள், மற்றும் நிகழ்வு கையாளுனிகளைச் சேர்க்க முடியும். ஒரு நிகழ்வு குமிழியக்க பொறியமைப்பு ஒரு பயனர் கட்டுப்பாட்டால் வீசப்பட்ட ஒரு நிகழ்வை அது கொண்டிருக்கும் பக்கம் வரைக்கும் எடுத்துச் செல்வதற்கான திறனை அளிக்கிறது.  

### தேவைக்கேற்ற கட்டுப்பாடுகள்

நிரலாளர்கள் எஎஸ்பி.நெட் பயன்பாடுகளுக்காக தேவைக்கேற்ற கட்டுப்பாடுகளையும் உருவாக்க முடியும். *பயனர் கட்டுப்பாடுகளைப்* போல, இந்த கட்டுப்பாடுகள் ஒரு ASCX கோப்பைக் கொண்டிருக்காது. இதில் அவற்றின் குறியீடு அனைத்தும் ஒரு DLL-கோப்பிற்குள் தொகுக்கப்பட்டிருக்கும். இதுபோன்ற தேவைக்கேற்ற கட்டுப்பாடுகளைப் பன்முக வலை-பயன்பாடுகளுக்குள் பயன்படுத்த முடியும். ஆனால், இது பயனர் கட்டுப்பாடுகளில் அனுமதிக்கப்படுவதில்லை.  

### வழங்கும் நுட்பம்

எஎஸ்பி.நெட்-ஐ தொகுக்கும் போது, வார்ப்புரு (.aspx) கோப்பு துவக்க குறியீடுகளுக்குள் தொகுக்கப்படுகிறது. இது மூல வார்ப்புருவைக் குறிப்பிட்டு ஒரு கட்டுப்பாட்டு தொடர்வை (கலவை) உருவாக்குகிறது. நிலையுரு எழுத்துக்கள் நிலையுரு கட்டுப்பாட்டு வகுப்பின் நிலைக்குள் செல்கின்றன. மேலும் வழங்கன் கட்டுப்பாடுகள் ஒரு பிரத்யேக கட்டுப்பாட்டு வகுப்பின் நிலையால் குறிப்பிட்டு காட்டப்படுகின்றன. துவக்க குறியீடு பயனரால் எழுதப்பட்ட குறியீட்டுடன் ஒருங்கிணைக்கப்படுகின்றன. பின்னர் அந்த பக்கத்திற்காக ஒரு பிரத்யேக வகுப்பில் தொகுக்கப்படுகின்றன. அந்த பக்கம் கட்டுப்பாட்டு தொடர்வின் வர்க்கமாக இரட்டிப்பாகி செல்கிறது.  

இந்த பக்கத்திற்கான உண்மையான கோரிக்கைகள் பல்வேறு படிகளின் மூலமாக செயல்படுத்தப்படுகின்றன. முதலில், துவக்கும் போது, பக்க வகுப்பின் (page class) ஒரு சான்று உருவாக்கப்படுகிறது. பின்னர் துவக்க குறியீடு செயல்படுத்தப்படுகிறது. இது துவக்க கட்டுப்பாட்டு கிளையை உருவாக்குகிறது. இந்த கிளை இப்போது குறிப்பிடத்தக்க அளவில் பின்வரும் வழிகளில் பக்க நுட்பங்களால் மாற்றி அமைக்கப்படுகிறது. இந்த கிளையில் இருக்கும் ஒவ்வொரு கணுவும் ஒரு கட்டுப்பாடாகும். இது ஒரு வகுப்பின் ஒரு சான்றாக குறிக்கப்படுகிறது. இந்த குறியீடு கிளை வடிவத்தை மாற்றக் கூடும். அத்துடன் ஒவ்வொரு தனித்தனி கணுக்களின் பண்புகளையும்/முறைகளையும் கூட மாற்றி அமைக்கக் கூடும். இறுதியாக, வழங்கும் படிநிலையின் போது, ஒரு பார்வையாளர் கிளையில் இருக்கும் ஒவ்வொரு கணுவையும் பார்வையிடுகிறார். இத்துடன் பார்வையாளரின் முறைகளைப் பயன்படுத்தி ஒவ்வொரு கணுவும் தானாகவே மொழிமாற்றவும் கேட்டு கொள்ளப்படுகிறது. இதன் விளைவாக கிடைக்கும் HTML வெளியீடு, வாடிக்கையாளருக்கு அனுப்பி வைக்கப்படுகிறது.  

இந்த கோரிக்கை செயல்முறைப்படுத்தப்பட்ட பின்னர், பக்க வகுப்பின் சான்று கைவிடப்படும். அத்துடன் மொத்த கட்டுப்பாட்டு கிளையும் கைவிடப்படும். இது புதிய எஎஸ்பி.நெட் நிரலாளர்களுக்கு பொதுவாக சிறிது குழப்பத்தை ஏற்படுத்தும். இது வகுப்பு சான்று உறுப்பினர்களைச் சார்ந்திருப்பதால், அது ஒவ்வொரு பக்க கோரிக்கை/ பிரதிபலிப்பு சுற்றுடன் காணாமல் போய்விடுகிறது.  

### நிலை மேலாண்மை

எஎஸ்பி.நெட் பயன்பாடுகள் ஒரு வலை வழங்கனில் பதிப்பிக்கப்பட்டு, நிலையற்ற (stateless) HTTP நெறிமுறையின் வழியாக அணுகப்படுகின்றன. இந்நிலையில், அந்த பயன்பாடு ஒரு நிலைப்பட்ட (stateful) தொடர்பை பயன்படுத்தினால், அது சொந்தமாக நிலை மேலாண்மையைச் செயல்படுத்த வேண்டியதிருக்கும். எஎஸ்பி.நெட் நிலை மேலாண்மைக்காக, பயன்பாடுகளில் பல்வேறு செயல்பாடுகள் வழங்கப்படுகின்றன. கருத்து வகையில், மைக்ரோசாஃப்ட் "நிலை" என்பதை பெரும்பாலும் GUI நிலையாக கையாள்கிறது; ஒரு பயன்பாடு, "தரவு நிலையைத்" தொடர்ந்து கண்காணிக்க வேண்டிய நிலை ஏற்படும் போது, பெரிய பிரச்சினைகள் உருவாகிவிடுகின்றன. அதாவது கோரிக்கைகளின் மந்தமான மதிப்பீடுகளுக்கோ அல்லது துவக்குவதற்கு நீண்ட காலம் எடுக்கும் கோரிக்கைகளுக்கோ இடையில் ஒரு தடுமாற்றத்தோடு இருக்கக்கூடிய ஓர் உறுதியான இயந்திரம் போல உருவாகிவிடுகின்றன.  

#### பயன்பாட்டு நிலை

பயன்பாட்டு நிலை (application state) என்பது பயனர் வரையறுத்த மாறிகளின் ஒரு தொகுப்பாகும். இது ஒரு எஎஸ்பி.நெட் பயன்பாட்டால் பகிர்ந்து கொள்ளப்படுகிறது. <code>Application_OnStart</code> நிகழ்வு தூண்டிவிடும் போது இவை அமைக்கப்பட்டு, துவக்கப்படுகின்றன. மேலும் இவை இறுதி சான்று இருக்கும் வரைக்கும் இருக்கின்றன. பயன்பாட்டு நிலை மாறிகள் <code>பயன்பாட்டுகள்</code> தொகுப்புகளைப் பயன்படுத்தி அணுகப்படுகின்றன. இது பயன்பாட்டு நிலை மாறிகளுக்கு ஒரு போர்வையை அளிக்கிறது. பயன்பாட்டு நிலை மாறிகள் (Application state variables) பெயர்களால் அடையாளம் காணப்படுகின்றன.  

எஎஸ்பி.நெட் அமர்வு மாறிகளுக்கான நிலைப்பின் மூன்று முறைகளை ஆதரிக்கிறது:  

இதன் முக்கிய பயன் என்னவென்றால் postback-கள் மத்தியில் படிவ தகவலைக் காப்பாற்றுவதே ஆகும். ஆகவே ஒரு பயனர் ஒரு படிவத்தை நிரப்பும் போது தவறான மதிப்பை உள்ளிட்டால், அதை திருத்துவதற்காக இந்த படிவம் பயனருக்கு திருப்பி அனுப்பும் போது இது தானாகவே திரும்பவும் நிரப்பப்பட்டிருக்கும். முன்னிருப்பிலேயே பார்வைநிலை ஆன் செய்யப்பட்டிருக்கும். ஒரு பக்கம் postback-ன் போது நிஜத்தில் பயன்படுத்தப்பட்டதா இல்லையா என்பதைப் பொறுத்தில்லாமல் இந்த பக்கத்தின் ஒவ்வொரு கட்டுப்பாட்டின் தரவையும் பார்வைநிலை வழக்கமாக வரிசைப்படுத்துகிறது. ஆனால் இந்த நடவடிக்கையை மாற்றி அமைக்க முடியும் (கட்டாயம் மாற்றி அமைக்கவும் வேண்டும்), ஒரு கட்டுப்பாடு சார்ந்தோ, ஒரு பக்கம் சார்ந்தோ, அல்லது சர்வர் முழுவதுமான அடிப்படையிலோ இந்த பார்வைநிலையை செயல்படுத்தாமலும் செய்ய முடியும்.  

பார்வைக்குரிய நிலை தரவைக் கொண்டிருக்கும் base64 சரத்தின் வரிசைப்படுத்தலை, வலையில் கிடைக்கும் பல்வேறு கருவிகளில் ஒன்றைப் பயன்படுத்தியோ அல்லது ஏதாவதொரு பொதுவான base64 குறியிறக்கியைப் பயன்படுத்தியோ எளிமையாக குலைத்துவிட முடியும் என்பதால், மிகவும் முக்கியமான அல்லது பிரத்யேக தகவல்களை ஒரு பக்கத்தின் அல்லது கட்டுப்பாட்டின் view state-ல் சேமித்து வைக்கும் போது அபிவிருத்தியாளர்கள் மிகவும் எச்சரிக்கையாக இருக்க வேண்டி உள்ளது. பார்வைக்குரிய நிலை, முன்னிருப்பாகவே, __VIEWSTATE மதிப்பை குறியேற்றம் செய்து வைத்திருப்பதில்லை; எவ்வாறிருப்பினும், ஒரு குறிப்பிட்ட அளவிலான பாதுகாப்பைக் கொண்டிருக்கும் வகையில் அனைத்து வழங்கன்களுக்கும் குறியேற்றத்தைச் செயல்பாட்டில் வைத்திருக்க முடியும்.  

#### மற்றவை
குக்கீஸ், கேச்சிங் மற்றும் வினாச்சரம் பயன்படுத்துதல் ஆகியவை ASP.NET-ஆல் ஒத்துழைக்கப்படும் நிலை மேலாண்மையின் பிற விஷயங்களாகும்.  

### வார்ப்புரு இயந்திரம்

முதன்முதலாக வெளியிடப்பட்ட போது, ASP.NET-ல் ஒரு வார்ப்புரு இயந்திரம் கிடையாது. .NET வரைச்சட்டம் ஆப்ஜெக்ட்டைச் சார்ந்து இருந்ததாலும், மரபுவழியடைதலை அனுமதிப்பதாலும், பல அபிவிருத்தியாளர்கள் "System.Web.UI.Page"-ல் உள்ளிருப்பாக இருந்த ஒரு புதிய அடித்தள வகுப்பை வரையறுக்க வேண்டி இருந்தது, எழுதும் முறைகள் இங்கே HTML-ல் இருந்து பெறப்பட்டது, பின்னர் இந்த பக்கங்களை அவர்களின் பயன்பாட்டில் இந்த புதிய வகுப்பில் இருந்து உள்ளிருப்பாக வைப்பார்கள். பொதுவான உட்கூறுகள் ஒரு வலைத்தளத்தினிடையே மறுஉபயோகம் செய்யப்பட இது அனுமதிக்கிறது என்ற போதினும், இது குழப்பத்தையே ஏற்படுத்தியது, மேலும் முதன்மை குறியீட்டை மார்க்அப் உடன் கலந்துவிடுகிறது. அது மட்டுமில்லாமல், இந்த முறையானது பயன்பாட்டை ஓடவிட்டு நேரடி பார்வையில் மட்டும் தான் பரிசோதிக்க முடியும் . இதைதை வடிவமைக்கும் போது பரிசோதிக்க முடியாது. பிற அபிவிருத்தியாளர்கள் ஒவ்வொரு பக்கத்திலும் ஒரே வழிசெலுத்துதலையும், பிற உட்கூறுகளையும் நிறுவ வேண்டியதைத் தடுக்க பிற உத்திகளையும், கோப்புகளையும் சேர்த்து பயன்படுத்தினார்கள்.  

ASP.NET 2.0 "முதன்மை பக்கங்கள்" நுட்பத்தை அறிமுகப்படுத்தியது, இது வார்ப்புரு-அடிப்படையிலான பக்க அபிவிருத்தியை அனுமதிக்கிறது. ஒரு வலை பயன்பாடு ஒன்றோ அல்லது பல முதன்மை பக்கங்களைக் கொண்டிருக்கக் கூடும், ASP.NET 3.5-ல் இருந்து தொடங்கும் இதை தொகுதியாக அமைக்கலாம். முதன்மை வார்ப்புருக்கள் இட-குறிப்பு கட்டுப்பாடுகளைக் கொண்டிருக்கும், இது *ContentPlaceHolders* என்று அழைக்கப்படுகிறது, இது மாறும் தகவலடக்கம் எங்கே செல்கின்றன என்பதையும், அத்துடன் சேய் பக்கங்களுக்கு இடையில் HTML மற்றும் Javascript-கள் பகிர்ந்து கொள்ளப்படுவதையும் குறிப்பிட்டு காட்டுகின்றன.  

சேய் பக்கங்கள் அந்த ContentPlaceHolder கட்டுப்பாடுகளைப் பயன்படுத்துகின்றன, இவை தகவலடக்க பக்கம் இருந்து வரும் முதன்மை பக்கத்தின் இட-குறிப்பான்களுடன் பொருத்தப்பட வேண்டும். பக்கத்தின் மீத பகுதி முதன்மை பக்கத்தின் பகிர்ந்துகொள்ளப்பட்ட பாகங்களால் வரையறுக்கப்படுகிறது, அதாவது ஒரு எழுதியில் இருக்கும் ஒரு மின்னஞ்சல் இணைப்பு முறையைப் போல வரையறுக்கப்படுகிறது. தகவலடக்க பக்கத்தில் இருக்கும் அனைத்து மார்க்அப் மற்றும் சர்வர் கட்டுப்பாடுகளும் ContentPlaceHolder கட்டுப்பாட்டுக்கு உள்ளேயே இடம் பெற்றிருக்க வேண்டும்.  

ஒரு தகவலடக்க பக்கத்திற்கான கோரிக்கை விடுக்கப்படும் போது, ASP.NET தகவலடக்க பக்கத்தின் வெளியீட்டை முதன்மை பக்கத்தின் வெளியீட்டுடன் சேர்த்துவிட்டு, வெளியீட்டை பயனருக்கு அனுப்பி விடுகிறது.  

முதன்மை பக்கமானது தகவலடக்க பக்கத்தை முழுமையாக அணுகும் வகையில் இருக்கிறது. அதாவது, தகவலடக்க பக்கமத்தால் தலைப்பியை மாற்றுதல், தலைப்பை மாற்றுதல், கேச்சிங் உள்ளமைவு செய்தல் மற்றும் இன்னும் இதரபிற வேலைகளையும் செய்ய முடியும். பொது விஷயங்களையோ அல்லது முறைகளையோ முதன்மை பக்கம் வெளிக்காட்டினால் (எடுத்துக்காட்டாக, காப்புரிமை தகவல்களை அமைப்பது போன்றவை), தகவலடக்க பக்கம் அவற்றையும் பயன்படுத்தி கொள்ளும்.  

### பிற கோப்புகள்

ASP.NET-ல் உள்ளடங்கி இருக்கும் பல்வேறு பதிப்புகளுடன் இணைந்திருக்கும் பிற கோப்பு விரிவாக்கங்கள்:  

| நீட்சி | தேவைப்படும் பதிப்பு | விளக்கம் |  |
| --- | --- | --- | --- |
| asax | 1.0 | Global.asax, இது பயன்பாட்டு-அளவிலான தர்க்கத்திற்காக பயன்படுத்தப்படுகிறது |  |
| ascx | 1.0 | வலை பயனர்கட்டுப்பாடுகள்: வலைப்பக்கங்களில் தேவைக்கேற்ற கட்டுப்பாடுகள் இடம் பெறச்செய்யப்படும். |  |
| ashx | 1.0 | தேவைக்கேற்ற HTTP கையாளுனிகளை மாற்றியமைத்தல் |  |
| asmx | 1.0 | வலைச்சேவை பக்கங்கள். பதிப்பு 2.0-ல் இருந்து ஒரு asmx கோப்பின் ஒரு பின்புற குறியீட்டு பக்கம் app_code கோப்புறைக்குள் இருத்தப்படும். |  |
| axd | 1.0 | trace.axd வெளியீடுகளைக் கோரி web.config-ல் செயற்தூண்டல் செய்யப்படும் போது, பயன்பாட்டு-அளவிலான கண்காணிப்பை வெளியிடுகிறது. மேலும் இது சிறப்பு webresource.axd கையாளுனியிலும் பயன்படுத்தப்படுகிறது, இது ஒரேயொரு கோப்பில் (ஒரு 'assembly') நிறுவுவதற்காக படங்கள், ஸ்கிரிப்ட்கள், css மற்றும் இதர பிறவற்றுடன் ஓர் ஆக்கக்கூறை/கட்டுப்பாட்டை முழுமையாக தொகுக்க கட்டுப்பாட்டு/ஆக்கக்கூறு அபிவிருத்தியாளர்களை அனுமதிக்கிறது. |  |
| உலாவி | 2.0 | உலாவிக்கு பொருந்தக்கூடிய கோப்புகள் XML வடிவத்தில் சேமிக்கப்படுகின்றன; இது பதிப்பு 2.0-த்தில் அறிமுகப்படுத்தப்பட்டது. ASP.NET 2 பொதுவான வலை உலாவிகளுக்கு ஒத்துழைக்கும் வகையில் இவற்றில் பலவற்றை முன்னிருப்பாகவே கொண்டிருக்கிறது. இவை எந்த உலாவி எம்மாதிரியான திறனைக் கொண்டிருக்கிறது என்பதை குறிப்பிடுகிறது, இதன் மூலம் ASP.NET 2 தானாகவே மாற்றியமைத்து கொண்டு, அதற்கேற்ப அதன் வெளியீட்டை துல்லியமாக்கி கொள்ளும். சிறப்பார்ந்த .உலாவி கோப்புகளும் கையாள்வதற்காக இலவச பதிவிறக்கத்தில் கிடைக்கின்றன, எடுத்துக்காட்டாக, W3C மதிப்பீட்டான், இதன் மூலம் அது தரமுறைப்படுத்தலுக்கு ஏற்புடைய வகையில் இருந்து தரமுறைப்படுத்துவதற்கு ஏற்ற பக்கங்களை முறையாக எடுத்துக்காட்டுகிறது. பயன்பாட்டிற்கு கடுமையான BrowserCaps பிரிவை மாற்றிவிடுகிறது, machine.config-ல் இருக்கும் இதை ASP.NET 1.x-ல் இருக்கும் web.config-ல் திருத்தி எழுத முடியும். |  |
| config | 1.0 | ஒரு குறிப்பிட்ட வலைப்பயன்பாட்டில் இந்த விரிவாக்கத்தை முன்னிருப்பாக பயன்படுத்தக் கூடிய ஒரே கோப்பு web.config கோப்பாகும் (இதே போல machine.config மொத்த வலை சர்வரையும் மற்றும் அதிலிருக்கும் அனைத்து பயன்பாடுகளையும் பாதிக்கும்), ஆனால் பிற config கோப்புகளை உருவாக்கவும், உள்ளெடுக்கவும் தேவையான வசதிகளை ASP.NET வழங்குகிறது. இவை XML வடிவத்தில் சேமித்து வைக்கப்படுகின்றன. |  |
| cs/vb | 1.0 | குறியீட்டு கோப்புகள் (cs என்பது c# என்பதைக் குறிக்கிறது, vb என்பது விஷூவல் பேசிக்கைக் குறிக்கிறது). பின்புற குறியீட்டு கோப்புகள் (மேலே பார்க்கவும்) அதிக செல்வாக்கு பெற்றிருக்கும் வகையில் இரண்டு முக்கிய பொது மொழிகளுக்காக ".aspx.cs" அல்லது ".aspx.vb" விரிவாக்கங்களைக் கொண்டிருக்கும். பிற குறியீட்டு கோப்புகளும் (பெரும்பாலும் பொதுவான "library" வகுப்புகளைக் கொண்டிருக்கும்) cs/vb விரிவாக்கங்களுடன் வலை கோப்புறைகளில் இருக்கும். ASP.NET 2-ல் இவை App_Code கோப்புறைக்குள் இருத்தப்பட்டிருக்கும், இங்கு மாற்றிமாற்றி தொகுக்கப்பட்டு, மொத்த பயன்பாட்டிற்கும் கிடைக்கும் வகையில் செய்யப்பட்டிருக்கும். |  |
| dbml | 3.5 | LINQ to SQL தரவு வகுப்புகள் கோப்பு |  |
| master | 2.0 | முதன்மை பக்க கோப்பு. Master1.master என்பது முன்னிருப்பு கோப்பு பெயராகும். |  |
| resx | 1.0 | உலகமயமாக்கம் மற்றும் மொழிமாற்றத்திற்கான ஆதார கோப்புகள். ஆதார கோப்புகள் உலகளாவிய வகையிலோ அல்லது "local" ஆகவோ இருக்கக்கூடும், "local" என்பது ஒரு குறிப்பிட்ட aspx அல்லது ascx கோப்பிற்குரியது என்பதைக் குறிக்கிறது. |  |
| sitemap | 2.0 | தளவரைப்பட உள்ளமைவு கோப்புகள். முன்னிருப்பு கோப்பு பெயர் web.sitemap என்பதாகும். |  |
| வெளித்தோற்றம் | 2.0 | மாற்றமைப்பு வெளித்தோற்ற கோப்புகள் |  |
| svc | 3.0 | விண்டோஸ் தொடர்பு அமைப்புச் சேவை கோப்பு |  |
| edmx | 3.5 | ADO.NET நிறுவன வரைச்சட்ட மாதிரி | } |

### கோப்பக கட்டமைப்பு

பொதுவாக, ASP.NET கோப்பக வடிவமைப்பு அபிவிருத்தியாளர்களின் விருப்பப்படியே அமைக்கப்படும். ஒருசில குறிப்பிட்ட கோப்பக பெயர்கள் தவிர, ஒரு வலைத்தளமானது எத்தனை கோப்பகங்களை வேண்டுமானாலும் நீட்டப்பட்டிருக்கலாம். இந்த வடிவமைப்பு குறிப்பிடத்தக்களவில் நேரடியாக வலைமுகவரிகளில் பிரதிபலிக்கப்பட்டிருக்கும். செயல்படுத்தப்பட்டு கொண்டிருக்கும் போது எந்த சமயத்திலும் கோரிக்கையைத் தடுத்து மாற்றுவதற்கான வாய்ப்பை ASP.NET அளிக்கிறது என்ற போதினும், ஒரு மைய பயன்பாடு அல்லது முன் கட்டுப்பாடினியைக் கொண்டு கோரிக்கைகளை நீக்க அபிவிருத்தியாளர் கட்டாயப்படுத்தப்படுவதில்லை.  

சிறப்பு கோப்பக பெயர்களாவன (ASP.NET 2.0-த்தில் இருந்து):  
; App_Browsers  
: இது வலைத்தளத்திற்கேற்ற உலாவி பற்றிய கோப்புகளைக் கொண்டிருக்கும்.  

; App_Code  
: இது "raw code" கோப்பகமாகும். ASP.NET சர்வர் தானாகவே இந்த கோப்புறையில் இருக்கும் கோப்புகளை (மற்றும் துணைகோப்புறைகளையும்) ஒரு முறையாக தொகுத்தெழுதுகிறது, இதை தளத்தின் ஒவ்வொரு பக்கத்தில் இருக்கும் குறியீட்டிலும் அணுகலாம். குறிப்பிடத்தக்களவில் App_Code-ஐ தரவு அணுகுதலுக்கான மறைமுக குறியீட்டிற்காகவும், மாதிரி குறியீடாகவும் மற்றும் தொழில்துறை குறியீடாகவும் பயன்படுத்தி கொள்ளலாம். மேலும் எந்த தளம் சார்ந்த http கையாளுனிகளும், கூறுகளும் மற்றும் வலை சேவை நிறுவுதல்களும் இந்த கோப்பகத்திற்குள் தான் செல்லும். App_Code-ஐ பயன்படுத்துவதற்கு மாற்றாக அபிவிருத்தியாளர் முன்-தொகுத்தெழுதப்பட்ட குறியீட்டுடன் கூடிய ஒரு பிரத்யேக தொகுப்பை அளிக்க முன்வரக்கூடும்.  

; App_Data  
: Access mdb மற்றும் SQL Server mdf கோப்புகள் போன்ற தரவுகளஞ்சியங்களுக்கான முன்னிருப்பு கோப்பகமாகும். பொதுவாக இந்த ஒரேயொரு கோப்பகம் மட்டும் தான் பயன்பாடுகளுக்கான எழுதும் அனுமதியைப் பெற்றிருக்கும்.  

; App_LocalResources  
: இது தளத்தின் தனித்தனி பக்கங்களுக்காக மொழிமாற்று ஆதார கோப்புகளைக் கொண்டிருக்கும். எடுத்துக்காட்டாக, CheckOut.aspx.fr-FR.resx எனும் கோப்பு CheckOut.aspx பக்கத்தின் பிரெஞ்ச் பதிப்பிற்கான மொழிமாற்று ஆதாரங்களை வைத்திருக்கிறது. UI கலாச்சாரம் பிரெஞ்ச்சில் கொண்டு வரப்படும் போது, மொழிமாற்றத்திற்காக ASP.NET தானாகவே இந்த கோப்பைக் கண்டுபிடித்து, பயன்படுத்துகிறது.  

; App_GlobalResources  
: இது தளத்தின் ஒவ்வொரு பக்கத்திற்கும் மொழிமாற்று ஆதாரங்களுடன் resx கோப்புகளைக் கொண்டிருக்கிறது. இங்கே தான் ASP.NET அபிவிருத்தியாளர் குறிப்பிடத்தக்களவிற்கு மொழிமாற்று சேதிகளையும், இதர பிறவற்றையும் சேமித்து வைக்கிறார், இவை ஒன்றும் மேற்பட்ட பக்கங்களில் பயன்படுத்தப்படுகின்றன.  

; App_Themes  
: இது தளத்திற்கான மாற்று தீம்களைக் கொண்டிருக்கும்.  

; App_WebReferences  
: இது வலைத்தளத்தில் ஏற்கப்படும் வலைச்சேவைகளுக்கான ஆதாரங்களுக்கான கண்டுபிடிப்பு கோப்புகளையும், WSDL கோப்புகளையும் கொண்டிருக்கும்.  

; Bin  
: உங்கள் பயன்பாடுகளில் நீங்கள் குறிப்பிட விரும்பும் கட்டுப்பாடுகள், ஆக்கக்கூறுகள், அல்லது பிற குறியீடுகளுக்கான தொகுத்தெழுதப்பட்ட குறியீட்டை இது கொண்டிருக்கும். இந்த Bin கோப்புறையில் குறியீட்டால் குறிக்கப்பட்ட எந்த வகுப்புகளும் தானாகவே உங்கள் பயன்பாட்டில் குறிக்கப்படுகிறது.  

## செயல்திறன்

(பழைய ASP உட்பட) பிற ஸ்கிரிப்ட் அடிப்படையிலான தொழில்நுட்பங்களை விட ASP.NET சிறந்த செயல்திறனைப் பெற நோக்கம் கொண்டிருக்கிறது, வலை சர்வரில் ஒன்று அல்லது பல DLL கோப்புகளுக்குச் சர்வரைச் சார்ந்த குறியீட்டைத் தொகுத்தெழுதுவதன் மூலம் இதை அடைய கருதுகிறது. ஒரு பக்கம் முதல்முறையாக கோரப்படும் போது இந்த தொகுத்தெழுதுதல் தானாகவே நடக்கிறது (அதாவது பக்கங்களுக்காக அபிவிருத்தியாளர் ஒரு பிரத்யேக தொகுத்தெழுதலை செய்ய வேண்டிய அவசியமில்லை). இந்த வசதி செயல்திறன் ஆதாயத்துடன் ஒரு தொகுத்தெழுதப்பட்ட பைனரி மொழியில் ஸ்கிரிப்டிங் செய்வதன் மூலம் கிடைக்கும் எளிமையான அபிவிருத்தியை வழங்குகிறது. எவ்வாறிருப்பினும், தொகுத்தெழுதல் கவனிக்க வேண்டிய ஒரு நிலையை உருவாக்குகிறது, அதாவது புதிதாக மாற்றப்பட்ட பக்கம் முதல்முறையாக வலை சர்வரில் இருந்து கோரப்படும் போது வலை பயனருக்கு சிறிய தாமதம் ஏற்படும், ஆனால் கோரப்பட்ட அந்த பக்கம் மேற்கொண்டு இற்றைப்படுத்தப்பட்டால் ஒழிய மீண்டும் அதுபோல் தாமதப்படாது.  

ASPX மற்றும் பிற ஆதார கோப்புகள் ஓர் இணைய தகவல் சேவைகள் சர்வரில் (அல்லது பிற பொருத்தமான ASP.NET சர்வரிகளில்; கீழே கொடுக்கப்பட்டிருக்கும் பிற நிறுவுதல்கள் என்ற பகுதியைப் பார்க்கவும்) இருக்கும் ஒரு மெய்நிகர் ஹோஸ்டில் இருத்தப்படுகிறது. முதல்முறையாக ஒரு வாடிக்கையாளர் ஒரு பக்கத்தைக் கோரும் போது, .NET வரைச்சட்டம் ஒரு .NET அசெம்பிளிக்குள் ஆராய்ந்து, அந்த கோப்பைத் (கோப்புகளைத்) தொகுத்தெழுதுகிறது, அதன்பிறகு பதில் அனுப்புகிறது; அதுவரை கோரிக்கைகளுக்கு DLL கோப்புகளில் இருந்து சேவை அளிக்கப்படுகிறது. முன்னிருப்பாக, முதல் கோரிக்கையின் அடிப்படையில், ASP.NET மொத்த தளத்தையும் 1000 கோப்புகளின் பகுதிகளாக தொகுத்தெழுதும். தொகுத்தெழுதல் தாமதம் பிரச்சனைகளை உருவாக்குகிறது என்றால், அந்த பகுதியின் அளவு அல்லது தொகுத்தெழுதல் உத்தி மாற்றி அமைக்கப்படும்.  

அபிவிருத்தியாளர்கள் MS விஷூவல் ஸ்டூடியோ பயன்படுத்தி, நிறுவுதலுக்கு முன்னால் அவர்களின் "பின்புற குறியீட்டு" கோப்புகளை முன்னரே தொகுத்தெழுதவும் தேர்ந்தெடுக்கக் கூடும், இவ்வாறு செய்யும் போது ஒரு உற்பத்தி சூழலில் சமீபத்தில் வந்த தொகுத்தெழுதலுக்கான தேவையைத் தவிர்த்துவிடுவார்கள். இது வலை சர்வரில் முதன்மை குறியீட்டைக் கொண்டிருக்க வேண்டும் என்ற தேவையையும் தவிர்த்துவிடுகிறது.  

## நீட்சி

ASP.NET-க்குள் இணைக்கும் வகையில் மைக்ரோசாஃப்ட் சில விரிவாக்க வரைச்சட்டங்களை வெளியிட்டுள்ளது, மேலும் அது அதன் செயல்பாட்டையும் விரிவாக்கியுள்ளது. அவற்றில் சில:  
; ASP.NET AJAX  
: இது வாடிக்கையாளர் இடத்திலும், சர்வர் இடத்திலும் இரண்டு புறமும் ASP.NET பக்கங்களை எழுதுவதற்கான ஒரு நீட்சி, இது AJAX செயல்பாட்டை உட்கொண்டிருக்கிறது.  

; ASP.NET MVC Framework  
: MVC கட்டமைப்பைப் பயன்படுத்தி, ASP.NET பக்கங்களைப் படிப்பிக்கும் ஒரு நீட்சி.  

## பழைய ASP உடன் ASP.NET-ன் ஒப்பீடு

ஒரு விண்டோஸ் பயனர் இடைமுகத்தைப் போலவே *கட்டுப்பாடுகளைக்* கொண்ட பக்கங்களை உருவாக்கும் வசதியை அளிப்பதன் மூலமாக விண்டோஸ் பயன்பாட்டு மேம்பாட்டில் இருந்து வலை மேம்பாட்டிற்கு அபிவிருத்தியாளர்கள் மாறுவதை ASP.NET எளிமைப்படுத்த முயல்கிறது. ஒரு *பொத்தான்* அல்லது *அடையாளச்சீட்டு* போன்றிருக்கும் ஒரு வலைக்கட்டுப்பாடு, அதன் எதிர்பலத்தில் இருக்கும் விண்டோஸைப் போலவே செயல்படுகிறது: அதாவது குறியீடு அதன் பண்புகளை நிர்மானித்து கொண்டு, அதன் நிகழ்வுகளுக்குப் பதிலளிக்கும். கட்டுப்பாடுகளுக்குத் தனக்குத்தானே எவ்வாறு பெறுவது என்பது தெரியும்: ஆனால் விண்டோஸ் கட்டுப்பாடுகள் அவற்றை திரைக்கு இழுத்து வந்துவிடும், வலைக்கட்டுப்பாடுகள் HTML மற்றும் Javascript-ன் பிரிவுகளை உருவாக்குகின்றன, இவை இறுதி-பயனரின் உலாவிக்கு அனுப்பப்பட்ட பக்கத்தின் ஒரு பகுதியாக இருக்கும்.  

ASP மற்றும் PHP போன்ற பழைய வலை-ஸ்க்ரிப்டிங் சூழல்களைப் பயன்படுத்தாமல் மாறாக, ASP.NET நிகழ்வால் உந்தப்படும் ஒரு GUI மாதிரியைப் பயன்படுத்தி பயன்பாடுகளை உருவாக்க நிரலாளர்களை ஊக்குவிக்கிறது. இந்த வரைச்சட்டம் நடப்பில் இருக்கும் Javascript போன்ற தொழில்நுட்பங்களை, "பார்வைக்குரிய நிலை" போன்ற உட்கூறுகளுடன் ஒருங்கிணைக்க முயற்சிக்கிறது, இதன் மூலம் உள்ளார்ந்து நிலையற்ற வலைச்சூழலை உறுதியான நிலைக்கு (உள்-கோரிக்கை) கொண்டு வர முயற்சிக்கிறது.  

பழைய ASP ஒப்பிடுகையில் இருக்கும் பிற வேறுபாடுகளாவன:  
- தொகுத்தெழுதப்பட்ட குறியீடு என்றால் அபிவிருத்தி நிலையில் மாட்டி கொண்டிருக்கும் பயன்பாடுகள் அதிக வடிவமைப்பு-நேர தவறுகளுடன் மிக விரைவாக ஓடும்.
- கணிசமாக மேம்படுத்தப்பட்ட செயல்படும்-நேர தவறு கையாளுகை, இது முயற்சித்து-பிடிக்கும் பிளாக்குகளைப் பயன்படுத்தி மீதமிருப்பு கையாளுதலைப் பயன்படுத்தி கொள்கிறது.
- கட்டுப்பாடுகள் மற்றும் நிகழ்வுகள் போன்ற மைக்ரோசாஃப்ட் விண்டோஸ் பயன்பாடுகளுக்கு அதேபோன்ற metaphor-கள்.
- கட்டுப்பாடுகள் மற்றும் வகுப்பு நூலகங்களின் ஒரு விரிவான தொகுப்பு பயன்பாடுகளின் விரைவான கட்டுமானங்களை அனுமதிக்கிறது, அத்துடன் பயனர்-வரையறை கட்டுப்பாடுகள் மெனுக்கள் போன்ற பொதுவான-பயன்பாட்டு வலை வார்ப்புருவை அனுமதிக்கிறது. ஒரு பக்கத்தில் இந்த கட்டுப்பாடுகளின் அமைப்புதிட்டம் (layout) மிகவும் எளிமையானதாக இருக்கிறது, ஏனென்றால் அதில் பெரும்பான்மையாக மெய்நிகராக பெரும்பாலான திருத்திகளால் (editors) செய்யப்பட்டுவிடும்.
- வலைப்பக்கங்கள் VB.NET, C#, J#, Delphi.NET, குரோம் மற்றும் இதரபிறவற்றில் குறியீடு செய்ய அனுமதிப்பதன் மூலம், .NET Common Language Runtime-ன் பன்மொழி திறன்களை ASP.NET தாங்கிப்பிடிக்கிறது.
- செயல்திறனை அதிகரிக்க மொத்த பக்கத்தையோ அல்லது வெறும் அதன் பகுதிகளையோ சேமித்து வைக்கும் அதன் திறமை.
- வியாபார தர்க்கத்தைப் புறத்தோற்றபாங்கில் இருந்து பிரிக்க பின்புற குறியீட்டு அபிவிருத்தி முறையைப் பயன்படுத்துவதற்கான அதன் திறமை.
- பக்கம் மற்றும் கட்டுப்பாடுகள் இரண்டையும் நிரல்படுத்துவதற்கான நிஜமான ஆப்ஜெக்ட் சார்ந்த வடிவமைப்பைப் பயன்படுத்தும் திறமை
- ஒரு 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 வரைச்சட்டத்தின் வெவ்வேறு பதிப்புகளைப் பயன்படுத்தி எழுதப்பட்ட பக்கங்கள், வெளிநிறுவனங்களின் நூலகங்களைப் பயன்படுத்தாமல் அமர்வு நிலையைப் பகிர்ந்து கொள்ள முடியாது. இந்த விமர்சனம் ASP.NET-க்கு பொருந்தாது, மேலும் ASP பயன்பாடுகள் IIS 7-ல் அதற்கு இணையாக செயல்பட்டு கொண்டிருக்கும். IIS 7-ஐ கொண்டு, அலகுகளை எந்தவொரு ஒருங்கிணைந்த தொகுப்புவரிசையிலும் செயல்படுத்த முடியும், இது எந்த மொழியில் எழுதப்பட்ட அலகுகளையும் எந்தவித கோரிக்கைக்காகவும் செயல்படுத்த அனுமதிக்கிறது.  

ASP.NET 2.0 வலைப்படிவங்கள் மார்க்அப்பை உருவாக்குகின்றன, இவை W3C மதிப்பீட்டிற்கு உட்பட்டு செல்கின்றன, ஆனால் இது அணுகுதலை சௌகரியப்படுத்துகிறதா என்பது விவாதத்திற்குரியதாக உள்ளது, இது ஒரு சொற்பொருள் சார்ந்த XHTML பக்கம் + CSS குறிப்பின் ஆதாயங்களில் ஒன்றாக இருக்கிறது. *உள்நுழைவு* கட்டுப்பாடுகள் மற்றும் *விஜார்டு* கட்டுப்பாடுகள் போன்ற பல்வேறு கட்டுப்பாடுகள், முன்னிருப்பாக அமைப்புத்திட்டத்திற்காக HTML அட்டவணைகளைப் பயன்படுத்துகின்றன. ASP.NET 2.0 CSS கட்டுப்பாட்டு இணைப்புச்சாதனங்கள் வெளியிட்டதன் மூலம் இந்த பிரச்சினையை மைக்ரோசாஃப்ட் தீர்த்திருக்கிறது, இந்த அடாப்டர் பொருத்தமான அணுகுதலுக்கு ஏற்ற XHTML+CSS மார்க்அப்பை உருவாக்குகிறது, அத்துடன் ASP.NET 4.0-ல் உள்நுழைவு கட்டுப்பாட்டுக்கு ஒரு பண்பையும் சேர்க்கிறது, இது அட்டவணை முறைக்கு பதிலாக div முறையில் செயல்படுத்துவதற்கு அதற்கு செயற்தூண்டல் அளிக்கிறது.  

பக்கங்களை மாற்றி அமைத்தல் மற்றும் உலாவியின் வரலாற்றை மாற்றுதல் போன்ற ASP.NET வலைப்படிவத்தின் ஒருசில வசதிகள், இன்டர்நெட் எக்ஸ்புளோரர் உலாவியில் மட்டுமே கிடைக்கிறது.  

மைக்ரோசாஃப்ட் வலைச்சேவைகளைத் தகுதியாக நிலைநிறுத்துகிறது, அதன் விளைவாக IIS/ASP.NET அவர்களின் முதன்மை பயன்பாட்டு சர்வர் தீர்வாக அமைந்துவிடுகிறது. "வெளியேற்றப்பட்ட" மைக்ரோசாஃப்ட் அணுகுமுறையைப் பயன்படுத்தும் சிக்கலான தொழில்துறை பயன்பாடுகளை நிறுவும் போது அடிப்படை சித்தாந்தத்திலேயே பெரிய மாறுபாடுகள் இருப்பது சகஜம் தான்: ASP.NET ஆனது திட நிலை மேலாண்மையில் பின்தங்கி இருக்கும், இதனால் அபிவிருத்தியாளர்கள் நிலை-கையாளும் அலகுகளைத் தேவைக்கேற்ப அவர்களாகவே குறியீடு செய்ய வேண்டியதிருக்கும், இது நிலையை ஏதாவதொரு புற செயல்முறையில் தான் சேமித்து வைக்க வேண்டியதிருக்கும், ஏனென்றால் ASP.NET பணிச்செயல்முறை தானாகவே மறுதுவக்கம் செய்யும். இதை ஒரு சுலபமான எடுத்துக்காட்டில் விளக்கலாம்: ஒரு ASP.NET வலைத்தளம் ஒரு சர்வர் உட்கூறைச் சார்ந்திருக்கிறது என்று கற்பனை செய்து கொள்ளுங்கள், இது அதனுடைய நிலையைத் தக்க வைத்து கொள்ள வேண்டும், அந்த நிலை ஒரு சிக்கலான அல்கொரிதம் மூலமாக எட்டப்படும் - எடுத்துக்காட்டாக, ஒரு புவிவரைப்படத்தின் மீது பாதைகளைக் கோடிட்டு காட்டுவது போல. ஒரு வழி கணக்கிடுவதற்கு பல்வேறு CPU சுழற்சிகளை எடுத்துக்கொண்டது, மேலும் அதைத் தொடர்ந்து வரும் பல்வேறு வாடிக்கையாளர் கோரிக்கைகள், புவிவரைப்பட தொடர்ச்சிகளைப் பெறும் போது அந்த முடிவுகளைப் "பார்க்கும்".  

மற்றொரு எடுத்துக்காட்டு: வலை/அமர்வு நிலை சர்வர்களுக்கு இடையில் ஒழுங்குப்படுத்த முடியாத ஒரு மரபார்ந்த COM ஆப்ஜெக்ட்டில் நிலையானது சுருக்கி அடக்கப்பட்டிருக்கும் போது - "in-proc" முறை மட்டுமே சாத்தியமாகும், ஆனால் பயன்பாடு மறுதுவக்கம் ஆகும் என்பதால், இது நம்பகமானதல்ல.  

## மேம்பாட்டு கருவிகள்

ASP.NET பயன்பாடுகளின் அபிவிருத்திக்காக பல்வேறு மென்பொருள் தொகுப்புகள் கிடைக்கின்றன:  

| பொருள் | அபிவிருத்தியாளர் | உரிமம் | குறிப்புகள் |  |
| --- | --- | --- | --- | --- |
| ASP.NET Intellisense Generator | BlueVision LLC | இலவசம் |  |  |
| மைக்ரோசாப்ட் விசுவல் ஸ்டுடியோ | மைக்ரோசாஃப்ட் | இலவச மற்றும் வர்த்தரீதியான உரிமம் |  |  |
| கோட்கியர் டெல்பி | எம்பார்கேடிரோ டெக்னாலஜீஸ் | வர்த்தரீதியான உரிமம் |  |  |
| மேக்ரோமீடியா ஹோம்சைட் | அடோப் சிஸ்டம்ஸ் | வர்த்தரீதியான உரிமம் |  |  |
| மைக்ரோசாஃப்ட் எக்ஸ்பிரஷன் வெப் | மைக்ரோசாஃப்ட் | வர்த்தரீதியான உரிமம் |  |  |
| மைக்ரோசாஃப்ட் ஷேர்பாயிண்ட் டிசைனர் | மைக்ரோசாஃப்ட் | இலவசம் |  |  |
| மோனோடெவலப் | நோவல் மற்றும் மோனோ சமூகம் | இலவச கட்டற்ற மென்பொருள் |  |  |
| ஷேர்டெவலப் | ஐசிஷார்ப்கோட் குழு | இலவச கட்டற்ற மென்பொருள் |  |  |
| ASP.NET-க்கான ஈஃபெல் | ஈஃபெல் மென்பொருள் | இலவச கட்டற்ற மென்பொருள் மற்றும் வர்த்தகரீதியானது |  |  |
| மேக்ரோமீடியா ட்ரீம்வீவர் | அடோப் சிஸ்டம்ஸ் | வர்த்தகரீதியானது | முக்கியமான ASP.NET 2.0 வசதிகளுக்கு ஒத்துழைக்கிறது, ASP.NET 1.x-களுக்கு மிகவும் துல்லியமில்லாத குறியீடுகளை உருவாக்கும்: மேலும் பதிப்பு 8.0.1 மூலமாக குறியீடு உருவாக்கம் மற்றும் ASP.NET வசதிகளின் ஒத்துழைப்பு, பதிப்பு MX இருந்தாலும் கூட அதிலிருந்து கொஞ்சகமாக மாற்றம் கொண்டிருக்கும். பதிப்பு 8.0.2 SQL திணிப்பு தாக்குதல்களுக்கு எதிராக பாதுகாப்பு மேம்படுத்தப்பட்டிருக்கிறது. | } |

## வரைச்சட்டங்கள்

ASP.NET-ஐ மேம்படுத்தும் போது, தரமுறைப்பட்ட வலைப்படிவங்களின் அபிவிருத்தி மாதிரியைப் பயன்படுத்த வேண்டிய கட்டாயம் கிடையாது. குறிப்பிடதக்களவில் பணித்தளங்களுக்கான வடிவமைக்கப்பட்ட வரைச்சட்டங்களில் பின்வருவனவும் உள்ளடங்கும்:  
- பேஸ் ஒன் பவுன்டேஷன் காம்பனொன்ட் லைப்ரரி (BFC-Base One Foundation Component Library) என்பது .NET தகவல்களஞ்சியத்தையும் மற்றும் வினியோகிக்கப்பட்ட கணினிமயப்பட்ட பயன்பாடுகளைக் கட்டமைப்பதற்குமான ஒரு RAD வரைச்சட்டமாகும்.
- டாட்நெட்நியூக் (DotNetNuke) என்பது ஒரு கட்டற்ற ஆதார தீர்வாகும், இது ஒரு வலை பயன்பாட்டு வரைச்சட்டம் மற்றும் ஒரு தகவலடக்க மேலாண்மை அமைப்புமுறை ஆகிய இரண்டையும் உட்கொண்டிருக்கும், இது அலகுகள், மேற்பூச்சுகள் மற்றும் வழங்கிகள் மூலமாக நவீன விரிவாக்கத்தை அளிக்கிறது.
- கேஸ்டில் மோனோரெயில் என்பது ரூபி ஆன் ரெயில் (Ruby on Rails) போலவே ஒரு விரிவாக்க மாதிரியுடன் கூடிய ஒரு கட்டற்ற ஆதார MVC வரைச்சட்டமாகும். இந்த வரைச்சட்டம் பொதுவாக NHibernate மீது கட்டமைக்கப்பட்டிருக்கும் ஒரு ORM அடுக்கான Castle ActiveRecord உடன் பயன்படுத்தப்படுகிறது.
- Spring.NET என்பது Java-விற்கான ஸ்பிரிங் வரைச்சட்டத்தின் ஒரு பாகமாகும்.
- Skaffold.NET, .NET பயன்பாடுகளுக்கான ஒரு சாதாரண வரைச்சட்டமாகும், இது நிறுவன பயன்பாடுகளில் பயன்படுத்தப்படுகிறது. ****

## பதிப்புகள்

| தேதி | பதிப்பு | குறிப்புகள் | புதிய ASP.NET சார்ந்த வசதிகள் |  |
| --- | --- | --- | --- | --- |
| ஜனவரி 7, 2002 | 1.0 | முதல் பதிப்பு
விஷூவல் ஸ்டூடியோ .NET உடன் சேர்ந்து வெளியிடப்பட்டது | * ஆப்ஜெக்ட் சார்ந்த வலை பயன்பாட்டு மேம்பாடு மரபார்ந்தவைகளையும், பல்லுருவத்தோற்றத்தையும் மற்றும் பிற தரமுறை OOP வசதிகளுக்கும் ஒத்துழைக்கிறது
** அபிவிருத்தியாளர்கள் தொடர்ந்து சர்வரைப் பயன்படுத்த முடியாது. CreateObject(...), மிகவும் ஆரம்பகால பிணைத்தல் மற்றும் வகை அடிப்படையிலான பாதுகாப்பு ஆகியவையும் சாத்தியமாகும்.
* விண்டோஸ் நிரல்படுத்தலின் அடிப்படையில்; அபிவிருத்தியாளர்கள் வலை சர்வரின் DLL வகுப்பு நூலகங்களையும், பிற வசதிகளையும் பயன்படுத்தி கொள்ள முடியும், இவர்கள் வெறுமனே HTML-ஐ பெறுவதற்கும் அப்பாற்பட்டு மிகவும் தானியங்கித்தனமான பயன்பாடுகளை உருவாக்க இதை பயன்படுத்துவார்கள்.(எடுத்துக்காட்டாக, மீதமிருப்பு கையாளுகை) |  |
| ஏப்ரல் 24, 2003. | 1.1 | விண்டோஸ் சர்வர் 2003 உடன் சேர்ந்து வெளியிடப்பட்டது
விஷூவல் ஸ்டூடியோ .NET 2003 உடன் சேர்ந்து வெளியிடப்பட்டது | * மொபைல் கட்டுப்பாடுகள்
* தானியங்கி உள்ளீட்டு மதிப்பீடு |  |
| நவம்பர் 7, 2009 | 2.0 | குறியீடுபெயர் விட்பே
விஷூவல் ஸ்டூடியோ 2005 மற்றும் விஷூவல் வெப் டெவலப்பர் எக்ஸ்பிரஸ்
மற்றும் SQL சர்வர் 2005 ஆகியவற்றுடன் சேர்ந்து வெளியிடப்பட்டது | * புதிய தரவு கட்டுப்பாடுகள் (கட்டபார்வை, வடிவபார்வை, விளங்கங்களின் பார்வை)
* குறைவாக தரவு அணுகுதலுக்கான புதிய நுட்பம் (SqlDataSource, ObjectDataSource, XmlDataSource controls)
* வழிச்செலுத்தும் கட்டுப்பாடுகள்
* முதன்மை பக்கங்கள்
* உள்நுழைவு கட்டுப்பாடுகள்
* மாற்றமைப்புகள்
* வெளித்தோற்றங்கள்
* வலைப்பகுதிகள்
* பிரத்யேகப்படுத்தும் சேவைகள்
* முழுமையான முன்-தொகுத்தெழுதல்
* புதிய மொழிமாற்று நுட்பம்
* 64-பிட் புரோசஸர்களுக்கான ஒத்துழைப்பு
* வகுப்பு மாதிரி வழங்குனர் |  |
| நவம்பர் 21, 2006 | 3.0 | * விண்டோஸ் தொடர்பு அமைப்பு, இது சேவைகளை வழங்க ASP.NET-ஐ பயன்படுத்துகிறது.
* விண்டோஸ் கார்டுஸ்பேஸ், இது உள்நுழைவு பாத்திரங்களுக்காக ASP.NET-ஐ பயன்படுத்துகிறது. |  |  |
| நவம்பர் 19, 2007 | 3.5 | விஷூவல் ஸ்டூடியோ 2008 மற்றும் விண்டோஸ் ஸ்டூடியோ 2008 ஆகிவற்றுடன் வெளியிடப்பட்டது | * புதிய தரவு கட்டுப்பாடுகள் (பட்டியல்பார்வை, தரவுஅனுப்பி)
* இந்த வரைச்சட்டத்தின் ஒரு பகுதியாக ASP.NET AJAX சேர்க்கப்பட்டிருந்தது.
* HTTP நெறிப்பாட்டிற்கும் மற்றும் ஒருமுனைப்படுத்தல் தொடுப்புகளுக்குமான ஒத்துழைப்பு
* RSS, JSON, POX மற்றும் சிறிதளவிலான நம்பிக்கை ஆகியவற்றுக்குமான WCF ஒத்துழைப்பு
* அனைத்து .NET வரைச்சட்டம் 3.5-ம், LINQ இதரபிறவற்றை போலவே மாறுகிறது. |  |
| ஆகஸ்ட் 1, 2008 | 3.5 சேவை தொகுப்பு 1 | விஷூவல் ஸ்டூடியோ 2008 சேவை தொகுப்பு 1 உடன் வெளியிடப்பட்டது | * ASP.NET மாறும் தரவின் உள்ளிணைப்பு
* ஒரு ASP.NET AJAX பயன்பாட்டில் உலாவி வரலாற்றைக் கட்டுப்படுத்துவதற்கான ஒத்துழைப்பு
* அதிக துல்லியமான பதிவிறக்கத்திற்காக ஒரே கோப்பிற்குள் பல்வேறு Javascript கோப்புகளை ஒருங்கிணைப்பதற்கான திறன்
* System.Web.Abstraction மற்றும் System.Web.Routing ஆகிய புதிய பெயரிடங்கள் | } |

## பிற நிறுவுதல்கள்

மோனோ திட்டம் என்பது ASP.NET 1.1-ம், பெரும்பாலான ASP.NET 2.0-ம் ஒத்துழைக்கிறது. ௶