يک نکته مهم که در زمان استفاده از NET Framework. بايد به آن توجه داشت آن است که فضانام (namespace يا نامکده) ها در ساختمان برنامه کاربردي قرار دارند. فضانام يک طرح نامگذاري منطقي براي گروه بندي کلاس هاي مرتبط است. اين طرح مانع از آن مي شود تا کلاس هايي که براي متدها و خصوصيات از يک شناسه يکسان استفاده مي کنند تداخل داشته باشند. مثلا NET Framework. براي گروه بندي تايپ ها به مقوله هاي منطقي عملکرد، از قبيل چارچوب برنامه کاربردي ASP.NET، از يک طرح نامگذاري سلسله مراتبي استفاده مي کند. ابزارهاي طراحي از فضانام ها با هدف تسهيل مرور و ارجاع تايپ ها در برنامه بهره برداري مي کنند. مثلا فرض کنيد در حال نوشتن کد زير هستيد:
Public Class NewClass
[Procedures and Functions]
End Class
Public Class NewClass
[Procedures and Functions]
End Class
اين کد به خطا منجر مي شود چون کامپايلر راهي براي تشخيص کلاس ها از يکديگر ندارد. براي غلبه بر اين مشکل مي توان از يک فضانام استفاده کرد که اجازه مي دهد دو کلاس همنام در صفحه با هم وجود داشته باشند. قطعه برنامه زير تعريف اين دو کلاس در فضانام هاي منحصر بفرد را نشان مي دهد:
Namespace One
Public Class NewClass
[Procedures and Functions]
End Class
End Namespace
Namespace Two
Public Class NewClass
[Procedures and Functions]
End Class
End Namespace
در اين کد برخوردي بين دو کلاس با نام NewClass وجود ندارد چون هر کدام در يک فضانام جداگانه قرار داده شده است. کلاس اول را مي توان با استفاده از ترکيب One.NewClass صدا زد، حال آنکه کلاس دوم را مي توان با استفاده از ترکيب Two.NewClass صدا زد. شما مي توانيد در فضانام هاي خود از يک ساختار سلسله مراتبي استفاده کنيد. قرار دادن اشياء مشابه تحت زيرعنوانها در يک فضانام مشترک تشخيص هدف فضانام را آسانتر مي کند، و در عين حال باعث مي شود برنامه به مراتب شئ گراتر شود. براي توضيح فضانام مي توان ساختار فايل و دايرکتوري (کشو، فولدر) در يک کامپيوتر را در نظر گرفت. در اين مثال کلاس ها به مثابه فايل ها و فضانام ها مانند دايرکتوري ها هستند. بديهي است همانگونه که مي توانيم دايرکتوريهاي تو در تو داشته باشيم، فضانام ها هم در حاليکه کلاس ها را در خود جاي داده اند مي توانند بصورت تو در تو باشند. فضانام ها در ساخت برنامه هاي کاربردي ASP.NET نقش مهمي ايفا مي کنند. خوشبختانه لازم نيست براي همه اشيايي که مي توانند به وسيله صفحات ASP.NET مورد استفاده قرار بگيرند سيستم طبقه بندي فضانام ايجاد کنيد. مايکروسافت اين مساله را براي شما حل کرده است. دو فضانام ريشه، و فضانامهاي فرزند آنها را مي توان وارد صفحات ASP.NET خود کرد. اولي System ناميده مي شود، و دومي Microsoft نام دارد. اين فضانامها با جزئيات بيشتر در ادامه مورد بحث قرار گرفته اند.
فضانام System
فضانام System فضانام اصلي براي ساخت ASP.NET و همه برنامه هاي کاربردي ديگر مبتني بر NET Framework. است. هر چيزي که در برنامه کاربردي شما قابل انجام باشد از طريق فضانام System کنترل مي شود. به عنوان مثال کنترل آرايه، عمليات رياضي، و تبديل نوع داده ها از طريق فضانام System و فضانامهاي فرزند آن اداره مي شوند. ? فضانام پيش فرض (فضانام System و ? فرزند آن) وجود دارند که به صورت خودکار به صفحات ASP.NET اضافه مي شوند:
- System
- System.ComponentModel.Design
- System.Data
- System.Drawing
- System.Web.SessionState
- System.Web
- System.Web.UI
- System.Web.UI.WebControls
- System.Web.UI.HTMLControls
هشت فضانام (بجز فضانام System) در زمان ساخت Visual Studio.NET يا VS.NET بطور خودکار به صفحات ASP.NET وارد مي شوند. اين فضانام ها در زير به اختصار شرح داده شده اند.
- System.ComponentModel.Design: دربرگيرنده کلاس هايي است که مي توان از آنها براي طراحي پشتيباني سفارشي اجزا و زمان طراحي و دسترسي به سرويس هاي تامين شده توسط معماري NET Framework. استفاده کرد.
- System.Data: امکان دسترسي به کلاس ها و رابطهايي را فراهم مي کند که معماري ADO.NET را براي دسترسي به داده هاي عمومي تشکيل مي دهند.
- System.Drawing: دربرگيرنده کلاس ها و رابطهايي است که عملکرد گرافيکي اوليه را تامين مي کنند. فضانام System.Drawing نيز از طريق فضانام System.Drawing.Drawing2D و System.Drawing.Imaging عملکرد پيشرفته تري فراهم مي کند.
- System.Web: کلاس ها و رابطهايي تامين مي کند که ارتباط مرورگر/سرويس دهنده را امکان پذير مي کنند. اين فضانام دربرگيرنده کلاس HTTPRequest (فراهم کننده اطلاعات وسيعي درباره درخواست HTTP جاري)، کلاس HTTPResponse (فراهم آورنده امکان دسترسي به فرآيندها و يوتيليتي هاي سمت سرويس دهنده) است.
- System.Web.SessionState: فراهم کننده کلاس ها و متدهايي براي مديريت وضعيت جلسات کاري مي باشد.
- System.Web.UI: فراهم کننده کلاس ها و رابطهايي براي رابط واسط کاربر برنامه کاربردي ASP.NET است که موجب مي شوند برنامه کاربردي با سطوح مختلف صفحه، ارتباط برقرار کند. کلاس اصلي اين فضانام، کلاس Page مي باشد که دربرگيرنده همه خصوصيتها، متدها، و سازنده هاي صفحه است. اشياء اصلي Active Server Page زير خصوصيتهايي در کلاس Page هستند: Application ،Response ،Request ،Server و Session.
- System.Web.UI.HTMLControls: کلاس هايي براي عناصر HTML استاندارد، شامل فرم ها، کنترل هاي ورودي، آنکور، جداول، قسمتهاي متني، و غيره فراهم مي کند. اين کنترلها همانند تگهاي عادي HTML هستند با اين تفاوت که داري دو صفت runat="server" و id="controlname" مي باشند.
- System.Web.UI.HTMLControls: براي کنترلهاي سرويس دهنده اي که شبيه کنترلهاي HTML هستند ولي انعطاف پذيري بيشتر و عملکرد پيچيده تري دارند کلاس هايي را تامين مي کند. برخي فضانام هاي مهم و پرکاربرد ديگر به شرح زير مي باشند.
- System.IO: دربرگيرنده رابطها و کلاس هايي است که امکان خواندن و نوشتن همگام و غيرهمگام فايل ها و جريانهاي داده را فراهم مي کنند.
- System.Data.OleDb: امکان دسترسي به کلاس ها و رابطهاي مخصوص دسترسي به يک منبع داده از طريق ADO را فراهم مي کند.
- System.Data.SqlClient: امکان دسترسي به کلاس ها و رابطهاي مخصوص دسترسي به داده هاي خاص Microsoft SQL Server از طريق ADO را فراهم مي کند.
- System.Web.Security: امکان دسترسي به کلاسها و رابطهاي مخصوص امنيت برنامه کاربردي ASP.NET را فراهم مي کند. دستيابي به رمزنگاري، مجوزها، و تنظيمات خط مشي برنامه کاربردي در اين فضانام قرار مي گيرند.
- System.XML: امکان دسترسي به کلاسها و رابطهاي مخصوص پردازش اسناد XML را فراهم مي کند.
فضانام Microsoft
علاوه بر فضانام System که در چارچوب NET. يافت مي شود، مايکروسافت چند فضانام اضافه کرده است که براي زبان برنامه سازي اي که مي خواهيد از آن در برنامه کاربردي خود استفاده کنيد عملکرد لازم را تامين مي کنند. ممکن است شما بصورت مستقيم با اين فضانام کاري نداشته باشيد.
- Microsoft.VisualBasic: اين فضانام محتوي CLR يا زمان اجراي Visual Basic.NET است. از اين زمان اجرا با زبان Visual Basic.NET استفاده مي شود. اين فضانام همچنين دربرگيرنده کلاس هايي است که از کامپايل و توليد کد با استفاده از زبان ويژوال بيسيک پشتيباني مي کنند.
- Microsoft.CSharp: اين فضاي نام دربرگيرنده کلاس هايي است که از کامپايل و توليد کد با استفاده از زبان #C پشتيباني مي کنند.
- Microsoft.JScript: اين فضاي نام دربرگيرنده کلاس هايي است که از کامپايل و توليد کد با استفاده از زبان JScript پشتيباني مي کنند.
- Microsoft.Win32: کلاسها و رابطهاي مورد نياز براي کار با کليدها و hiveهاي رجيستري را تامين مي کند. با وجود آنکه فضانام ها از قبل تامين مي شوند، مي توانيد براي استفاده از برنامه کاربردي ASP.NET فضانام هاي خود را ايجاد کنيد. براي هر کلاس ايجاد شده توسط سازنده يک فضانام توليد مي شود.
استفاده از فضانام ها در صفحات ASP.NET
دو راه براي افزودن فضانام به برنامه کاربردي ASP.NET وجود دارد. از شبه دستور (Directive) صفحه Import@ براي صفحات ASPX و از کلمه کليدي Imports براي افزودن فضانام به برنامه codebehind مربوطه در ويژوال بيسيک استفاده مي شود و براي زبان #C از دستور using استفاده مي گردد. قطعه برنامه زير ترکيب نحوي براي افزودن فضانام System.Web.UI.WebControls به صفحه ASP.NET شما است.
<%@ Import namespace = "System.Web.UI.WebControls" % >
همين فضانام را در قسمت codebehind بصورت زير به برنامه اضافه مي کنيم.
Imports System.Web.UI.WebControls (vb.net )
using System.Web.UI.WebControls; (C#)
( به تفاوت Import و Imports دقت کنيد )
در صورتيکه مي خواهيد چند فضانام را به صفحه ASP.NET خود و يا صفحه codebehind اضافه کنيد بايد هرکدام را جداگانه اضافه کنيد. بعنوان مثال، براي افزودن فضانام System.Web.UI.HTMLControls به صفحات با فضانام هاي موجود، درست بعد از آخرين عبارت مهم به خط بعد برويد و Imports System.Web.UI.HTMLControls را اضافه کنيد. به محض آنکه .Imports System را تايپ کنيد، VS.NET فهرستي از فضانام ها را ظاهر مي کند، و مي توانيد به سادگي فضانام مورد نظر را با ماوس برگزينيد. امتياز اين فهرست آن است که مجبور نيستيد همه فضانام هاي NET. را از حفظ بدانيد، بلکه مي توانيد به آساني از فهرست انتخاب کنيد. اين ويژگي با عنوان Intellisense شناخته مي شود. براي صفحات ASP.NET از اين ترکيب استفاده کنيد:
< %@ Import namespace = "System.Web.UI.WebControls" % >
< %@ Import namespace = "System.Web.UI.HTMLControls" % >
< %@ Import namespace = "namespace name" % >
براي صفحات codebehind ويژوال بيسيک از اين ترکيب استفاده کنيد:
Imports System.Web.UI.WebControls
Imports System.Web.UI.HTMLControls
Imports namespace