قبل از اينکه با تکنولوژي فوق آشنا گرديم ،لازم است نسبت به موارد ذيل به ميزان قابل قبولي شناخت اوليه اي وجود داشته باشد.
?آشنائي با وب ، ،Html و اصول ايجاد صفحات وب
?زبانهاي اسکريپت نظير جاوااسکريپت و يا Vbscript
?اصول اوليه اسکريپت هاي مبتني بر سرويس دهنده
ASP چيست ؟
?ASP يک تکنولوژي مبتني بر سرويس دهنده بوده که امکان اجراي اسکريپت ها ي موجود در يک صفحه وب را از طريق يک سرويس دهنده اينترنت فراهم مي نمايد .
?ASP تکنولوژي متعلق به شرکت ما کروسافت است .
?ASP از کلمات Active Server Page مشتق شده است .
?ASP برنامه اي است که با مديريت IIS اجراء مي گردد.
?يک فايل ASP مشابه فايل Html است .
?محتويات يک فايل ASP شامل : متن ، Html ، XML و اسکريپت است .
?اسکريپت هاي موجود در يک فايل ASP بر روي سرويس دهنده اجراء مي گردنند.
?فايل هاي ASP داراي انشعاب asp مي باشند.
? پس از درخواست فايل هاي ASP توسط کاربران ، در ابتدا محتويات ( اسکريپت ها ) مربوطه بر روي سرويس دهنده اجراء و در ادامه نتايج بصورت تگ هاي Html براي کاربر ارسال خواهد شد.
آشنائي اوليه با ASP کلاسيک مي تواند داراي جنبه هاي مثبتي از بعد فراگيري ASP.NET با شد . +ASP همان ASP.NET است . زمانيکه ما کروسافت ASP.NET را طراحي نمود ،در ابتدا از نام فوق استفاده گرديد .
ASP.NET چيست ؟
ASP نسخه شماره سه ، آخرين نسخه در اين زمينه بوده و ما هرگز شاهد عرضه نسخه شماره چهار محصول فوق نخواهيم بود. ASP.NET نسل جديد ASP است و نمي توان ادعا نمود که ASP.NET نسخه ارتقاء يافته ASP کلاسيک است .
ASP.NET يک نمونه و نگرش جديد به برنامه ها و اسکريپت هاي مبتني بر سرويس دهنده مي باشد. ASP.NET عضوي از فريمورک جديد دات نت شرکت ما کروسافت بوده و سه سال زمان صرف نوشتن آن شده است . ASP.NET با نسخه ASPکلاسيک کاملا" سازگار نيست .
دات نت فريمورک
دات نت فريمورک، زير ساخت پلات فورم جديد دات نت است . فريمورک فوق ، يک محيط عمومي براي ايجاد ، بکارگيري و اجراي برنامه هاي تحت وب و سرويس هاي وب را فراهم مي نمايد . دات نت فريمورک شامل دو بخش اساسي است :
?Common language runtime
?Common class libraries نظير : ADO.NET,ASP.NET و Windows Forms
دات نت فريمورک ، با الهام از امکانات دو بخش فوق ، قادر به ارائه سرويس ها و خدمات متفاوت به مجموعه وسيعي از سيستم هاي کامپيوتري است . دات نت فريمورک از زبانهاي متعددي حمايت مي نمايد . C++,C#,VB,Jscript نمونه هائي در اين زمينه مي باشند.
تفاوت هاي ASP کلاسيک و ASP.NET
?ASP.NET زبان هاي متعددي را حمايت مي نمايد .
?ASP.NET مجموعه گسترده اي از کنترل هاي جديد و عناصر مبتني بر XML را ارائه مي دهد.
?ASP.NET قابليت اعتبارسنجي کاربران با توانائي بالا را دارا است .
?افزايش کارائي سيستم از طريق اجراي کدهاي کمپايل شده ( نه تفسير شده ! )
?کدهاي ASP.NET بطور کامل با نسخه ASP کلاسيک سازگار نمي باشند.
برخي از ويژگي هاي جديد در ASP.NET :
? تعداد بالاي زبانهاي برنامه نويسي حمايت شده
? کنترل هاي قابل برنامه نويسي
? برنامه نويسي مبتني بر Event
? استفاده از عناصر مبتني بر Xml
? اعتبار سنجي کاربران با استفاده از Account و قوانين
? افزايش کارائي با توجه به کمپايل نمودن کدها
? پيکربندي و بکارگيري آسان
ASP.NET داراي مجموعه اي وسيع از کنترل هاي HTML است . اکثر عناصر موجود بر روي يک صفحه وب را مي توان بعنوان يک شي قابل کنترل ASP.NET در نظر گرفت .رفتار اشياء فوق را مي توان با استفاده از اسکريپت ها ، کنترل و هدايت نمود. ASP.NET همچنين داراي مجموعه اي از کنترل هاي ورودي شي گراء نظير : ListBox هاي قابل برنامه نويسي و کنترل هاي بررسي صحت د اده هاي ورودي است . با استفاده از يک کنترل جديد (Data Grid) عمليات ذخيره سازي ،مرتب سازي وساير عمليات مورد نياز در رابطه با بانک هاي اطلاعاتي را پشتيباني و حمايت مي نمايد. تمامي اشياء ASP.NET بر روي يک صفحه وب مي توانند باعث بروز يک "رويداد" گردند. در چنين مواردي کدهاي نوشته شده در ASP.NET ، مجري سياست برخورد با رويداد بوجود آمده خواهند بود . عناصر استفاده شده در ASP.NET عموما" متکي بر XML مي باشند . نظير کنترل Adrotator که از Xml براي ذخيره ساري اطلاعات و تنظيمات مربوط به آگهي ها استفاده مي نمايد. ASP.NET ، اعتبارسنجي کاربران متکي بر فرم را با استفاده از تکنولوژي هائي نظير : مديريت کوکي، تغيير مسير کاربراني که هويت آنها تاييد نشده و ... انجام مي دهد. به محض درخواست يک صفحه ASP.NET ،صفحه مورد نظر ترجمه ( کمپايل ) و يک نسخه از آن در حافظه باقي خواهد ماند (Cached ) . بديهي است که در اين حالت افزايش چشمگيري را از بعد کارآئي خواهيم داشت .ASP.NET با نسخه قبلي خود ( ASP کلاسيک ) کاملا" سازگار نيست .بنابراين در برخي از کدهاي نوشته شده با ASP کلاسيک مي بايست تغييراتي را اعمال نمود. فايل هاي ASP.NET داراي انشعاب aspx مي باشند. بدين ترتيب مي توان بر روي يک سرويس دهنده فايل هاي ASP.NET ( فايل هاي با انشعاب aspx) و فايل هاي ASP کلاسيک ( فايل هاي با انشعاب asp ) بطور همزمان استفاده کرد.
نصب ASP.NET
براي نصب ASP.NET به امکانات زير نياز خواهد بود :
?يکدستگاه کامپيوتر با قابليت اجراي ويندوز بر روي آن .
?نصب يکي از نسخه هاي ويندوز 2000 و يا XP
?نصب برنامه IIS
?قبل از نصب ASP.NET مي بايست تمامي Service Pack هاي مربوط به محصولات نرم افزاري که قصد نصب آنها را داشته باشيم ،آماده نمود.
?در صورتيکه قبلا" نسخه Beta مربوط به ASP.NET بر روي سيستم نصب شده باشد ،لازم است که در ابتدا نسخه فوق از روي سيستم برداشته گردد.
?نصب .NET ، قبل از نصب مي بايست کيت کامل محصول فوق را تهيه نمود. کيت فوق حدودا" 130 مگابايت بوده و مي توان آن را از سايت ماکروسافت و يا ساير سايت ها نظير : www.asp.net تهيه کرد .
صفحات وب ASP.NET
يک صفحه ASP.NET ، در اولين نگاه ،مشابه يک صفحه Html است . براي آشنائي با صفحات ASP.NET ، يک صفحه ساده Html را ايجاد که مسئوليت آن نمايش يک پيام خاص در خروجي باشد. (Hello.html)
مثال : يک صفحه ساده Html |
<html> <body bgcolor="Blue"> <center> <h2>Hello HTML Tags </h2> </center> </body> </html> |
در صورتيکه بخواهيم فايل فوق را به يک صفحه ASP.NET تبديل نمائيم ،کافي است محتويات فايل فوق را در فايل جداگانه اي قرار داده و فايل فوق را با نام دلخواه و انشعاب .aspx ذخيره نمائيم .در اين حالت محتويات صفحه ASP.NET بصورت زير خواهد بود :
مثال : يک صفحه ساده ASP.NET |
<html> <body bgcolor="Blue"> <center> <h2>Hello ASP.NET </h2> </center> </body> </html> |
يک صفحه ASP.NET از برخي جهات داراي عملکردي مشابه صفحات HTML است . صفحات HTML داراي انشعاب Html بوده و زمانيکه مرورگر درخواست يک صفحه Html را از سرويس دهنده داشته باشد ،سرويس دهنده بدون انجام هيچگونه اصلاحات و يا عمليات خاصي، صرفا" صفحه مورد نظر را براي مرورگر ارسال خواهد نمود. يک صفحه ASP.NET داراي انشعاب .aspx بوده و زمانيکه مرورگر درخواست يک صفحه ASP.NET را از سرويس دهنده داشته باشد ،سرويس دهنده دستورالعمل هاي اجرائي موجود در صفحه را پردازش و در ادمه نتايج بدست آمده ، براي سرويس گيرنده ( مرورگر) ارسال خواهند شد.
در مثالي که ارائه گرديد ما شاهد حضور و استفاده از دستورالعمل هاي اجرائي در فايل ASP.NET نبوديم . در ادامه با افزودن دستورالعمل هاي اجرائي به بررسي تفاوت هاي موجود بين صفحات ايستاي Html و صفحات پوياي ASP خواهيم پرداخت .
ASP کلاسيک
برنامه نويسان وب چندين سال است که از ASP کلاسيک استفاده مي نمايند .ASP.NET با ASP کلاسيک کاملا" سازگار نبوده و اغلب صفحات ASP کلاسيک ، با اعمال تغييراتي اندک قادر به استفاده بر روي بستر دات نت و مشابه صفحات ASP.NET خواهند بود.
صفحات پويا در ASP کلاسيک
بمنظور بررسي توانائي صفحات ASP در جهت نمايش اطلاعات پويا ،مثال زير را در نظر بگيريد.
مثال : يک صفحه ساده ASPکلاسيک بمنظور نمايش اطلاعات پويا |
<html> <body bgcolor="yellow"> <center> <h2>Hello ASP Classic!</h2> <p><%Response.Write(now())%></p> </center> </body> </html> |
کدهاي محصور بين <% %> توسط سرويس دهنده اجراء مي گردند. Response.Write ، امکان نوشتن اطلاعات در خروجي را فراهم مي نمايد . ( )NOW تابعي است که زمان و تاريخ سرويس دهنده را برمي گرداند.
صفحات پويا در ASP.NET
کدهاي زير همان مثال قبلي با نگرش ASP.NET است
مثال : يک صفحه ساده ASP.NETبمنظور نمايش اطلاعات پويا |
<html> <body bgcolor="yellow"> <center> <h2>Hello ASP.NET!</h2> <p> <%Response.Write(now())%></p> </center> </body> </html> |
در دو مثال ارائه شده ،اختلاف بين صفحات ASP.NET و ASP کلاسيک مشهود نيست . بمنظور بررسي تفاوت هاي موجود، بين ASP کلاسيک و ASP.NET مثال زير را در نظر بگيريد.
مثال : يک صفحه ساده ASPکلاسيک بمنظور نمايش اطلاعات پويا |
<html> <body bgcolor="yellow"> <center> <h2>Hello ASP.NET!</h2> <p> <%Response.Write(now())%></p> </center> </body> </html> |
کدهاي نوشته شده ( به رنگ قرمز که اصطلاحا" Render Block ) ناميده مي شوند،در ابتدا بر روي سرويس دهنده اجراء و در ادامه نتايج براي سرويس گيرنده ( مرورگر ) ارسال مي گردد. مسئله فوق مي تواند نشاندهنده يکي از محدوديت ASP کلاسيک باشد. در اين نوع صفحات Render Block ها مي بايست در محلي قرار بگيرند که مي خواهيم در خروجي نمايش داده شوند. با استفاده از ASP کلاسيک نمي توان کدهاي اجرائي را از تگ هاي Html جدا نمود. بديهي است در چنين مواردي خوانائي و پشتيباني صفحات به شدت زير سوال خواهد رفت .
کنترل هاي سرويس دهنده ASP.NET
ASP.NET بنوعي مسئله " کدهاي نوشته شده به سبک اسپاگتي ! " را با بکارگيري کنترل هاي سرويس دهنده برطرف نموده است . کنترل هاي سرويس دهنده ، تگ هائي هستند که توسط سرويس دهنده قابل درک و فهم مي باشند. سه نوع کنترل هاي سرويس دهنده وجود دارد :
?کنترل هاي Html سرويس دهنده ( تگ هاي سنتي Html)
?کنترل هاي وب سرويس دهنده ( تگ هاي جديد ASP.NET )
?کنترل هاي اعتبارستجي سرويس دهنده ( تگ هاي مسئول اعتبار سنجي داده هاي ورودي)
کنترل هاي Html سرويس دهنده
اين نوع کنترل ها ، همان تگ هاي استاندارد Html بوده با تفاوت که مي بايست از خصلت : Runat=Server بهمراه تگ مربوط به آنان ، نيز استفاده گردد . مثال زير نحوه جداسازي کد هاي اجرائي از تگ هاي Html ،با استفاده از کنترل هاي Html سرويس دهنده را نمايش مي دهد .
مثال : يک صفحه ساده ASP.NETو استفاده از HTML ServerControls |
<% TimeStamp.InnerText=now() %> <html> <body bgcolor="yellow"> <center> <h2>Hello HTML Server Controls </h2> <p id="TimeStamp" runat="server"></p> </center> </body> </html> |
خصلت Runat=server بهمراه تگ <P> باعث شده که تگ فوق ، بعنوان يک کنترل سرويس دهنده ايفاي وظيفه نمايد. در اين حالت مجموعه کدهاي اجرائي به محلي خارج از محدوده تگ هاي Html منتقل شده اند.
کنترل هاي وب سرويس دهنده
اين نوع کنترل ها مشابه کنترل هاي Html با پيچيدگي بيشتري مي باشند. اين نوع کنترل ها هرگز بعنوان يک بخش وابسته و بصورت يک خصلت در کنار تگ هاي Html استفاده نخواهند گرديد ، بلکه براي حضور خود داراي ماهيتي کاملا" مستقل هستند. از اين نوع کنترل ها در اغلب برنامه هائي که سياست ارتباط دوسويه با کاربران دنبال مي گردد ، استفاده مي شود. فرم هاي ورودي ، نمونه ئي مناسب از جايگاه استفاده از اين نوع کنترل ها مي باشند. کنترل هاي فوق همواره با تگي شروع خواهند شد که ابتداي آن مزين به واژه : < asp:> است . برنامه زير نحوه استفاده از کنترل هاي وب سرويس دهنده را نشان مي دهد.
مثال : يک صفحه ساده ASP.NETو استفاده از Web ServerControls |
<% TimeStamp.Text=now() %> <html> <body bgcolor="yellow"> <center> <h2>Hello Web Server Controls </h2> <p><asp:label id="TimeStamp" runat="server" /></p> </center> </body> </html> |
در مثال فوق از يکي از کنترل هاي وب سرويس دهنده ، با نام label استفاده شده است . کنترل کننده فوق يکي از ده ها کنترل از قبل تعريف شده در اين زمينه بوده که براي ASP.NET قابل فهم است .
کنترل هاي اعتبارستجي سرويس دهنده
با استفاده و بکارگيري کنترل هاي تعيين صحت داده ها ، مي توان عمليات مربوط به بررسي صحت داده هاي ورودي توسط کنترل هاي ورودي سرويس دهنده نظير : TextBox ، انجام داد. در چنين مواردي زماني که داده وارد شده متناسب با سياست و قانون تعريف شده از قبل نباشد ، مي توان پيام مناسبي را نمايش داد. بصورت پيش فرض عمليات موسوم به بررسي صحت داده ها در يک صفحه (Page Validation) همزمان با فشردن يک Button نظير : کنترل هاي ImageButton و يا LinkButton صورت مي پذيرد.
رويدادها در دات نت
در صفحات ASP.NET مي توان مجموعه کدهائي را نوشت که در صورت بروز يک شرط خاص و يا تحقق يک شرايط ويژه ( وقفه ) فعال و خدمات تعريف شده خود را ارائه نمايند. در مثال هاي قبل ، با کد هاي زير آشنا شديم .
مثال : يک صفحه ساده ASP.NETو استفاده از Web ServerControls |
<% TimeStamp.Text=now()%> <html> <body bgcolor="yellow"> <center> <h2>Hello W3Schools!</h2> <asp:label id="TimeStamp" runat="server" /> </center> </body> </html> |
چگونه مي توان اطمينان پيدا نمود که Render Block ( کدهاي قرمز رنگ ) اجراء خواهد شد. بمنظور اطمينان از اجراي کدهاي مورد نظر در زمان مورد نظر ، مي بايست يک Event Handler را اضافه نمائيم .
مثال : يک صفحه ساده ASP.NETو استفاده از Web ServerControls و رويداد Page_Load |
<script runat="server"> Sub Page_Load(Sender As Object,E As EventArgs) TimeStamp.Text=now() End Sub </script> <html> <body bgcolor="yellow"> <center> <h2>Hello W3Schools!</h2> <asp:label id="TimeStamp" runat="server" /> </center> </body> </html> |
Event Handler ، روتيني است که مسئول اجراي کدهائي به ازاي تحقق يک رويداد است .رويداد Page_Load يکي از ده ها Event قابل فهم توسط ASP.NET است .
مرجع :
• کنترل هاي Html Server : تگ هاي مبتني بر HTML که توسط سرويس دهنده قابل فهم مي باشند . تمام کنترل هاي فوق مي بايست بهمراه تگ مربوطه که داراي خصلت runat=server است ، استفاده گردند .
• کنترل هاي Web Server : تگ هاي خاصي از ASP.NET بوده که توسط سرويس دهنده قابل فهم مي باشند . گرامر بکارگيري کنترل هاي فوق بصورت زير است :
<asp:control_name id="some_id" runat="server" />
Web Server Control | Description |
AdRotator | Displays a sequence of images |
Button | Displays a push button |
Calendar | Displays a calendar |
CheckBox | Displays a check box |
CheckBoxList | Creates a multi-selection check box group |
DataGrid | Displays fields of a data source in a grid |
DataList | Displays items from a data source by using templates |
DropDownList | Creates a drop-down list |
HyperLink | Creates a hyperlink |
Image | Displays an image |
ImageButton | Displays a clickable image |
Label | Displays static content which is programmable (lets you apply styles to its content) |
LinkButton | Creates a hyperlink button |
ListBox | Creates a single- or multi-selection drop-down list |
Literal | Displays static content which is programmable (does not let you apply styles to its content) |
Panel | Provides a container for other controls |
PlaceHolder | Reserves space for controls added by code |
RadioButton | Creates a radio button |
RadioButtonList | Creates a group of radio buttons |
Repeater | |
Table | Creates a table |
TableCell | Creates a table cell |
TableRow | Creates a table row |
TextBox | Creates a text box |
Xml | Displays an XML file or the results of an XSL transform |
• کنترل هاي Validation Server : از کنترل هاي فوق بمنظور بررسي صحت داده هاي ورودي توسط کاربر استفاده مي گردد . گرامر بکارگيري کنترل هاي فوق بصورت زير است :
<asp:control_name id="some_id" runat="server" />
Validation Server Control | Description |
CompareValidator | Compares the value of one input control to the value of another input control or to a fixed value |
CustomValidator | Allows you to write a method to handle the validation of the value entered |
RangeValidator | Checks that the user enters a value that falls between two values |
RegularExpressionValidator | Ensures that the value of an input control matches a specified pattern |
RequiredFieldValidator | Makes an input control a required field |
ValidationSummary | Displays a report of all validation errors occurred in a Web page |