برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

ایمن سازی سرویس دهنده FTP

سرویس FTP)File Transfer Protocol) یکی از قدیمی ترین و متداولترین سرویس های موجود بر روی اینترنت است . از سرویس فوق ، بمنظور ارسال و دریافت فایل در یک شبکه استفاده می گردد. سرویس FTP ، توسط عموم کاربران اینترنت استفاده و بعنوان استانداردی برای ارسال و دریافت فایل در شبکه ( اینترانت ، اینترنت )  توسط اکثر سیستم های عامل پذیرفته  شده است
ویندوز 2000 بهمراه خود از یک سرویس دهنده FTP استفاده می نماید که بعنوان بخشی از IIS  در نظر گرفته می شود. مدیران سیستم با استفاده از سرویس فوق و ترکیب آن با  سایر امکانات ارائه شده توسط ویندوز ، قادر به ایجاد و پیکربندی یک سایت FTP با ضریب امنیتی مناسبی خواهند بود.در ادامه و بمنظور ایمن سازی یک سایت FTP ، پیشنهادات متعددی ارائه می گردد.

نکته اول : دستیابی از طریق  Anonymous account را غیر فعال نمائید . دستیابی از نوع Anonymouse، بصورت پیش فرض و پس از نصب اولین سرویس دهنده  FTP فعال می گردد. روش  فوق ، امکان دستیابی به سایت FTP را بدون نیاز به یک  account  خاص فراهم می نماید. بدین ترتیب استفاده کنندگان بصورت کاملا" ناشناس قادر به استفاده از منابع موجود بر روی سرویس دهنده FTP  بوده و امکان مشاهده سودمند ترافیک سایت و در صورت ضرورت، ردیابی آنان وجود نخواهد داشت . با حذف قابلیت دستیابی Anonymous ، امکان دستیابی به سایت FTP صرفا" در اختیار کاربرانی قرار خواهد گرفت که دارای یک account معتبر باشند.
پس از تعریف هر یک از account های مورد نظر، می توان در ادامه با استفاده از ACL)Access Control List) کنترل ها و مجوزهای مربوط به دستیابی به دایرکتوری FTP ( محل فیزیکی استقرار سایت FTP بر روی دیسک ) را تعریف و مشخص نمود . در این رابطه می توان از مجوزهای NTFS استفاده کرد. به منظور غیر فعال نمودن Anonymous account ، می توان از طریق صفحه Property مربوط به سایت FTP  (  برنامه Internet Information Service )  عملیات مورد نظر را انجام داد .

نکته دوم : فعال نمودن Logging . با فعال نمودن Logging بمنظور اتصال به سایت FTP ، این اطمینان بوجود خواهد آمد که اطلاعات لازم ( آدرس های IP و یا نام کاربران ) در خصوص کاربرانی که بصورت موفقیت آمیز به سایت متصل شده اند ، ثبت خواهد شد.با استفاده از فایل های لاگ که در این رابطه ایجاد خواهد شد ، می توان ترافیک موجود بر روی سایت را مشاهده و در صورت یک تهاجم ، امکان ردیابی اولیه آن فراهم گردد. بمنظور فعال نمودن ویژگی فوق، کافی است که  Chex box مربوطه  از طریق صفحه Property مربوط به سایت FTP انتخاب گردد .در ادامه ، فایل های لاگ  بر اساس فرمتی که مشخص شده است ، ایجاد خواهند شد . استفاده از فایل های لاگ ، بمنظور مشاهده و آنالیز ترافیک سایت  بسیار مفید خواهد بود.

نکته سوم : تنظیم و پیکربندی مناسب  لیست ACL ( لیست کنترل دستیابی ) .دستیتابی به دایرکتوری FTP می بایست با استفاده از مجوزهای NTFS و بکارگیری محدودیت های ACL ، کنترل گردد .  دایرکتوری FTP نباید دارای گروه Everyone با تمامی امتیازات و مجوزها باشد ( امکان کنترل مجوزها  و کاربرانی که سایت FTP متصل شده اند وجود نخواهد داشت ) .بدین منظور لازم است  بر روی دایرکتوری مربوط به سایت FTP مستقر و با انتخاب گزینه Property و  Security Option ، اسامی موجود را حذف و  با انتخاب دکمه Add از لیست موجود،  Authenticated user را انتخاب کرد . در ادامه می توان با توجه به سیاست های موجود مجوز Read,Write و List Folder contents را در اختیار گروه مربوطه قرار داد . در صورتیکه سیاست موجود اقتضاء می کند ، می توان صرفا" امکان دستیابی Write را در اختیار گروه مربوطه قرار و مجوزهای Read وList Folder Contents را از آنها سلب نمود .

نکته چهارم : پیکربندی سایت بعنوان دریافت کننده نه ارسال کننده  . در صورتیکه صرفا" نیاز است که کاربران فایل هائی را برای سرویس دهنده ، ارسال و امکان دریافت فایل از سرویس دهنده را نداشته باشند ، می توان سایت FTP را بصورت Blind put پیکربندی نمود. بدین ترتیب به کاربران امکان ارسال ( نوشتن ) فایل بر روی سرویس دهنده داده خواهد شد .( امکان  خواندن از دایرکتوری FTP  وجود نخواهد داشت ) . بدین منظور می توان پس از انتخاب سایت FTP از طریق Home Directory ، اقدام به تنظیمات مورد نظر نمود.

نکته پنجم : فعال نمودن Disk Quotas. با استفاده از امکانات ارائه شده توسط ویندوز 2000 ، می توان اقدام به تعیین ظرفیت و یا سهیه ذخیره سازی بر روی دیسک برای هر یک از کاربران نمود..ویژگی فوق ، باعث اعمال محدودیت در رابطه با میزان فضای ذخیره سازی مربوط به یک کاربر می گردد.بصورت پیش فرض ، مالکیت  به هر کاربر که در فایلی می نویسد اعطاء می گردد . با فعال نمودن و انجام تنظیمات مورد نظر، می توان پیشگیری لازم در ارتباط با تهاجم به یک سایت FTP را انجام داد ( پر نمودن ظرفیت دیسک ). در صورت تحقق وضعیت فوق ، دامنه اشکال بوجود آمده به سایر  سرویس هائی که از فضای ذخیره سازی دیسک استفاده می نمایند نیز سرایت خواهد کرد. برای فعال نمودن Quota Management ، بر روی درایو موردنظر مستقر و با کلیک سمت راست گزینه Property را انتخاب و در نهایت گزینه Quota Tab انتخاب شود .امکان فوق ، صرفا" در ارتبا ط با پارتیشن های NTFS قابل استفاده خواهد بود.استفاده از Disk Quota ، محدود به پارتیش های NTFS بوده و علاوه بر این  صرفا" می تواند در رابطه با یک کاربر استفاده شده وامکان بکارگیری آن در ارتباط با گروه ها وجود نخواهد داشت . با انتخاب دکمه Quota Entries می توان اقدام به تعریف یک Entry جدید و تعریف محدودیت های مورد نظر نمود.

نکته ششم : استفاده از محدودیت زمانی برای Logon . با استفاده از امکانات ارائه شده همراه  ویندوز 2000 ، می توان زمان خاصی را برای ورود به شبکه کا ربران تعریف نمود. بدین ترتیب کاربران صرفا" قادر به استفاده از سرویس دهنده در ساعات مشخص شده خواهند بود.ویژگی فوق ، بطرز محسوسی باعث کنترل دستیابی به سایت FTP خواهد شد. برای پیکربندی زمان  logon ، از برنامه Active Directory Users and Computers استفاده می گردد . پس از فعال شدن برنامه فوق ، کاربر مورد نظر را انتخاب و پس از مشاهده صفحه  Property مربوطه، با انتخاب دکمه Logon hours  از طریق Account Tab ، می توان اقدام به  مشخص نمودن زمان مورد نظر کاربر برای استفاده ازسرویس دهنده  نمود.


 

نکته هفتم : محدودیت دستیابی بر اساس آدرس IP . بمنظور دستیابی به سایت FTP می توان معیار دستیابی را بر اساس آدرس های IP خاصی در نظر گرفت . با اعمال محدودیت فوق ، اقدامات مناسبی بمنظور کنترل دستیابی به سایت در نظر گرفته خواهد شد . بمنظور فعال نمودن ویژگی فوق ، پس از انتخاب سایت FTP از طریق برنامهInternet Information Services و مشاهده  صفحه Property ، گزینه Directory Security Tab انتخاب گردد. در ادامه،  Denied Access فعال و می توان  با استفاده از دکمه Add آدرس های IP تائید شده را معرفی کرد.

نکته هشتم :ثبت رویدادهای Audit logon . با فعال نمودن  Auditing ( ممیزی ) مربوط به رویدادهای Account Logon ، می توان تمامی تلاش های موفقیت آمیز و یا با شکست مواجه شده جهت اتصال به سایت FTP را با استفاده از Security log مربوط به Event Viewer ، مشاهده نمود. مشاهده ادواری این لاگ می تواند عامل موثری در کشف ، تشخیص و ردیابی  تهاجم به یک سایت باشد. (تشخیص مزاحمین و مهاجمین اطلاعاتی ). بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Local Policies/audit policy ، می توان اقدام به تغییر Local Setting به Success و Failure نمود.

 

نکته نهم : فعال نمودن Strong Password . استفاده از رمزهای عبور پیچیده ،روشی مناسب بمنظور افزایش امنیت در خصوص ارائه یک سرویس خاص برای کاربران تائید شده است . با توجه به جایگاه سرویس دهنده FTP ، استفاده از رمزهای عبور قدرتمند می تواند عاملی موثر در جهت افزایش امنیت سایت های FTP باشد .  با استفاده از امکانات ارائه شده در ویندوز 2000 ، مدیران سیستم می توانند کاربران را مجبور به استفاده از رمزهای عبور مستحکم و قوی نمایند. بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Account Policy/Password Policy  ، می توان گزینه Passwords Must Meet Complexity Requirements را فعال نمود . پس از فعال شدن ویژگی فوق ، هر یک از account های تعریف شده تابع شرایط و محدودیت های زیر خواهند بود :

  • رمز عبور تعریف شده نمی تواند شامل تمام و یا بخشی از نام Account کاربر باشد .
  • رمز عبور تعریف شده می بایست دارای طولی به اندازه حداقل  شش باشد .
  • رمز عبور تعریف شده می تواند شامل کاراکترها ئی از سه گروه از  چهار گروه زیر باشد :
    - حروف الفبائی  A-Z
    - حروف الفبائی a-z
    - ارقام صفر تا نه
    - کاراکترهای خاص ( %,#,$,!)

نکته دهم : فعال نمودن Account Lockout و Account Lockout Threshold .آگاهی و تشخیص رمزهای عبور یکی از موضوعات مورد علاقه اکثر مهاجمان و برنامه های تشخیص دهنده رمز عبوراست .با استفاده از امکانات ارائه شده بهمراه  ویندوز 2000 ، مدیران شبکه می توانند تعداد دفعاتی را که یک کاربرسعی در ورود به شبکه می نماید و عملیات وی با موفقیت همراه نمی گردد را مشخص و در صورت تحقق شرایط فوق ، account مربوطه غیر فعال گردد. با فعال نمودن ویژگی فوق و پیکربندی میزان آستانه ، مدیران شبکه می توانند عماکرد برنامه های تشخییص دهنده رمز های عبور و یا مهاجمان اطلاعاتی را محدود و ضریب ایمنی را افزایش دهند.  بمنظور فعال نمودن ویژگی فوق ، از برنامه Local Security Policy و یا Group Policy استفاده می گردد (Programs|Administrative Tools ) . پس از فعال شدن برنامه فوق و استقرار در Account Policy/Account Lockout Policy  ، می توان تنظیمات لازم در خصوص Account Lockout duration , Account lockout threshold و Reset account lockout counter after را انجام داد .

ذخیره و بازیابی اطلاعات کاربران در برنامه های وب

مهمترین رسالت برنامه های کامپیوتری ارتباط با کاربران و پاسخگوئی به نیاز آنان با توجه به پتانسیل های پیش بینی شده در برنامه می باشد. شناسائی کاربران توسط برنامه های کامپیوتری می تواند زمینه ارائه سرویس ها و خدمات بهینه تری را فراهم نماید( ارائه سرویس ها و خدمات مشخص شده به گروهی خاص از کاربران )  . برنامه های وب نیز از این قاعده مستثنی نبوده و با توجه به ماهیت Stateless بودن پروتکل ارتباطی  بین سرویس گیرنده و سرویس دهنده ( ارسال درخواست ، پاسخ به درخواست ، عدم بخاطر سپردن  اطلاعاتی در ارتباط با در خواست ارسالی و پاسخ دریافتی ) ، می بایست تمهیدات خاصی بمنظور شناسائی  کاربران اتخاذ گردد. برخی از برنامه های وب ، کاربران را ملزم می نمایند که در ابتدا یک فرم را تکمیل و اصطلاحا" ریجستر گردند . در چنین برنامه هائی ، در صورتیکه کاربر مجددا" از برنامه وب استفاده نماید ( ملاقات مجدد وب سایت مربوطه ) ، امکان شناسائی کاربر با بهره گیری از راهکارهای متفاوتی وجود خواهد داشت ( شناسائی کاربر بر اساس بازیابی اطلاعات ثبت شده ) . وب سایتی را در نظر بگیرید که از طریق آن محصولاتی عرضه و توسط کاربران خریداری می گردد . در زمان خرید کالا توسط کاربران ، سایت موردنظر می تواند اقدام به دریافت اطلاعات خریدار و ثبت آنان بر اساس مکانیزمهای متفاوت نماید . در صورتیکه کاربر فوق ، مجددا" از این سایت کالائی را خریداری نماید ، می توان اطلاعات مربوط به وی را (اطلاعات شناسنامه ای ، آدرس و ... ) بصورت اتوماتیک در فرم  سفارش جدید، درج نمود .

شناسائی  کاربران برنامه هاب وب
یکی از روش هائی که برنامه های وب را قادر به شناسائی کاربران می نماید، الزام کاربران  به درج نام و رمز عبور بمنظور استفاده از برنامه می باشد. برنامه های وب ، همچنین قادر به شناسائی کاربران از طریق اطلاعات ذخیره شده بر روی کامپیوتر کاربران  و به شکل "کوکی " می باشند. کوکی ، فایل کوچکی بوده  که یک برنامه وب قادر به نوشتن آن  بر روی کامپیوتر سرویس گیرنده است .
از مهمترین مزایای کوکی ، می توان به تعامل نامحسوس با  کاربر اشاره نمود. در چنین مواردی ، کاربران  هر مرتبه که سایت را ملاقات می نمایند ، الزامی به  Log on ، نخواهند داشت . ( اطلاعات آنان ، بصورت اتوماتیک و در صورت ضرورت در دسترس و قابل استفاده است) . مهمترین نقطه ضعف در جهت  استفاده از  کوکی ، به تنظیم مرورگرها توسط کاربران بمنظور عدم پذیرش کوکی، برمی گردد .برخی از کاربران تمایل و علاقه ای به  ذخیره سازی اطلاعات از طریق یک سایت بر روی کامپیوتر خود را نداشته و تصور می نمایند  که ممکن است از اطلاعات فوق ، بمنظور ردیابی آنان در زمان استفاده از اینترنت ، سوء استفاده  گردد. بنابراین در مواردیکه قصد استفاده از کوکی وجود داشته باشد ، می بایست در ابتدا توانائی سرویس گیرنده برای پذیرش کوکی بررسی گردد .
در زمان استفاده از کوکی بمنظور ذخیره و بازیابی اطلاعات کاربران ، می توان  از دو رویکرد متفاوت استفاده نمود :

  •  ذخیره تمامی اطلاعات کاربران بعنوان یک کوکی بر روی ماشین سرویس گیرنده. استفاده از روش فوق ، درمواردیکه اطلاعات کاربر ساده بوده و سرویس دهنده ضرورتی به استفاده از آنان بمنظور تکمیل عملیات خود نداشته باشد ، می تواند مفید باشد .

  • ذخیره یک کلید شناسائی بر روی ماشین سرویس گیرنده و بازیابی سایر  اطلاعات کاربر از طریق یک منبع داده بر روی سرویس دهنده با توحه به کلید شناسائی .

در ادامه به بررسی هر یک از رویکردهای فوق ، خواهیم پرداخت.

ذخیره سازی اطلاعات کاربران بر روی سرویس گیرنده
برای ذخیره  یک کوکی  بر روی ماشین سرویس گیرنده ، مراحل زیر را دنبال می نمائیم :

  • بررسی و حصول اطمینان از توانائی  سرویس گیرنده بمنظور پذیرش کوکی ( استفاده از خصلت Cookies مربوط به شی مرورگر) .
  • در صورت حمایت  سرویس گیرنده از کوکی ، بررسی وجود کوکی بر روی ماشین سرویس گیرنده ( استفاده از مجموعه Cookies مربوط به شی Request )
  • در صورت عدم وجود کوکی ، ایجاد یک کوکی جدید با استفاده از کلاس HttpCookie .
  • مقداردهی مناسب  خصلت های Expiration و Value .
  • افزدون شی Cookie به مجموعه Cookies مربوط یه شی Response .

برنامه زیر( روتین مربوط به رویداد Page_Load ) ، نحوه ایجاد یک کوکی و تشخیص آخرین مرتبه ملاقات سایت توسط کاربر را نشان می دهد.در برنامه فوق ، بررسی لازم در خصوص پدیرش کوکی از طرف سرویس گیرنده ، صورت گرفته و در صورتیکه اولین مرتبه است که کاربر سایت را ملاقات می نماید ، یک کوکی جدید ایجاد و در غیر اینصورت ، کوکی ایجاد شده ، بهنگام می گردد.

VB.NET

Private Sub Page_Load ( ByVal Sender As System.Object , ByVal  e  As  System.EventArgs ) Handles Mybase.Load
     If   Request.Browser.Cookies Then
           If  Request.Cookie ("LastVisit")  Is Nothing  Then
                Dim CookLastVisit As New HttpCookie( " LastVisit" , Now.ToString ( ) )
                CookLastVisit.Expires = DateTime.Now.AddDays( 1 )
                Response.Cookie.Add (CookLastVisit )
                Response.Write( " First Visit " )
           Else
                 Dim CookLastVisit As HttpCookie = Request.Cookies ("LastVisit")
                 Reuest.Cookies( "LastVisit " )
                 Response.write ( "You last visited this page : " ,CookLastVisit.value )
                 Response.Cookies ( "LastVisit ").Value = Now.ToString ( )
                 Response.Cookies ( "LastVisit").Expires = DateTime.Now.AddDays(1)
            End If
      Else
            Response.Write ( "Your Browser does not accept cookies . " )
      End If
 End Sub          

کوکی ها نسبت به حروف بزرگ و کوچک حساس می باشند . مثلا" LastVisit  مشابه کوکی Lastvisit نمی باشد .خصلت Expires ، نشاندهنده تاریخ مصرف کوکی می باشد. عمر یک کوکی بصورت پیش فرض ، محدود به زمانی است که Session  کاربر خاتمه می یابد. درصورت تنظیم Expires بصورت DateTime.MaxValue ، اعتبار کوکی ایجاد شده، هرگز  به اتمام نخواهد رسید .  بمنظور حذف کوکی از ماشین سرویس گیرنده ، می توان مقدار خصلت Expires را به زمان جاری تغییر داد .کد زیر ، کوکی LastVisit  را حذف می نماید.

VB.NET

Private Sub Page_Load ( ByVal Sender As System.Object , ByVal  e  As  System.EventArgs ) Handles  butRemoveCookie.Click
      Response.Cookies( "LastVisit").Expires = DateTime.Now
End Sub

استفاده از کلید بهمراه کوکی
یک کوکی ، قادربه ذخیره سازی 4096 بایت اطلاعات بوده و می توان بمنظور شناسائی اطلاعات همراه کوکی از کلید ها ، استفاده نمود. برنامه زیر ، مشخصات  کاربر را در یک کوکی با استفاده از  کلیدهای جداگانه ای ذخیره می نماید .

VB.NET

Private Sub Page_Load ( ByVal Sender As System.Object , ByVal  e  As  System.EventArgs ) Handles butOK.Click
     Dim CookUserInfo  As New HttpCookie ("UserInfo")
     CookUserInfo("FirstName") = txtFirstName.Text
     CookUserInfo("LastName") = txtLastName.Text
     CookUserInfo("Street") = txtStreet.Text
     CookUserInfo("City") = txtCity.Text
     CookUserInfo("state") = drpstate.Selected.Item.value
     CookUserInfo("Zip") = txtZip.Text
     CookUserInfo.Expires = DateTime.Now.AddDays ( 30 )
     Response.Cookies.Add( CookUserInfo )
End Sub
 

با استفاده از نام کلید ، می توان اقدام به بازیابی مقادیر نسبت داده شده به هر یک از کلیدهای ذخیره  شده در کوکی نمود .

VB.NET

Private Sub Page_Load ( ByVal Sender As System.Object , ByVal  e  As  System.EventArgs ) Handles butGetData.Click
     Dim CookUserInfo  As New HttpCookie ("UserInfo")
    
txtFirstName.Text = CookUserInfo("FirstName")
     txtLastName.Text  = CookUserInfo("LastName")
     txtStreet.Text = CookUserInfo("Street")
     txtCity.Text  = CookUserInfo("City")
     drpstate.Selected.Item.value = CookUserInfo("state")
     txtZip.Text  = CookUserInfo("Zip") = txtZip.Text
 End Sub

ذخیره سازی اطلاعات کاربران بر روی سرویس دهنده
برای ذخیره اطلاعات کاربران بر روی سرویس دهنده ، می توان از کوکی بعنوان یک ابزار شناسائی ( ایندکس ) بمنظور ذخیره و بازیابی اطلاعات کاربران بر روی سرویس دهنده   در یک بانک اطلاعاتی ، یک فایل XML و سایر امکانات ذخیره سازی داده ، استفاده نمود. برای ذخیره اطلاعات کاربران بر روی سرویس دهنده ، مراحل زیر را دنبال می نمائیم :

  • ایجاد یک کلید منحصر بفرد بمنظور شناسائی کاربر
  • ذخیره کلید منحصر بفرد بعنوان یک کوکی بر روی ماشین کاربر
  • ایجاد یک فایل بر روی سرویس دهنده بمنظور ذخیره سازی اطلاعات کاربران
  • ذخیره اطلاعات کاربران بر روی سرویس دهنده با استفاده از کلید منحصربفرد بعنوان یک ایندکس

در ادامه به بررسی هر یک از مراحل فوق ، خواهیم پرداخت .

ایجاد کلیدهای منحصر بفرد بمنظور شناسائی کاربران
فریمورک دات نت ، Namespace با نام System.Guid را بمنظور ایجاد شناسه های منحصربفرد سراسری (  GUID ) ارائه نموده است . GUID ، یک عدد صحیح 128 بیتی بوده که بعنوان  شناسه ای  منحصربفرد در شبکه ایفای وظیفه می نماید . از GUID می توان بمنظور شناسائی  تمامی چیزها از جمله  کاربران استفاده نمود . کد زیر ، یک GUID را ایجاد و آن را بعنوان یک کوکی بر روی کامپیوتر کاربر و بمنظور شناسائی وی در آینده ، ذخیره می نماید .

VB.NET

Private Sub Page_Load ( ByVal sender As System.Object , ByVal  e  As  System.EventArgs ) Handles butOK.Click
     Dim cookUserID  As HttpCookie = Request.Cookies ( "UserID")
    
     If  cookUserID   Is Nothing  Then
                cookUserID = New HttpCookie ("UserID") , System.Guid.NewGuid ( ). ToString ( ) )
                cookUserID.Name = "UserID"
         
End If
      cookUserID.Expires = DateTime.Now.AddDays( 30 )
      Response.Cookies.Add (cookUserID )
      SetUserInfo (cookUserID.Value )
 End Sub           

ایجاد یک فایل بمنظور ذخیره اطلاعات کاربران
مهمترین هدف ذخیره سازی اطلاعات کاربران، بازیابی آنان با سرعت مناسب و پس از ملاقات مجدد کاربران از سایت و یا اجرای برنامه وب است . با توجه به اینکه این نوع از کاربران با استفاده از یک کلیدمنحصربفرد،  شناسائی می گردند ، می توان چنین تصور نمود که دستیابی به داده از طریق یک Data set انجام خواهد شد. Data set ، با استفاده از متد Find ، قادر به بازیابی سطرهائی از داده  بکمک کلیدها ی منحصربفرد می باشد . استفاده از یک Data set ، بدان معنی است که فایل ایجاد شده بر روی سرویس دهنده ، می بایست یک بانک اطلاعاتی و یا یک فایل XML باشد . استفاده از فایل های XML در مواردیکه داده های مورد نظر برای ذخیره سازی اندک بوده و روابط بین اقلام اطلاعاتی نیز پیچیده نباشد ، توصیه می گردد .
برای ایجاد یک فایل XML ، بمنظور ذخیره سازی اطلاعات کاربران ، مراحل زیر را دنبال می نمائیم :

  • ایجاد یک فایل XML در ویژوال استودیو دات نت شامل داده تستی برای هر یک از فیلدهای داده که قصد ثبت آنان در ارتباط با کاربر وجود دارد .
  • ایجاد یک XML schema  برای فایل XML ایجاد شده در مرحله قبل. با استفاده از  XML schema ، یک Data Set قادر به مراجعه داده موجود در فایل XML  بر اساس نام می باشد .
  • مشخص نمودن فیلد کلید در XML schema . بدین ترتیب،امکان یافتن رکوردهای استفاده کننده از فیلد فوق با استفاده از متد Find ،فراهم می گردد .
  • خواندن XML schema  و فایل XML  درون یک Data set .

ایجاد یک فایل XML
برای ایجاد یک فایل XML در ویژوال استودیو ، گزینه Add New Item را از طریق منوی Project انتخاب و در ادامه XML File  را از طریق  لیست تمپلیت های  نمایش داده شده ، انتخاب می نمائیم .  فایل های XML ، شباهت زیادی به فایل های HTML داشته و در این راستا تفاوت های مهمی نظیر حساسیت نسبت به حروف بزرگ و کوچک و پیروی از یک گرامر خاص ، نیز وجود دارد. از تگ های <element> و <element / >  بمنظور معرفی عناصر داده در یک فایل XML استفاده می گردد . کد زیر، نحوه ایجاد یک فایل XML بمنظور ذخیره سازی مشخصات  کاربر را نشان می دهد .

VB.NET

<?xml version="1.0" encoding="utf-8" ?>
 <USERS xmlns="http://tempuri.org/userprefs.xsd">
    <USER>
    <FIRSTNAME> Ali </FIRSTNAME>
    <LASTNAME> Irani </LASTNAME>
     <STREET> Sabz </STREET>
      <CITY> Tehran </CITY>
      <STATE> Tehran </STATE>
      <ZIP> 3240</ZIP>
              <ID> 12345678 </ID>
    </USER>
</USERS>

ایجاد یک XML Schema
بمنظور استفاده از فایل XML بهمراه یک Data Set ، می بایست در ابتدا یک XML Schema برای Data set ایجاد گردد. XML Schema ، مسئولیت تشریح عناصر داده ئی  موجود در یک فایل XML را بر عهده دارد. XML Schema ،  نام عناصر ، نوع آنان ،کلید بودن فیلد و سایر اطلاعات ضروری را ارائه می نماید . برای ایجاد XML Schema  از یک فایل XML ، زمانیکه فایل XML در پنجره طراحی ویژوال استودیو دات نت ، فعال است ، گزینه Create Schema را از طریق منوی XML ، انتخاب می نمائیم . در ادامه ، ویژوال استودیو دات نت ، فایل Schema را بمنظور تشریح فایل XML  ایجاد می نماید .

 

مشخص نمودن یک فیلد کلید
با افزودن یک کلید اولیه  به XML Schema ، امکان جستجو فراهم  خواهد شد .بدین منظور ، مراحل زیر را دنبال می نمائیم :

  • کلیک سمت راست بر روی عنصر مورد نظری که می خواهیم بعنوان فیلد کلید در نظر گرفته شود.انتخاب گزینه Add و در ادامه New Key  . ویژوال استودیو ، جعبه محاوره ای Edit Key را نمایش خواهد داد .

  • گزینه Dataset Primary Key را انتخاب و دکمه OK را فعال می نمائیم . بدین ترتیب ، امکان استفاده از متد Find مربوط به شی DataSet بمنظور بازیابی سطرهائی از Data set ، فراهم می گردد.

خواندن XML درون یک Data Set
پس از ایجاد فایل XML و XML Schema  ، امکان خواندن و ذخیره آن درون یک Data set ، فراهم می گردد. ( استفاده از متدهای ReadXml و ReadXmlSchema ) . برنامه زیر ، تابعی را نشان می دهد که می توان از آن بمنظور برگرداندن یک Data Set  از یک فایل  XML با نام UserInfo ، استفاده نمود .

VB.NET

Function GetUserData ( ) As DataSet
     Dim strPath  As String = Server.MapPath( Request.ApplicationPath)
     Dim dsUsers  As New DataSet ( )
     dsUsers.ReadXmlSchema ( strPath & "UserInfo.xsd")
     dsUsers.ReadXmlSchema ( strPath & "UserInfo.xml")
     Return dsUsers
End Function

ذخیره اطلاعات کاربر بر روی سرویس دهنده
بمنظور ذخیره سازی اطلاعات کاربران  بر روی سرویس دهنده بصورت یک فایل XML ، می توان از متد SaveXML مربوط به شی Data set  استفاده نمود. روتین SetUserInfo  ( جدول زیر ) ،  از روتین GetUserData بخش قبل ،استفاده نموده تا یک Data set را از یک فایل XML دریافت نماید. در ادامه ، با استفاده از متد Find ، بررسی لازم در خصوص وجود UserID در Data Set صورت می پذیرد.در صورتیکه UserID پیدا نگردد ، روتین SetUserInfo سطری را برای کاربر ( قبل از تنظیم مقادیر متناظر با فیلدها از طریق کنترل های سرویس دهنده بر روی یک فرم وب )، اضافه می نماید. در نهایت ، SetUserInfo ، تمامی داده را به سرویس دهنده برمی گرداند .

VB.NET

Sub SetUserInfo ( ByVal UserID  As String )
      Dim strPath  As String = Server.MapPath( Request.ApplicationPath)
      Dim dsUsers  As  DataSet = GetUserData ( )
      Dim rowUser  As DataRow = dsUsers.Tables("User") .Rows.Find( UserID)
      If  rowUser   Is Nothing Then
           rowUser = dsUsers.Tables ("User") . NewRow
           dsUsers.Tables ( "User").Rows.Add ( rowUser )
     End If
     rowUser ("FirstName") = txtFirstName.Text
     rowUser ("LastName") = txtLastName.Text
     rowUser ("Street") = txtStreet.Text
     rowUser ("City") = txtCity.Text
     rowUser ("state") = drpstate.Selected.Item.Text
     rowUser ("Zip") = txtZip.Text
     rowUser ( "ID" ) = UserID
     dsUsers. Writexml ( strPath & "UserInfo.xml")
End Sub

بازیابی اطلاعات کاربران از یک Data Set
بمنظور بازیابی اطلاعات کاربران از فایل XML ، از روتین GetUIserData برای  ایجاد یک Data Set  از فایل XML استفاده می گردد . در ادامه ، می توان با استفاده از متد Find بمنظور بازیابی سطر مرتبط با UserID استفاده نمود . روتین GetUserInfo ( جدول زیر)  ، اطلاعات کاربر را از Data Set  بازیابی و با استفاده از آن ، کنترل های سرویس دهنده موجود بر روی یک فرم وب را مقداردهی می نماید .

VB.NET

Sub GetUserInfo ( ByVal UserID  As String )
      Dim  dsUsers As Data.DataSet = GetUserData ( )
      Dim   rowUser  As Data.DataRow = dsUsers.Tables("user").Rows.Find(UserID)
      If  rowUser   Is Nothing Then  Exit Sub
      txtFirstName.Text  = rowUser.Item("FirstName")
      txtLastName.Text   = rowUser.Item("LastName")
      txtStreet.Text  = rowUser.Item("Street")
      txtCity.Text = rowUser.Item("City")
      drpstate.Selected.Item.Text = rowUser.Item("State")
      txtZip.Text  = rowUser.Item("Zip")
End Sub

استفاده از CSS در برنامه های وب

ایجاد خروجی مناسب و با فرمت مطلوب ، از جمله اهداف مهم در تمامی برنامه های کامپیوتری است. برنامه های وب نیز از ایـن قاعده مستثنی نبوده و طراحان و پیاده کنندگان این نوع از برنامه ها ، با بهره گیری از امکانات و تکنولوژی های متفاوت سعی در ارائه خروجی مناسب و با فرمت قابل قبول برای مخاطبان خود می نمایند. خروجی یک برنامه وب ، در سطح سرویس گیرندگان ارائه می گردد ، بدیهی است بمنظور فرمت مناسب خروجی برنامه های وب ، می بایست بر تکنولوژی هائی  متمرکز گردید که امکان بکارگیری آنان در سطح سرویس گیرنده و از طریق مرورگر کاربران ، میسر می باشد . مسئولیت میزبان نمودن بخش رابط کاربر برنامه های وب برعهده مرورگر بوده و لازم است تمامی تلاش های انجام شده در این خصوص با تاکید بر اهمیت و جایگاه مرورگر ها ، سازماندهی و مدیریت گردد . ASP.NET ( پلات فرم دات نت برای ایجاد برنامه های وب ) ، از دو روش  عمده در ارتباط با  ایجاد فرمت مناسب خروجی ( Formatting) برای برنامه های وب ، استفاده می نماید :
  •  استفاده از CSS . از تکنولوژی CSS)Cascading style sheet) ،  بمنظور کنترل شکل ظاهری عناصر موجود بر روی یک فرم وب استفاده می گردد . از امکانات CSS ، می توان در جهت تنظیم رنگ ، اندازه ، فونت  و رفتار عناصر HTML موجود بر  روی یک صفحه وب استفاده نمود .

  •  استفاده از XSLT . از تکنولوژی XSLT)Extensible Stylesheet Language Transformation ) ، بمنظور تبدیل اطلاعات یک فایل XML به خروجی HTML و  استقرار اطلاعات فوق بر روی یک فرم وب ، استفاده می گردد . XSLT ، داده مورد نیاز را از فایل XML دریافت و پس از تبدیل آنان به عناصر HTML ،  سبک های ( Styles )  مشخص شده را در رابطه با هر یک از عناصر بکار می گیرد .

در این مقاله قصد داریم به بررسی نحوه استفاده از CSS ، بمنظور تعریف فرمت خروجی برنامه های وب پرداخته و در مقاله ای جداگانه با نحوه استفاده از XSLT ، آشنا شویم .
CSS ، مسئولیت جمع آوری و سازماندهی تمامی اطلاعات مرتبط با فرمت بکارگرفته شده در ارتباط با عناصر HTML موجود بر روی یک فرم وب را برعهده دارد . با توجه به  ذخیره سازی  اطلاعات فوق در یک مکان ، مدیریت و اعمال سیاست های جدید در رابطه با شکل ظاهری یک برنامه وب ، بسادگی انجام خواهد شد . ویژوال استودیو دات نت ، ابزارهای لازم بمنظور ایجاد و  ویرایش Style  را ارائه نموده است. در زمان ایجاد یک برنامه وب با استفاده از ویژوال استودیو دات نت ، یک Style sheet پیش فرض نیز ایجاد می گردد .( بعنوان بخشی از یک پروژه جدید برنامه وب ، ) . لازم است به این نکته اشاره گردد که  فقط برای پروژه های ویژوال بیسک دات نت ، بصورت اتوماتیک یک Style sheet پیش فرض ، ایجاد می گردد. برای پروژه های ویژوال سی شارپ ، می بایست  یک style sheet ، ایجاد نمود.
بمنظور اعمال فرمت دلخواه در رابطه با خروجی یک برنامه وب ، می توان در سه سطح متفاوت این کار راا انجام داد :

  • Global . سبک های تعریف شده  دریک فایل جداگانه ذخیره و تمامی صفحات می توانند از آن استفاده نمایند . 
  • Page . سبک های موردنظر در بخش Head یک صفحه تعریف  و تمامی عناصر موجود بر روی صفحه قادر به استفاده از آنان خواهند بود.
  • Inline . سبک های مورد نظربعنوان خصلت یک عنصر HTML تعریف  و صرفا" همان عنصر قادربه استفاده از آنان خواهد بود .

 اولویت هر یک از سطوح فوق ، مشابه تعریف یک متغیر و محدوده ( Scoping ) استفاده از آن می باشد. سبک های تعریف شده Inline دارای اولویت بیشتر نسبت به Page بوده و سبک های Page دارای اولویت بیشتری نسبت به Global می باشند . مثلا" در صورتیکه با استفاده از هر یک  از روش های فوق ، سبک خاصی بمنظورنحوه نمایش یک پاراگراف ، تعریف شده باشد ، سبک تعریف شده inline دارای اولویت بیشتری خواهد بود.با توجه به اولویت مجموعه قوانین  تعریف شده  مربوط به سبک نمایش ، از  Style Sheet ها ، بعنوان Cascading  نیز یاد می گردد . کد زیر ، نحوه استفاده از سه روش فوق را بمنظور تعریف Style  ، نشان می دهد .

Style types definition

<HTML>
       <HEAD>
                    <title> WebForm1 </title>
                     <!--  (1) Style Sheet reference . --->
                     <LINK REL="StyleSheet" Type="text/css" HREF="Test.css">
                     <!-- (2)  Page-Level style definition -->
                      <Style>
                          p {
                                font -family : 'Times New Romans' , Thoma , font-size:medium ;
                               }
                      </Style>
         </HEAD>
                       <Body>
                            <P> The Alignment is from the style sheet . </p>
                            <P> The font is from the style in the page's head element . </P>
                             <!-- (3) Inline style definition -->
                              <
P style="FONT-SIZE : large ; FONT - STYLE : italic " > the italic is from the inline style . </P>
                      </Body>     
  </HTML>

Test.css file

<!-- (1) From Styles.css sheet referenced in HEAD element . -->
   P
     {
        font-size : small ;
        text - align : center ;
     }
 

در مثال فوق ، نحوه نسبت دهی خصلت Style  به یک  عنصر و در سه سطح متفاوت نشان داده شده است . برای خصلت font-size ، در سه سطح  متفاوت ، style تعریف شده است .در مواردیکه خصلت فوق ، بصورت Inline بهمراه یک عنصر HTML ، استفاده شده است ، تمامی تعاریف موجود ( در سطح Page و یا بصورت Reference ) نادیده گرفته می شود و اولویت  با سبک تعریف شده بصورت Inline ، خواهد بود . تعریف انجام شده در رابطه با اندازه فونت در فایل Test.css ، عملا" در صفحه فوق ، استفاده نخواهد شد ، چراکه در صفحه وب نیز برای خصلت فوق و در سطح Page  ، سبک لازم تعریف و دارای اولویت بیشتری  نسبت به سبک تعریف شده در فایل Test.css ، می باشد . خصلت های text-align , font-family و font-style صرفا" یک مرتبه تعریف شده اند، بنابراین  هر یک از آنان دارای تاثیر خاص خود می باشند .

تعریف و ذخیره سازی Style در یک فایل Style sheet ( فایلی با انشعاب css ) دارای مزایای عمده ای نسبت به تعریف و استفاده از آنان بصورت محلی در هر یک از فرم های وب و یا استفاده از آنان بصورت Inline بهمراه عناصر HTML ، است :

  • پشتیبانی و  نگهداری مجموعه قوانین تعریف شده ، صرفا" از طریق یک محل انجام خواهد شد . بنابراین ، تغییرات مورد نیاز صرفا"  از یک نقطه اعمال و تمامی برنامه متاثر از آن می گردد.

  • امکان استفاده از چندین style جداگانه که هریک مجموعه قوانین خاصی را تعریف می نمایند ، فراهم می گردد . در چنین مواردی ، می توان با توجه به شرایط و اهداف برنامه از یکی از سبک های تعریف شده بصورت پویا ، استفاده نمود .مثلا" می توان با استفاده از سبک های تعریف شده ، فرمت خروجی مورد نظر را در ارتباط با یک دستگاه خاص ( نمایشگر، چاپگر) ، ایجاد نمود. بعنوان نمونه ، یک برنامه می تواند سه نوع سبک شامل : استاندارد ، Enlarged type و Printer friendly را تعریف نماید که یکی از آنان با توجه به خواسته کاربر ، انتخاب و بکار گرفته شود.

 استفاده از Style Sheet در فرم های وب
در زمان ایجاد یک برنامه وب با استفاده از ویژوال استودیو دات نت ، یک Style sheet جدید با نام Style.css بصورت اتوماتیک نیز ایجاد می گردد. ویژوال استودیو ، در اغلب موارد بصورت اتوماتیک  از Style ایجاد شده  در هر یک از صفحات وب و یا فرم های وب ، استفاده نمی نماید ( فراخوانی فایل فوق، بصورت اتوماتیک انجام نمی شود) . بمنظور استفاده از Style sheet ایجاد شده ، می بایست از یک عنصر لینک در بخش  head مربوط به page استفاده گردد :

Using Global style

<HEAD>
<title>WebForm1</title>
      ...
<LINK REL="StyleSheet" TYPE = "text/css" HREF="Styles.css">
</HEAD>

تغییر Style
بمنظور تغییر Style  تعریف شده و یا ایجاد Style  جدید ، می توان از ابزار Style Builder در ویژوال استودیو دات نت ، استفاده نمود . در این رابطه مراحل زیر را دنبال می نمائیم :

  • فعال نمودن Style Sheet در ویژوال استودیو دات نت . پس از فعال نمودن Style sheet ، ویژوال استودیو دات نت ، تعاریف مرتبط با Style را در پنجره Document نمایش و یک Outline از Style sheet را در پنجره Tool ، نمایش خواهد داد :

  • Style مورد نظر بمنظور اعمال تغییرات را از طریق پنجره Tool ،  انتخاب  می نمائیم . در ادامه ، ویژوال استودیو تعاریف مرتبط با Style را در پنجره Document نشان می دهد 

  • بر روی Style definition ، کلیک راست  نموده (یا کلیک راست  بر روی Style  از طریق پنجره Tool )  و از طریق منوی مربوطه گزینه Build Style را انتخاب می نمائیم .ویژوال استودیو دات نت ، ویزارد Style Builder را فعال می نماید .
     

 


 

  • با استفاده از Style Builder می توان فرمت دلخواه  را در ارتباط با یک Style  تعریف نمود .

افزودن Style
برای افزودن سبک مورد نظر به یک Style خاص ، می توان از نام عنصر استفاده نمود . در این رابطه ،امکان استفاده از اسامی کلاس ها و یا ID مربوط به عناصر نیز وجود دارد .

  • فعال  نمودن Style Sheet ، کلیک راست بر روی پنجره Style sheet و یا Tool و انتخاب Add Rule  از طریق منوی pop up . ویژوال استودیو دات نت در ادامه ویزارد Add Style Rule را فعال می نماید :

  •  انتخاب نوع Style موردنظر که قصد ایجاد آن وجود دارد . در این رابطه می توان اقدام به ایجاد Style در رابطه با عناصر HTML ، کلاس ها و یا  عناصری با ID خاص ، نمود. نام آیتم مورد نظر را تایپ نموده و در ادامه با انتخاب گزینه "<" ( افزودن )،  آیتم انتخابی به مجموعه قوانین ، اضافه گردد .

  • مراحل فوق ، برای هر یک از آیتم هائی که می خواهیم style در رابطه با آنان بکارگرفته شود ، تکرار می گردد.

استفاده از Style بهمراه  کلاس ها
با استفاده از کلاس های Style ، می توان فرمت یکسانی را در رابطه با عناصر متفاوت HTML موجود بر روی یک فرم وب ، بکارگرفت. زمانیکه یک Style  در ارتباط با یک کلاس ایجاد می گردد، ویژوال استودیو دات نت ، با استفاده از مشخصه classname . ، یک تعریف Style را به Style sheet اضافه می نماید.

style class

.emphasis
   {
      font-style :italic ;
    }

 Style Class فوق، مسئولیت ایجاد فرمت مناسب ( ایتالیک ) را برای تمامی عناصری که از این کلاس استفاده می نمایند، برعهده دارد. برای استفاده از Style فوق بهمراه عناصر HTML از خصلت class استفاده میگردد. بمنظور استفاده از style بهمراه کنترل های سرویس دهنده ، از خصلت CssClass استفاده می گردد .

Style class

<P> This paragraph is test <Span Class="emphasis"> some text</span></p>
<asp:TextBox ID="Text1"  Runat="Server" CssClass="emphasis" >some text  </asp:TextBox>

ایجاد Style برای عناصر خاص
با استفاده از ID مربوط به عناصر،می توان Style  مورد نظر در ارتباط با عناصر خاص موجود بر روی یک فرم وب را تعریف نمود. ID مربوط به عناصر ، می بایست برای هر یک از عناصر موجود بر روی صفحه ، منحصربفرد می باشد. فرمت مشخص شده ، صرفا" در رابطه با یک عنصر بر روی هر صفحه بکارگرفته می شود . زمانیکه یک Style rule برای یک عنصر با ID مشخص شده ،ایجاد می گردد ، ویژوال استودیو دات نت ، یک تعریف Style را با استفاده از شناسه elementID #  ایجاد و آن را  به Style sheet ،اضافه می نماید.

Style by element ID

#Inserted
  {
     text-decoration : underline ;
  }
#deleted
  {
      text-decoration : line-through ;
  }

Style های تعریف شده در ویژوال استودیو ، اغلب بصورت صحیح در بخش form designer نشان داده نمی شوند . در صورتیکه خروجی مورد نظر در ارتباط با یک فرمت خاص مشاهده نمی گردد، می توان عملیات زیر  را  دنبال نمود:

  • اطمیان از ذخیره سازی صحیح Style sheet تعریف شده
  • فرم وب را در حالت HTML view و Design view مشاهده و بین آنان سوئیچ نمائید .
  • برروی فرم وب کلیک سمت راست نموده و گزینه View In Browser را بمنظور نمایش فرم وب در مرورگر ، انتخاب نمائید.

ایجاد Style تودرتو
در صورتیکه به تعاریف Style در Style sheet پیش فرض ، ( فایل Styles.css ) نگاهی داشته باشیم ، متوجه خواهیم شد که برخی تعاریف style ، چندین نام عنصر را شامل می شوند . تعاریف فوق  ، فرمت عناصر تودرتو را  مشخص می نماید. Style زیر ، نوع های متفاوتی از Bullet را تعریف می نماید( nested) .

Nested Style

UL  LI {
       list-style-type : square ;
      }
UL LI LI {
        list-style-type : disc ;
       }
UL LI LI {
       list-style-type : circle ;
      }  

بمنظور ایجاد Style های تودرتو ، می توان با استفاده از جعبه محاوره ای Add Style Rule ، چندین  آیتم را به ساختار سلسله مراتبی Style rule اضافه نمود.

تغییر Style Sheet در زمان اجراء
همانگونه که قبلا" اشاره گردید ، می توان چندین Style sheet را تعریف تا  امکان  استفاده از آنان  بصورت پویا و با توجه به شرایط موجود در برنامه در اخیتار کاربر قرارداده شود. ( مشاهده فرم وب ، نسخه چاپی فرم وب  ، ارائه نسخه بزرگتر فرم وب  و ... ) . بمنظور سوئیچ نمودن اتوماتیک بین Style Sheet ها ، می توان از خصلت media استفاده نمود. خصلت فوق ، Style sheet  مورد نظر را در ارتباط با  چاپ  و یا  نمایش بر روی نمایشگر ، مشخص می نماید. کد زیر ، نحوه  استفاده از دو style را بمنظور مشاهده فرم وب بر روی نمایشگر و یا چاپ آن،  نشان می دهد :

Two style sheets for one web form

<LINK REL="stylesheet" TYPE="text/css" HREF="styles.css" media="screen" >
<LINK REL="stylesheet" TYPE="text/css" HREF="print.css"    media="print" >

بمنظور سوئیچ نمودن بین Style sheet در زمان اجراء ، یک اسکریپت سمت سرویس گیرنده را نوشته تا تغییر لازم  در عنصر href  مربوط به لینک style sheet را ایجاد نماید . کد زیر ، یک فرم وب را ایجاد نموده  که بین style sheet های Style1.css و Style2.css ، سوئیچ می نماید ( زمانیکه کاربر بر روی لینک موجود کلیک می نماید ) .

Changing style sheets at run time

<HTML>
<HEAD id=myhead>
<title> ChangeSheets </title>
<LINK ID="ScreenStyle" REL="stylesheet" TYPE="text/css" HREF="Style
1.css">
<Script language="vbscript">
    Sub SwitchSheets( )
         if document.all("screenstyle").GetAttribute("HREF") = "Style1.css" then
                  document.all("ScreenStyle").SetAttribute "HREF" , "Style
2.css" , 0
         else
                  document.all("ScreenStyle").SetAttribute "HREF" , "Style
1.css" , 0
   End Sub
</Script>
</HEAD>
     <body>
           <form id="form1" method="post" runat="server">
                 <h2> Sample Styles </h2>
                  <p> Sample Paragraph </p>
                  <p><a onclick="switchsheets" href="#"> Click here
                  </a> to switch between sheets. </p>
            </form>
   </body>
</HTML>

فریمورک دات نت

فریمورک دات نت ماکروسافت ، تحولات عمده ای را دررابطه با ایجاد و اجرای برنامه های مبتنی بر وب ایجاد نموده است . ASP.NET  یکی از تکنولوژی های متعددی است که بهمراه فریمورک دات نت ، ارائه شده است . در این مقاله با مفاهیم اولیه فریمورک دات نت ، آشنا می شویم .

فریمورک دات نت
دات نت ، یک مدل پیاده سازی نرم افزار است که توسط ماکروسافت ارائه و مهمترین دستاورد آن ، پیاده سازی نرم افزارهای  مستقل از پلات فرم و نوع دستگاه  ، با قابلیت دستیابی  به داده ها از طریق اینترنت ، می باشد . فریمورک دات نت ، زیر ساخت دات نت را ایجاد می نماید.

دات نت پلات فرم چیست ؟
دات نت بر اساس یک معماری "باز" ، شکل یافته و پلات فرمی است که می تواند برای ایجاد و اجرای نسل جدیدی از برنامه های وب و ویندوز استفاده گردد . هدف از پلات فرم دات نت ، تسهیل در پیاده سازی نرم افزارهای وب بوده و از تکنولوژی های اساسی زیر تشکیل شده است :

  • فریمورک دات نت

  • سرویس دهندگان  دات نت

  • سرویس های لازم بمنظور ایجاد بلاک

  • ویژوال استودیو دات نت

در پلات فرم دات نت ، سرویس گیرندگان ، سرویس دهندگان و سرویس ها  ، دارای جایگاهی  مهم  بوده و می توان به موارد زیر در رابطه با آن اشاره داشت :

  • یک مدل برنامه نویسی است  که امکان پیاده سازی سرویس های وب XML و برنامه ها را در اختیار پیاده کنندگان نرم افزار قرار می دهد .

  • مجموعه ای از سرویس های ایجاد بلاک که متکی بر مجموعه ای از سرویس های وب بوده و باعث انتقال کنترل داده کاربر از برنامه ها برای کاربران می شوند.مثلا" Passport ماکروسافت ، یک عنصر اساسی از دات نت بوده  که امکان یکپارچگی برنامه ها را بسادگی فراهم می نماید .

  • مجموعه ای از سرویس دهندگان نظیر ویندوز 2000 ، SQL Server ، سرویس دهنده Biztalk  که باعث ارتباط ، اجراء ،  انجام عملیات و مدیریت سرویس های وب XML و برنامه ها می گردد .

  • نرم افزار سرویس گیرنده ، نظیر ویندوز XP ، که به پِیاده کنندگان کمک می نماید تجارب مفید و جامع خود را به مجموعه ای از دستگاهها، تعمیم نمایند. 

  • ابزارهائی نظیر ویژوال استودیو دات نت ، که می توان از آنان بمنظور پیاده سازی سرویس های وب ، برنامه های ویندوز و وب استفاده کرد .

فریمورک دات نت چیست ؟
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد و اجرای برنامه ها و سرویس های وب XML را ارائه می نماید. ماهیت یکسان ( یکدست )   فریمورک دات نت ، امکان ارتباط  تمامی برنامه ها( برنامه های ویندوز ، وب ، سرویس های وب XML )   را از طریق  یک مجموعه از  ابزارها  و کدهای نوشته  ، فراهم می نماید.  فریمورک دات نت شامل موارد زیر است :

  • CLR)Common Language Runtime) یا همان Runtime .
    Runtime ، مسئولیت رسیدگی به سرویس ها را برعهده داشته و شامل یکپارچگی زبانها ، امنیت و مدیریت حافظه است . در زمان پیاده سازی ، Runtime ویژگی های لازم و مورد نیازرا با هدف تسهیل در پیاده سازی، ارائه می نماید .

  • کتابخانه های کلاس (Class - Libraries )
    کنابخانه های کلاس ، امکان استفاده مجدد از کدها برای اکثر عملیات متداول نظیر دستیابی به داده ها ، پیاده سازی سرویس های وب XML ، فرم های وب و یا ویندوز را فراهم می نماید .

دات نت باعث حل چه مشکلاتی شده است  ؟
فریمورک دات نت ، باعث برطرف شدن مسائل و محدودیت های متعدد  در رابطه با پیاده سازی برنامه های وب از منظر پیاده کنددگان نرم افزار شده است .در این راستا ، به پتانسیل های اینترنت بمنظور برخورد با مسائل و محدودیت های موجود ، بخوبی توجه شده است .با ابداع یک شبکه بزرگ ( اینترنت ) بمنظور اشتراک اطلاعات ، صرفا" برنامه های بسیار اندکی قادر به اجراء و فعالیت بر روی بیش از یک سرویس گیرنده بوده و تعامل اطلاعاتی بین برنامه ها نیز وضعیتی مشابه داشت .محدودیت های فوق ، باعث بروز دو مسئله  مهم در رابطه با پیاده سازی نرم افزار می گردد که می بایست بدرستی با آنان برخورد گردد:

  • پیاده کنندگان ، مجبور به پیاده سازی نرم افزارهای خود در یک میدان محدود می باشند .
  • پیاده کنندگان ، زمان زیادی  را بمظور نوشتن برنامه ها بمنظور کار با پلات فرم و سرویس گیرنده گان متفاوت ،  صرف می نمایند ( این زمان می بایست صرف آفرینش برنامه های جدید گردد).

فریمورک دات نت ، با ارائه یک Runtim که مستقل از نوع  زبان و پلات فرم است ، بر محدودیت های فوق غلبه نموده است.Runtime  فوق،  مستقل از زبان و پلات فرم بوده  واز استانداردهای  XML ، بمنظور نیل به اهداف مورد نظر خود استفاده می نماید. با توجه به عدم وابستگی دات نت به یک زبان خاص ، پیاده کنندگان نرم افزار می توانند از گزینه های متعددی در این زمینه  استفاده  نمایند. امکان اجرای  برنامه های تولید شده ، بر روی سرویس گیرندگانی که دات نت را حمایت می نمایند ، وجود خواهد داشت .Runtime ،اغلب زیرساخت های برنامه ها را کنترل می نماید ،  بنابراین پیاده کنندگان ، ضرورتی به صرف زمان لازم بمنظور ایجاد زیرساخت های مورد نیار خود نداشته و در مقابل می توانند زمان خود را صرف  تمرکز  بر روی منطق برنامه ها ، نمایند .
سرویس های وب XML ، از XML بمنظور ارسال داده استفاده می نمایند . بدین ترتیب ، سرویس گیرندگانی که دارای پتانسیل لازم  در این خصوص می باشند ، قادر به  دریافت داده های مبتنی بر XML ، خواهند بود.  XML ، استانداردی فراگیر و مورد پذیرش تمامی محیط های پیاده سازی  است. اغلب سرویس گیرندگان مدرن، نظیر سیستم های عامل کامپیوتر ، تلفن های سلولی ، دستگاههای PDA ، کنسول های بازی ، قادر به دریافت داده های مبتنی بر  XML ، می باشند .

اجزای فریمورک دات نت
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد برنامه های مبتنی بر دات نت  را در زمان ترجمه و اجراء ، فراهم و دارای عناصر متفاوتی بمنظور اجرای برنامه های مبتنی بر دات نت است :

  • زیربناء پلات فرم . فریمورک دات نت،  می بایست بر روی یک سیستم عامل اجراء گردد . در حال حاضر، امکان اجرای  فریمورک دات نت بر روی سیستم های عامل 32 بیتی ویندوز نظیر 2000 , XP  ، وجود دارد. در آینده ، امکان اجرای فریمورک دات نت بر روی سایر پلات فرم ها نیز میسر خواهد شد .

  • سرویس های کاربردی و خدماتی . زمانیکه برنامه های کاربردی  نظیر Component Server,Message Queuing   ,IIS  ، بر روی ویندوز 2000 ، اجراء می گردند امکان استفاده از آنان برای پیاده کنندگان وجود خواهد داشت . فریمورک دات نت ، برنامه های فوق را از طریق کلاس های موجود در کتابخانه کلاس دات نت ، تحت تاثیر موثر خود قرار خواهد داد .

  • Net Class library . کتابخانه کلاس فریمورک دات نت ، زمینه استفاده از امکانات و ویژگی های Runtime  را فراهم و باعث تسهیل در پیاده سازی برنامه های مبتنی بر دات نت می گردد . در این راستا ، پیاده کنندگان  می توانند با ایجاد توابعی از کلاس های موردنظر خود ، کلاس ها را توسعه نمایند .کتابخانه های کلاس فریمورک دات نت ، فریمورک دات نت را پیاده سازی می نماید . تمامی برنامه ها  ( برنامه های  وب ، ویندوز و سرویس های وب XML ) از کتابخانه کلاس های فریمورک دات نت یکسان استفاده نموده  که در namespace نگهداری می گردند. تمامی زبانهای مبتنی بر دات نت نیز به کتابخانه یکسانی دستیابی دارند .

  • CLR)Common Language Runtime ) . تکنولوژی  CLR ، باعث تسهیل در پیاده سازی برنامه ها از طریق ارائه یک محیط اجرائی ایمن  ، حمایت از چندین زبان و تسهیل در بکارگیری برنامه ها می گردد . محیط CLR ، همچنین بعنوان یک محیط مدیریت یافته ، عملیات و سرویس های خاصی  نظیر Garbage Collection و امنیت را  بصورت اتوماتیک، انجام خواهد داد .

  • ADO.NET . تکنولوژی ADO.NET ، نسل جدیدی از تکنولوژی ADO بوده و  امکانات حمایتی لازم در رابطه با مدل برنامه نویسی غیرمتصل را ارائه  می نماید. تکنولوژی فوق ، امکانات حمایتی متعددی را نیز در رابطه  با XML ، ارائه می نماید .

  • ASP.NET . تکنولوژی ASP.NET ، یک چارچوب  برنامه نویسی است که بر اساس CLR ، ایجاد می گردد . ASP.NET می تواند بر روی یک سرویس دهنده استفاده  و بکمک آن می توان برنامه های  مبتنی بر وب قدرتمندی را ایجاد کرد . فرم های وب ASP.NET ، یک روش ساده و درعین حال قدرتمند بمنظور ایجاد رابط های کاربر پویا می باشد .

  • سرویس های وب XML . سرویس های وب XML ، عناصر مبتنی بر وبی بوده  که قادر به اشتراک برنامه ها در اینترنت و یا اینترانت می باشند . فریمورک دات نت،  ابزارها و کلاس های لازم برای ایجاد ، تست و توزیع سرویس های وب XML را ارائه می نماید.

  • User Interfacses . فریمورک دات نت سه نوع UI را حمایت می نماید:
    فرم های وب که بهمراه ASP.NET و HTTP کار می نمایند .
    فرم های ویندوز که بر روی کامپیوتر های سرویس گیرنده Win32 اجراء می شوند .
    کنسول دستور ( خط دستور )

  • زبان ها ، هر زبانی که استانداردهای  CLS)Common Language Specification )  را رعایت نماید ، قادر به اجراء توسط   CLR خواهد بود. در فریمورک دات نت ، ماکروسافت حمایت های لازم در رابطه با زبانهائی نظیر VB.NET , Visual C++ ,VB.NET , C#,Jscript.NET را ارائه نموده است .

مزایای استفاده از فریمورک دات نت
در آغاز پیاده سازی برنامه های مبتنی بر ویندوز ، تمامی برنامه های نوشته شده بمنظور استفاده از  API ، از C و یا ++C استفاده می کردند . با مطرح شدن  ویژوال بیسیک و سپس اینترنت ، پیاده کنندگان مجبور به  سفارشی نمودن ( پیاده سازی نسخه هائی خاص )  برنامه های  C++  ،  C،  .برنامه های ویژوال بیسیک و یا ASP  بودند .با استفاده از فریمورک دات نت ، می توان با اتکاء به مهارت های موجود ، اقدام به آفرینش هر نوع نرم افزاری کرد . انتخاب  فریمورک دات نت بمنظور پیاده سازی برنامه ها ، مزایای زیر را بدنبال خواهد داشت :

  • مبتنی بر استانداردهای وب . فریمورک دات نت،  بطور کامل تکنولوژی های موجود در اینترنت نظیر : HTML , HTTP,SOAP,XSLT,XPath و سایر استانداردها را حمایت می نماید.

  •  طراحی مبتنی بر یک مدل یکسان . از پتانسیل های  یک کلاس دات نت ، می توان در هر یک از زبانهای حمایت شده در دات نت و یا مدل برنامه نویسی ، بخوبی استفاده کرد . بنابراین می توان ، بخش هائی از کدهای نوشته شده  را  در برنامه های متعدد استفاده کرد (برنامه های ویندوز، وب ، سرویس های وب XML ) .

  • پیاده کنندگان بسادگی قادر به استفاده از آن می باشند. در فریمورک دات نت ، کد ، بصورت Namespace  های  سلسله مراتبی و کلاس ها ، سازماندهی می گردد . فریمورک دات نت یک Common Type   System)CTS)  را بعنوان سیستم نوع یکسان ، ارائه نموده که  توسط هر زبان سازگاز با دات نت، قابل استفاده  خواهد بود .در سیستم فوق ، تمامی عناصر  زبانها بصورت شی می باشند. این اشیاء قادر به استفاده توسط هر برنامه مبتنی بر دات نت و نوشته شده توسط هر زبان مبتنی بر دا ت نت ، خواهند بود .

  • کلاس های توسعه پذیر . ماهیت سلسله مراتبی فریمورک دات نت،  برای پیاده کنندگان مخفی نخواهد بود .در این راستا می توان به کلا س ها دستیابی و آنها را توسعه داد( مگر اینکه آنها حفاظت شده  باشند ). در این زمینه امکان پیاده سازی توارث از نوع Cross - Language  ، نیز وجود خواهد داشت .

فریمورک دات نت

فریمورک دات نت ماکروسافت ، تحولات عمده ای را دررابطه با ایجاد و اجرای برنامه های مبتنی بر وب ایجاد نموده است . ASP.NET  یکی از تکنولوژی های متعددی است که بهمراه فریمورک دات نت ، ارائه شده است . در این مقاله با مفاهیم اولیه فریمورک دات نت ، آشنا می شویم .

فریمورک دات نت
دات نت ، یک مدل پیاده سازی نرم افزار است که توسط ماکروسافت ارائه و مهمترین دستاورد آن ، پیاده سازی نرم افزارهای  مستقل از پلات فرم و نوع دستگاه  ، با قابلیت دستیابی  به داده ها از طریق اینترنت ، می باشد . فریمورک دات نت ، زیر ساخت دات نت را ایجاد می نماید.

دات نت پلات فرم چیست ؟
دات نت بر اساس یک معماری "باز" ، شکل یافته و پلات فرمی است که می تواند برای ایجاد و اجرای نسل جدیدی از برنامه های وب و ویندوز استفاده گردد . هدف از پلات فرم دات نت ، تسهیل در پیاده سازی نرم افزارهای وب بوده و از تکنولوژی های اساسی زیر تشکیل شده است :

  • فریمورک دات نت

  • سرویس دهندگان  دات نت

  • سرویس های لازم بمنظور ایجاد بلاک

  • ویژوال استودیو دات نت

در پلات فرم دات نت ، سرویس گیرندگان ، سرویس دهندگان و سرویس ها  ، دارای جایگاهی  مهم  بوده و می توان به موارد زیر در رابطه با آن اشاره داشت :

  • یک مدل برنامه نویسی است  که امکان پیاده سازی سرویس های وب XML و برنامه ها را در اختیار پیاده کنندگان نرم افزار قرار می دهد .

  • مجموعه ای از سرویس های ایجاد بلاک که متکی بر مجموعه ای از سرویس های وب بوده و باعث انتقال کنترل داده کاربر از برنامه ها برای کاربران می شوند.مثلا" Passport ماکروسافت ، یک عنصر اساسی از دات نت بوده  که امکان یکپارچگی برنامه ها را بسادگی فراهم می نماید .

  • مجموعه ای از سرویس دهندگان نظیر ویندوز 2000 ، SQL Server ، سرویس دهنده Biztalk  که باعث ارتباط ، اجراء ،  انجام عملیات و مدیریت سرویس های وب XML و برنامه ها می گردد .

  • نرم افزار سرویس گیرنده ، نظیر ویندوز XP ، که به پِیاده کنندگان کمک می نماید تجارب مفید و جامع خود را به مجموعه ای از دستگاهها، تعمیم نمایند. 

  • ابزارهائی نظیر ویژوال استودیو دات نت ، که می توان از آنان بمنظور پیاده سازی سرویس های وب ، برنامه های ویندوز و وب استفاده کرد .

فریمورک دات نت چیست ؟
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد و اجرای برنامه ها و سرویس های وب XML را ارائه می نماید. ماهیت یکسان ( یکدست )   فریمورک دات نت ، امکان ارتباط  تمامی برنامه ها( برنامه های ویندوز ، وب ، سرویس های وب XML )   را از طریق  یک مجموعه از  ابزارها  و کدهای نوشته  ، فراهم می نماید.  فریمورک دات نت شامل موارد زیر است :

  • CLR)Common Language Runtime) یا همان Runtime .
    Runtime ، مسئولیت رسیدگی به سرویس ها را برعهده داشته و شامل یکپارچگی زبانها ، امنیت و مدیریت حافظه است . در زمان پیاده سازی ، Runtime ویژگی های لازم و مورد نیازرا با هدف تسهیل در پیاده سازی، ارائه می نماید .

  • کتابخانه های کلاس (Class - Libraries )
    کنابخانه های کلاس ، امکان استفاده مجدد از کدها برای اکثر عملیات متداول نظیر دستیابی به داده ها ، پیاده سازی سرویس های وب XML ، فرم های وب و یا ویندوز را فراهم می نماید .

دات نت باعث حل چه مشکلاتی شده است  ؟
فریمورک دات نت ، باعث برطرف شدن مسائل و محدودیت های متعدد  در رابطه با پیاده سازی برنامه های وب از منظر پیاده کنددگان نرم افزار شده است .در این راستا ، به پتانسیل های اینترنت بمنظور برخورد با مسائل و محدودیت های موجود ، بخوبی توجه شده است .با ابداع یک شبکه بزرگ ( اینترنت ) بمنظور اشتراک اطلاعات ، صرفا" برنامه های بسیار اندکی قادر به اجراء و فعالیت بر روی بیش از یک سرویس گیرنده بوده و تعامل اطلاعاتی بین برنامه ها نیز وضعیتی مشابه داشت .محدودیت های فوق ، باعث بروز دو مسئله  مهم در رابطه با پیاده سازی نرم افزار می گردد که می بایست بدرستی با آنان برخورد گردد:

  • پیاده کنندگان ، مجبور به پیاده سازی نرم افزارهای خود در یک میدان محدود می باشند .
  • پیاده کنندگان ، زمان زیادی  را بمظور نوشتن برنامه ها بمنظور کار با پلات فرم و سرویس گیرنده گان متفاوت ،  صرف می نمایند ( این زمان می بایست صرف آفرینش برنامه های جدید گردد).

فریمورک دات نت ، با ارائه یک Runtim که مستقل از نوع  زبان و پلات فرم است ، بر محدودیت های فوق غلبه نموده است.Runtime  فوق،  مستقل از زبان و پلات فرم بوده  واز استانداردهای  XML ، بمنظور نیل به اهداف مورد نظر خود استفاده می نماید. با توجه به عدم وابستگی دات نت به یک زبان خاص ، پیاده کنندگان نرم افزار می توانند از گزینه های متعددی در این زمینه  استفاده  نمایند. امکان اجرای  برنامه های تولید شده ، بر روی سرویس گیرندگانی که دات نت را حمایت می نمایند ، وجود خواهد داشت .Runtime ،اغلب زیرساخت های برنامه ها را کنترل می نماید ،  بنابراین پیاده کنندگان ، ضرورتی به صرف زمان لازم بمنظور ایجاد زیرساخت های مورد نیار خود نداشته و در مقابل می توانند زمان خود را صرف  تمرکز  بر روی منطق برنامه ها ، نمایند .
سرویس های وب XML ، از XML بمنظور ارسال داده استفاده می نمایند . بدین ترتیب ، سرویس گیرندگانی که دارای پتانسیل لازم  در این خصوص می باشند ، قادر به  دریافت داده های مبتنی بر XML ، خواهند بود.  XML ، استانداردی فراگیر و مورد پذیرش تمامی محیط های پیاده سازی  است. اغلب سرویس گیرندگان مدرن، نظیر سیستم های عامل کامپیوتر ، تلفن های سلولی ، دستگاههای PDA ، کنسول های بازی ، قادر به دریافت داده های مبتنی بر  XML ، می باشند .

اجزای فریمورک دات نت
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد برنامه های مبتنی بر دات نت  را در زمان ترجمه و اجراء ، فراهم و دارای عناصر متفاوتی بمنظور اجرای برنامه های مبتنی بر دات نت است :

  • زیربناء پلات فرم . فریمورک دات نت،  می بایست بر روی یک سیستم عامل اجراء گردد . در حال حاضر، امکان اجرای  فریمورک دات نت بر روی سیستم های عامل 32 بیتی ویندوز نظیر 2000 , XP  ، وجود دارد. در آینده ، امکان اجرای فریمورک دات نت بر روی سایر پلات فرم ها نیز میسر خواهد شد .

  • سرویس های کاربردی و خدماتی . زمانیکه برنامه های کاربردی  نظیر Component Server,Message Queuing   ,IIS  ، بر روی ویندوز 2000 ، اجراء می گردند امکان استفاده از آنان برای پیاده کنندگان وجود خواهد داشت . فریمورک دات نت ، برنامه های فوق را از طریق کلاس های موجود در کتابخانه کلاس دات نت ، تحت تاثیر موثر خود قرار خواهد داد .

  • Net Class library . کتابخانه کلاس فریمورک دات نت ، زمینه استفاده از امکانات و ویژگی های Runtime  را فراهم و باعث تسهیل در پیاده سازی برنامه های مبتنی بر دات نت می گردد . در این راستا ، پیاده کنندگان  می توانند با ایجاد توابعی از کلاس های موردنظر خود ، کلاس ها را توسعه نمایند .کتابخانه های کلاس فریمورک دات نت ، فریمورک دات نت را پیاده سازی می نماید . تمامی برنامه ها  ( برنامه های  وب ، ویندوز و سرویس های وب XML ) از کتابخانه کلاس های فریمورک دات نت یکسان استفاده نموده  که در namespace نگهداری می گردند. تمامی زبانهای مبتنی بر دات نت نیز به کتابخانه یکسانی دستیابی دارند .

  • CLR)Common Language Runtime ) . تکنولوژی  CLR ، باعث تسهیل در پیاده سازی برنامه ها از طریق ارائه یک محیط اجرائی ایمن  ، حمایت از چندین زبان و تسهیل در بکارگیری برنامه ها می گردد . محیط CLR ، همچنین بعنوان یک محیط مدیریت یافته ، عملیات و سرویس های خاصی  نظیر Garbage Collection و امنیت را  بصورت اتوماتیک، انجام خواهد داد .

  • ADO.NET . تکنولوژی ADO.NET ، نسل جدیدی از تکنولوژی ADO بوده و  امکانات حمایتی لازم در رابطه با مدل برنامه نویسی غیرمتصل را ارائه  می نماید. تکنولوژی فوق ، امکانات حمایتی متعددی را نیز در رابطه  با XML ، ارائه می نماید .

  • ASP.NET . تکنولوژی ASP.NET ، یک چارچوب  برنامه نویسی است که بر اساس CLR ، ایجاد می گردد . ASP.NET می تواند بر روی یک سرویس دهنده استفاده  و بکمک آن می توان برنامه های  مبتنی بر وب قدرتمندی را ایجاد کرد . فرم های وب ASP.NET ، یک روش ساده و درعین حال قدرتمند بمنظور ایجاد رابط های کاربر پویا می باشد .

  • سرویس های وب XML . سرویس های وب XML ، عناصر مبتنی بر وبی بوده  که قادر به اشتراک برنامه ها در اینترنت و یا اینترانت می باشند . فریمورک دات نت،  ابزارها و کلاس های لازم برای ایجاد ، تست و توزیع سرویس های وب XML را ارائه می نماید.

  • User Interfacses . فریمورک دات نت سه نوع UI را حمایت می نماید:
    فرم های وب که بهمراه ASP.NET و HTTP کار می نمایند .
    فرم های ویندوز که بر روی کامپیوتر های سرویس گیرنده Win32 اجراء می شوند .
    کنسول دستور ( خط دستور )

  • زبان ها ، هر زبانی که استانداردهای  CLS)Common Language Specification )  را رعایت نماید ، قادر به اجراء توسط   CLR خواهد بود. در فریمورک دات نت ، ماکروسافت حمایت های لازم در رابطه با زبانهائی نظیر VB.NET , Visual C++ ,VB.NET , C#,Jscript.NET را ارائه نموده است .

مزایای استفاده از فریمورک دات نت
در آغاز پیاده سازی برنامه های مبتنی بر ویندوز ، تمامی برنامه های نوشته شده بمنظور استفاده از  API ، از C و یا ++C استفاده می کردند . با مطرح شدن  ویژوال بیسیک و سپس اینترنت ، پیاده کنندگان مجبور به  سفارشی نمودن ( پیاده سازی نسخه هائی خاص )  برنامه های  C++  ،  C،  .برنامه های ویژوال بیسیک و یا ASP  بودند .با استفاده از فریمورک دات نت ، می توان با اتکاء به مهارت های موجود ، اقدام به آفرینش هر نوع نرم افزاری کرد . انتخاب  فریمورک دات نت بمنظور پیاده سازی برنامه ها ، مزایای زیر را بدنبال خواهد داشت :

  • مبتنی بر استانداردهای وب . فریمورک دات نت،  بطور کامل تکنولوژی های موجود در اینترنت نظیر : HTML , HTTP,SOAP,XSLT,XPath و سایر استانداردها را حمایت می نماید.

  •  طراحی مبتنی بر یک مدل یکسان . از پتانسیل های  یک کلاس دات نت ، می توان در هر یک از زبانهای حمایت شده در دات نت و یا مدل برنامه نویسی ، بخوبی استفاده کرد . بنابراین می توان ، بخش هائی از کدهای نوشته شده  را  در برنامه های متعدد استفاده کرد (برنامه های ویندوز، وب ، سرویس های وب XML ) .

  • پیاده کنندگان بسادگی قادر به استفاده از آن می باشند. در فریمورک دات نت ، کد ، بصورت Namespace  های  سلسله مراتبی و کلاس ها ، سازماندهی می گردد . فریمورک دات نت یک Common Type   System)CTS)  را بعنوان سیستم نوع یکسان ، ارائه نموده که  توسط هر زبان سازگاز با دات نت، قابل استفاده  خواهد بود .در سیستم فوق ، تمامی عناصر  زبانها بصورت شی می باشند. این اشیاء قادر به استفاده توسط هر برنامه مبتنی بر دات نت و نوشته شده توسط هر زبان مبتنی بر دا ت نت ، خواهند بود .

  • کلاس های توسعه پذیر . ماهیت سلسله مراتبی فریمورک دات نت،  برای پیاده کنندگان مخفی نخواهد بود .در این راستا می توان به کلا س ها دستیابی و آنها را توسعه داد( مگر اینکه آنها حفاظت شده  باشند ). در این زمینه امکان پیاده سازی توارث از نوع Cross - Language  ، نیز وجود خواهد داشت .

فریمورک دات نت

فریمورک دات نت ماکروسافت ، تحولات عمده ای را دررابطه با ایجاد و اجرای برنامه های مبتنی بر وب ایجاد نموده است . ASP.NET  یکی از تکنولوژی های متعددی است که بهمراه فریمورک دات نت ، ارائه شده است . در این مقاله با مفاهیم اولیه فریمورک دات نت ، آشنا می شویم .

فریمورک دات نت
دات نت ، یک مدل پیاده سازی نرم افزار است که توسط ماکروسافت ارائه و مهمترین دستاورد آن ، پیاده سازی نرم افزارهای  مستقل از پلات فرم و نوع دستگاه  ، با قابلیت دستیابی  به داده ها از طریق اینترنت ، می باشد . فریمورک دات نت ، زیر ساخت دات نت را ایجاد می نماید.

دات نت پلات فرم چیست ؟
دات نت بر اساس یک معماری "باز" ، شکل یافته و پلات فرمی است که می تواند برای ایجاد و اجرای نسل جدیدی از برنامه های وب و ویندوز استفاده گردد . هدف از پلات فرم دات نت ، تسهیل در پیاده سازی نرم افزارهای وب بوده و از تکنولوژی های اساسی زیر تشکیل شده است :

  • فریمورک دات نت

  • سرویس دهندگان  دات نت

  • سرویس های لازم بمنظور ایجاد بلاک

  • ویژوال استودیو دات نت

در پلات فرم دات نت ، سرویس گیرندگان ، سرویس دهندگان و سرویس ها  ، دارای جایگاهی  مهم  بوده و می توان به موارد زیر در رابطه با آن اشاره داشت :

  • یک مدل برنامه نویسی است  که امکان پیاده سازی سرویس های وب XML و برنامه ها را در اختیار پیاده کنندگان نرم افزار قرار می دهد .

  • مجموعه ای از سرویس های ایجاد بلاک که متکی بر مجموعه ای از سرویس های وب بوده و باعث انتقال کنترل داده کاربر از برنامه ها برای کاربران می شوند.مثلا" Passport ماکروسافت ، یک عنصر اساسی از دات نت بوده  که امکان یکپارچگی برنامه ها را بسادگی فراهم می نماید .

  • مجموعه ای از سرویس دهندگان نظیر ویندوز 2000 ، SQL Server ، سرویس دهنده Biztalk  که باعث ارتباط ، اجراء ،  انجام عملیات و مدیریت سرویس های وب XML و برنامه ها می گردد .

  • نرم افزار سرویس گیرنده ، نظیر ویندوز XP ، که به پِیاده کنندگان کمک می نماید تجارب مفید و جامع خود را به مجموعه ای از دستگاهها، تعمیم نمایند. 

  • ابزارهائی نظیر ویژوال استودیو دات نت ، که می توان از آنان بمنظور پیاده سازی سرویس های وب ، برنامه های ویندوز و وب استفاده کرد .

فریمورک دات نت چیست ؟
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد و اجرای برنامه ها و سرویس های وب XML را ارائه می نماید. ماهیت یکسان ( یکدست )   فریمورک دات نت ، امکان ارتباط  تمامی برنامه ها( برنامه های ویندوز ، وب ، سرویس های وب XML )   را از طریق  یک مجموعه از  ابزارها  و کدهای نوشته  ، فراهم می نماید.  فریمورک دات نت شامل موارد زیر است :

  • CLR)Common Language Runtime) یا همان Runtime .
    Runtime ، مسئولیت رسیدگی به سرویس ها را برعهده داشته و شامل یکپارچگی زبانها ، امنیت و مدیریت حافظه است . در زمان پیاده سازی ، Runtime ویژگی های لازم و مورد نیازرا با هدف تسهیل در پیاده سازی، ارائه می نماید .

  • کتابخانه های کلاس (Class - Libraries )
    کنابخانه های کلاس ، امکان استفاده مجدد از کدها برای اکثر عملیات متداول نظیر دستیابی به داده ها ، پیاده سازی سرویس های وب XML ، فرم های وب و یا ویندوز را فراهم می نماید .

دات نت باعث حل چه مشکلاتی شده است  ؟
فریمورک دات نت ، باعث برطرف شدن مسائل و محدودیت های متعدد  در رابطه با پیاده سازی برنامه های وب از منظر پیاده کنددگان نرم افزار شده است .در این راستا ، به پتانسیل های اینترنت بمنظور برخورد با مسائل و محدودیت های موجود ، بخوبی توجه شده است .با ابداع یک شبکه بزرگ ( اینترنت ) بمنظور اشتراک اطلاعات ، صرفا" برنامه های بسیار اندکی قادر به اجراء و فعالیت بر روی بیش از یک سرویس گیرنده بوده و تعامل اطلاعاتی بین برنامه ها نیز وضعیتی مشابه داشت .محدودیت های فوق ، باعث بروز دو مسئله  مهم در رابطه با پیاده سازی نرم افزار می گردد که می بایست بدرستی با آنان برخورد گردد:

  • پیاده کنندگان ، مجبور به پیاده سازی نرم افزارهای خود در یک میدان محدود می باشند .
  • پیاده کنندگان ، زمان زیادی  را بمظور نوشتن برنامه ها بمنظور کار با پلات فرم و سرویس گیرنده گان متفاوت ،  صرف می نمایند ( این زمان می بایست صرف آفرینش برنامه های جدید گردد).

فریمورک دات نت ، با ارائه یک Runtim که مستقل از نوع  زبان و پلات فرم است ، بر محدودیت های فوق غلبه نموده است.Runtime  فوق،  مستقل از زبان و پلات فرم بوده  واز استانداردهای  XML ، بمنظور نیل به اهداف مورد نظر خود استفاده می نماید. با توجه به عدم وابستگی دات نت به یک زبان خاص ، پیاده کنندگان نرم افزار می توانند از گزینه های متعددی در این زمینه  استفاده  نمایند. امکان اجرای  برنامه های تولید شده ، بر روی سرویس گیرندگانی که دات نت را حمایت می نمایند ، وجود خواهد داشت .Runtime ،اغلب زیرساخت های برنامه ها را کنترل می نماید ،  بنابراین پیاده کنندگان ، ضرورتی به صرف زمان لازم بمنظور ایجاد زیرساخت های مورد نیار خود نداشته و در مقابل می توانند زمان خود را صرف  تمرکز  بر روی منطق برنامه ها ، نمایند .
سرویس های وب XML ، از XML بمنظور ارسال داده استفاده می نمایند . بدین ترتیب ، سرویس گیرندگانی که دارای پتانسیل لازم  در این خصوص می باشند ، قادر به  دریافت داده های مبتنی بر XML ، خواهند بود.  XML ، استانداردی فراگیر و مورد پذیرش تمامی محیط های پیاده سازی  است. اغلب سرویس گیرندگان مدرن، نظیر سیستم های عامل کامپیوتر ، تلفن های سلولی ، دستگاههای PDA ، کنسول های بازی ، قادر به دریافت داده های مبتنی بر  XML ، می باشند .

اجزای فریمورک دات نت
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد برنامه های مبتنی بر دات نت  را در زمان ترجمه و اجراء ، فراهم و دارای عناصر متفاوتی بمنظور اجرای برنامه های مبتنی بر دات نت است :

  • زیربناء پلات فرم . فریمورک دات نت،  می بایست بر روی یک سیستم عامل اجراء گردد . در حال حاضر، امکان اجرای  فریمورک دات نت بر روی سیستم های عامل 32 بیتی ویندوز نظیر 2000 , XP  ، وجود دارد. در آینده ، امکان اجرای فریمورک دات نت بر روی سایر پلات فرم ها نیز میسر خواهد شد .

  • سرویس های کاربردی و خدماتی . زمانیکه برنامه های کاربردی  نظیر Component Server,Message Queuing   ,IIS  ، بر روی ویندوز 2000 ، اجراء می گردند امکان استفاده از آنان برای پیاده کنندگان وجود خواهد داشت . فریمورک دات نت ، برنامه های فوق را از طریق کلاس های موجود در کتابخانه کلاس دات نت ، تحت تاثیر موثر خود قرار خواهد داد .

  • Net Class library . کتابخانه کلاس فریمورک دات نت ، زمینه استفاده از امکانات و ویژگی های Runtime  را فراهم و باعث تسهیل در پیاده سازی برنامه های مبتنی بر دات نت می گردد . در این راستا ، پیاده کنندگان  می توانند با ایجاد توابعی از کلاس های موردنظر خود ، کلاس ها را توسعه نمایند .کتابخانه های کلاس فریمورک دات نت ، فریمورک دات نت را پیاده سازی می نماید . تمامی برنامه ها  ( برنامه های  وب ، ویندوز و سرویس های وب XML ) از کتابخانه کلاس های فریمورک دات نت یکسان استفاده نموده  که در namespace نگهداری می گردند. تمامی زبانهای مبتنی بر دات نت نیز به کتابخانه یکسانی دستیابی دارند .

  • CLR)Common Language Runtime ) . تکنولوژی  CLR ، باعث تسهیل در پیاده سازی برنامه ها از طریق ارائه یک محیط اجرائی ایمن  ، حمایت از چندین زبان و تسهیل در بکارگیری برنامه ها می گردد . محیط CLR ، همچنین بعنوان یک محیط مدیریت یافته ، عملیات و سرویس های خاصی  نظیر Garbage Collection و امنیت را  بصورت اتوماتیک، انجام خواهد داد .

  • ADO.NET . تکنولوژی ADO.NET ، نسل جدیدی از تکنولوژی ADO بوده و  امکانات حمایتی لازم در رابطه با مدل برنامه نویسی غیرمتصل را ارائه  می نماید. تکنولوژی فوق ، امکانات حمایتی متعددی را نیز در رابطه  با XML ، ارائه می نماید .

  • ASP.NET . تکنولوژی ASP.NET ، یک چارچوب  برنامه نویسی است که بر اساس CLR ، ایجاد می گردد . ASP.NET می تواند بر روی یک سرویس دهنده استفاده  و بکمک آن می توان برنامه های  مبتنی بر وب قدرتمندی را ایجاد کرد . فرم های وب ASP.NET ، یک روش ساده و درعین حال قدرتمند بمنظور ایجاد رابط های کاربر پویا می باشد .

  • سرویس های وب XML . سرویس های وب XML ، عناصر مبتنی بر وبی بوده  که قادر به اشتراک برنامه ها در اینترنت و یا اینترانت می باشند . فریمورک دات نت،  ابزارها و کلاس های لازم برای ایجاد ، تست و توزیع سرویس های وب XML را ارائه می نماید.

  • User Interfacses . فریمورک دات نت سه نوع UI را حمایت می نماید:
    فرم های وب که بهمراه ASP.NET و HTTP کار می نمایند .
    فرم های ویندوز که بر روی کامپیوتر های سرویس گیرنده Win32 اجراء می شوند .
    کنسول دستور ( خط دستور )

  • زبان ها ، هر زبانی که استانداردهای  CLS)Common Language Specification )  را رعایت نماید ، قادر به اجراء توسط   CLR خواهد بود. در فریمورک دات نت ، ماکروسافت حمایت های لازم در رابطه با زبانهائی نظیر VB.NET , Visual C++ ,VB.NET , C#,Jscript.NET را ارائه نموده است .

مزایای استفاده از فریمورک دات نت
در آغاز پیاده سازی برنامه های مبتنی بر ویندوز ، تمامی برنامه های نوشته شده بمنظور استفاده از  API ، از C و یا ++C استفاده می کردند . با مطرح شدن  ویژوال بیسیک و سپس اینترنت ، پیاده کنندگان مجبور به  سفارشی نمودن ( پیاده سازی نسخه هائی خاص )  برنامه های  C++  ،  C،  .برنامه های ویژوال بیسیک و یا ASP  بودند .با استفاده از فریمورک دات نت ، می توان با اتکاء به مهارت های موجود ، اقدام به آفرینش هر نوع نرم افزاری کرد . انتخاب  فریمورک دات نت بمنظور پیاده سازی برنامه ها ، مزایای زیر را بدنبال خواهد داشت :

  • مبتنی بر استانداردهای وب . فریمورک دات نت،  بطور کامل تکنولوژی های موجود در اینترنت نظیر : HTML , HTTP,SOAP,XSLT,XPath و سایر استانداردها را حمایت می نماید.

  •  طراحی مبتنی بر یک مدل یکسان . از پتانسیل های  یک کلاس دات نت ، می توان در هر یک از زبانهای حمایت شده در دات نت و یا مدل برنامه نویسی ، بخوبی استفاده کرد . بنابراین می توان ، بخش هائی از کدهای نوشته شده  را  در برنامه های متعدد استفاده کرد (برنامه های ویندوز، وب ، سرویس های وب XML ) .

  • پیاده کنندگان بسادگی قادر به استفاده از آن می باشند. در فریمورک دات نت ، کد ، بصورت Namespace  های  سلسله مراتبی و کلاس ها ، سازماندهی می گردد . فریمورک دات نت یک Common Type   System)CTS)  را بعنوان سیستم نوع یکسان ، ارائه نموده که  توسط هر زبان سازگاز با دات نت، قابل استفاده  خواهد بود .در سیستم فوق ، تمامی عناصر  زبانها بصورت شی می باشند. این اشیاء قادر به استفاده توسط هر برنامه مبتنی بر دات نت و نوشته شده توسط هر زبان مبتنی بر دا ت نت ، خواهند بود .

  • کلاس های توسعه پذیر . ماهیت سلسله مراتبی فریمورک دات نت،  برای پیاده کنندگان مخفی نخواهد بود .در این راستا می توان به کلا س ها دستیابی و آنها را توسعه داد( مگر اینکه آنها حفاظت شده  باشند ). در این زمینه امکان پیاده سازی توارث از نوع Cross - Language  ، نیز وجود خواهد داشت .

فریمورک دات نت

فریمورک دات نت ماکروسافت ، تحولات عمده ای را دررابطه با ایجاد و اجرای برنامه های مبتنی بر وب ایجاد نموده است . ASP.NET  یکی از تکنولوژی های متعددی است که بهمراه فریمورک دات نت ، ارائه شده است . در این مقاله با مفاهیم اولیه فریمورک دات نت ، آشنا می شویم .

فریمورک دات نت
دات نت ، یک مدل پیاده سازی نرم افزار است که توسط ماکروسافت ارائه و مهمترین دستاورد آن ، پیاده سازی نرم افزارهای  مستقل از پلات فرم و نوع دستگاه  ، با قابلیت دستیابی  به داده ها از طریق اینترنت ، می باشد . فریمورک دات نت ، زیر ساخت دات نت را ایجاد می نماید.

دات نت پلات فرم چیست ؟
دات نت بر اساس یک معماری "باز" ، شکل یافته و پلات فرمی است که می تواند برای ایجاد و اجرای نسل جدیدی از برنامه های وب و ویندوز استفاده گردد . هدف از پلات فرم دات نت ، تسهیل در پیاده سازی نرم افزارهای وب بوده و از تکنولوژی های اساسی زیر تشکیل شده است :

  • فریمورک دات نت

  • سرویس دهندگان  دات نت

  • سرویس های لازم بمنظور ایجاد بلاک

  • ویژوال استودیو دات نت

در پلات فرم دات نت ، سرویس گیرندگان ، سرویس دهندگان و سرویس ها  ، دارای جایگاهی  مهم  بوده و می توان به موارد زیر در رابطه با آن اشاره داشت :

  • یک مدل برنامه نویسی است  که امکان پیاده سازی سرویس های وب XML و برنامه ها را در اختیار پیاده کنندگان نرم افزار قرار می دهد .

  • مجموعه ای از سرویس های ایجاد بلاک که متکی بر مجموعه ای از سرویس های وب بوده و باعث انتقال کنترل داده کاربر از برنامه ها برای کاربران می شوند.مثلا" Passport ماکروسافت ، یک عنصر اساسی از دات نت بوده  که امکان یکپارچگی برنامه ها را بسادگی فراهم می نماید .

  • مجموعه ای از سرویس دهندگان نظیر ویندوز 2000 ، SQL Server ، سرویس دهنده Biztalk  که باعث ارتباط ، اجراء ،  انجام عملیات و مدیریت سرویس های وب XML و برنامه ها می گردد .

  • نرم افزار سرویس گیرنده ، نظیر ویندوز XP ، که به پِیاده کنندگان کمک می نماید تجارب مفید و جامع خود را به مجموعه ای از دستگاهها، تعمیم نمایند. 

  • ابزارهائی نظیر ویژوال استودیو دات نت ، که می توان از آنان بمنظور پیاده سازی سرویس های وب ، برنامه های ویندوز و وب استفاده کرد .

فریمورک دات نت چیست ؟
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد و اجرای برنامه ها و سرویس های وب XML را ارائه می نماید. ماهیت یکسان ( یکدست )   فریمورک دات نت ، امکان ارتباط  تمامی برنامه ها( برنامه های ویندوز ، وب ، سرویس های وب XML )   را از طریق  یک مجموعه از  ابزارها  و کدهای نوشته  ، فراهم می نماید.  فریمورک دات نت شامل موارد زیر است :

  • CLR)Common Language Runtime) یا همان Runtime .
    Runtime ، مسئولیت رسیدگی به سرویس ها را برعهده داشته و شامل یکپارچگی زبانها ، امنیت و مدیریت حافظه است . در زمان پیاده سازی ، Runtime ویژگی های لازم و مورد نیازرا با هدف تسهیل در پیاده سازی، ارائه می نماید .

  • کتابخانه های کلاس (Class - Libraries )
    کنابخانه های کلاس ، امکان استفاده مجدد از کدها برای اکثر عملیات متداول نظیر دستیابی به داده ها ، پیاده سازی سرویس های وب XML ، فرم های وب و یا ویندوز را فراهم می نماید .

دات نت باعث حل چه مشکلاتی شده است  ؟
فریمورک دات نت ، باعث برطرف شدن مسائل و محدودیت های متعدد  در رابطه با پیاده سازی برنامه های وب از منظر پیاده کنددگان نرم افزار شده است .در این راستا ، به پتانسیل های اینترنت بمنظور برخورد با مسائل و محدودیت های موجود ، بخوبی توجه شده است .با ابداع یک شبکه بزرگ ( اینترنت ) بمنظور اشتراک اطلاعات ، صرفا" برنامه های بسیار اندکی قادر به اجراء و فعالیت بر روی بیش از یک سرویس گیرنده بوده و تعامل اطلاعاتی بین برنامه ها نیز وضعیتی مشابه داشت .محدودیت های فوق ، باعث بروز دو مسئله  مهم در رابطه با پیاده سازی نرم افزار می گردد که می بایست بدرستی با آنان برخورد گردد:

  • پیاده کنندگان ، مجبور به پیاده سازی نرم افزارهای خود در یک میدان محدود می باشند .
  • پیاده کنندگان ، زمان زیادی  را بمظور نوشتن برنامه ها بمنظور کار با پلات فرم و سرویس گیرنده گان متفاوت ،  صرف می نمایند ( این زمان می بایست صرف آفرینش برنامه های جدید گردد).

فریمورک دات نت ، با ارائه یک Runtim که مستقل از نوع  زبان و پلات فرم است ، بر محدودیت های فوق غلبه نموده است.Runtime  فوق،  مستقل از زبان و پلات فرم بوده  واز استانداردهای  XML ، بمنظور نیل به اهداف مورد نظر خود استفاده می نماید. با توجه به عدم وابستگی دات نت به یک زبان خاص ، پیاده کنندگان نرم افزار می توانند از گزینه های متعددی در این زمینه  استفاده  نمایند. امکان اجرای  برنامه های تولید شده ، بر روی سرویس گیرندگانی که دات نت را حمایت می نمایند ، وجود خواهد داشت .Runtime ،اغلب زیرساخت های برنامه ها را کنترل می نماید ،  بنابراین پیاده کنندگان ، ضرورتی به صرف زمان لازم بمنظور ایجاد زیرساخت های مورد نیار خود نداشته و در مقابل می توانند زمان خود را صرف  تمرکز  بر روی منطق برنامه ها ، نمایند .
سرویس های وب XML ، از XML بمنظور ارسال داده استفاده می نمایند . بدین ترتیب ، سرویس گیرندگانی که دارای پتانسیل لازم  در این خصوص می باشند ، قادر به  دریافت داده های مبتنی بر XML ، خواهند بود.  XML ، استانداردی فراگیر و مورد پذیرش تمامی محیط های پیاده سازی  است. اغلب سرویس گیرندگان مدرن، نظیر سیستم های عامل کامپیوتر ، تلفن های سلولی ، دستگاههای PDA ، کنسول های بازی ، قادر به دریافت داده های مبتنی بر  XML ، می باشند .

اجزای فریمورک دات نت
فریمورک دات نت ، فونداسیون لازم بمنظور ایجاد برنامه های مبتنی بر دات نت  را در زمان ترجمه و اجراء ، فراهم و دارای عناصر متفاوتی بمنظور اجرای برنامه های مبتنی بر دات نت است :

  • زیربناء پلات فرم . فریمورک دات نت،  می بایست بر روی یک سیستم عامل اجراء گردد . در حال حاضر، امکان اجرای  فریمورک دات نت بر روی سیستم های عامل 32 بیتی ویندوز نظیر 2000 , XP  ، وجود دارد. در آینده ، امکان اجرای فریمورک دات نت بر روی سایر پلات فرم ها نیز میسر خواهد شد .

  • سرویس های کاربردی و خدماتی . زمانیکه برنامه های کاربردی  نظیر Component Server,Message Queuing   ,IIS  ، بر روی ویندوز 2000 ، اجراء می گردند امکان استفاده از آنان برای پیاده کنندگان وجود خواهد داشت . فریمورک دات نت ، برنامه های فوق را از طریق کلاس های موجود در کتابخانه کلاس دات نت ، تحت تاثیر موثر خود قرار خواهد داد .

  • Net Class library . کتابخانه کلاس فریمورک دات نت ، زمینه استفاده از امکانات و ویژگی های Runtime  را فراهم و باعث تسهیل در پیاده سازی برنامه های مبتنی بر دات نت می گردد . در این راستا ، پیاده کنندگان  می توانند با ایجاد توابعی از کلاس های موردنظر خود ، کلاس ها را توسعه نمایند .کتابخانه های کلاس فریمورک دات نت ، فریمورک دات نت را پیاده سازی می نماید . تمامی برنامه ها  ( برنامه های  وب ، ویندوز و سرویس های وب XML ) از کتابخانه کلاس های فریمورک دات نت یکسان استفاده نموده  که در namespace نگهداری می گردند. تمامی زبانهای مبتنی بر دات نت نیز به کتابخانه یکسانی دستیابی دارند .

  • CLR)Common Language Runtime ) . تکنولوژی  CLR ، باعث تسهیل در پیاده سازی برنامه ها از طریق ارائه یک محیط اجرائی ایمن  ، حمایت از چندین زبان و تسهیل در بکارگیری برنامه ها می گردد . محیط CLR ، همچنین بعنوان یک محیط مدیریت یافته ، عملیات و سرویس های خاصی  نظیر Garbage Collection و امنیت را  بصورت اتوماتیک، انجام خواهد داد .

  • ADO.NET . تکنولوژی ADO.NET ، نسل جدیدی از تکنولوژی ADO بوده و  امکانات حمایتی لازم در رابطه با مدل برنامه نویسی غیرمتصل را ارائه  می نماید. تکنولوژی فوق ، امکانات حمایتی متعددی را نیز در رابطه  با XML ، ارائه می نماید .

  • ASP.NET . تکنولوژی ASP.NET ، یک چارچوب  برنامه نویسی است که بر اساس CLR ، ایجاد می گردد . ASP.NET می تواند بر روی یک سرویس دهنده استفاده  و بکمک آن می توان برنامه های  مبتنی بر وب قدرتمندی را ایجاد کرد . فرم های وب ASP.NET ، یک روش ساده و درعین حال قدرتمند بمنظور ایجاد رابط های کاربر پویا می باشد .

  • سرویس های وب XML . سرویس های وب XML ، عناصر مبتنی بر وبی بوده  که قادر به اشتراک برنامه ها در اینترنت و یا اینترانت می باشند . فریمورک دات نت،  ابزارها و کلاس های لازم برای ایجاد ، تست و توزیع سرویس های وب XML را ارائه می نماید.

  • User Interfacses . فریمورک دات نت سه نوع UI را حمایت می نماید:
    فرم های وب که بهمراه ASP.NET و HTTP کار می نمایند .
    فرم های ویندوز که بر روی کامپیوتر های سرویس گیرنده Win32 اجراء می شوند .
    کنسول دستور ( خط دستور )

  • زبان ها ، هر زبانی که استانداردهای  CLS)Common Language Specification )  را رعایت نماید ، قادر به اجراء توسط   CLR خواهد بود. در فریمورک دات نت ، ماکروسافت حمایت های لازم در رابطه با زبانهائی نظیر VB.NET , Visual C++ ,VB.NET , C#,Jscript.NET را ارائه نموده است .

مزایای استفاده از فریمورک دات نت
در آغاز پیاده سازی برنامه های مبتنی بر ویندوز ، تمامی برنامه های نوشته شده بمنظور استفاده از  API ، از C و یا ++C استفاده می کردند . با مطرح شدن  ویژوال بیسیک و سپس اینترنت ، پیاده کنندگان مجبور به  سفارشی نمودن ( پیاده سازی نسخه هائی خاص )  برنامه های  C++  ،  C،  .برنامه های ویژوال بیسیک و یا ASP  بودند .با استفاده از فریمورک دات نت ، می توان با اتکاء به مهارت های موجود ، اقدام به آفرینش هر نوع نرم افزاری کرد . انتخاب  فریمورک دات نت بمنظور پیاده سازی برنامه ها ، مزایای زیر را بدنبال خواهد داشت :

  • مبتنی بر استانداردهای وب . فریمورک دات نت،  بطور کامل تکنولوژی های موجود در اینترنت نظیر : HTML , HTTP,SOAP,XSLT,XPath و سایر استانداردها را حمایت می نماید.

  •  طراحی مبتنی بر یک مدل یکسان . از پتانسیل های  یک کلاس دات نت ، می توان در هر یک از زبانهای حمایت شده در دات نت و یا مدل برنامه نویسی ، بخوبی استفاده کرد . بنابراین می توان ، بخش هائی از کدهای نوشته شده  را  در برنامه های متعدد استفاده کرد (برنامه های ویندوز، وب ، سرویس های وب XML ) .

  • پیاده کنندگان بسادگی قادر به استفاده از آن می باشند. در فریمورک دات نت ، کد ، بصورت Namespace  های  سلسله مراتبی و کلاس ها ، سازماندهی می گردد . فریمورک دات نت یک Common Type   System)CTS)  را بعنوان سیستم نوع یکسان ، ارائه نموده که  توسط هر زبان سازگاز با دات نت، قابل استفاده  خواهد بود .در سیستم فوق ، تمامی عناصر  زبانها بصورت شی می باشند. این اشیاء قادر به استفاده توسط هر برنامه مبتنی بر دات نت و نوشته شده توسط هر زبان مبتنی بر دا ت نت ، خواهند بود .

  • کلاس های توسعه پذیر . ماهیت سلسله مراتبی فریمورک دات نت،  برای پیاده کنندگان مخفی نخواهد بود .در این راستا می توان به کلا س ها دستیابی و آنها را توسعه داد( مگر اینکه آنها حفاظت شده  باشند ). در این زمینه امکان پیاده سازی توارث از نوع Cross - Language  ، نیز وجود خواهد داشت .

استفاده از CSS در برنامه های وب

ایجاد خروجی مناسب و با فرمت مطلوب ، از جمله اهداف مهم در تمامی برنامه های کامپیوتری است. برنامه های وب نیز از ایـن قاعده مستثنی نبوده و طراحان و پیاده کنندگان این نوع از برنامه ها ، با بهره گیری از امکانات و تکنولوژی های متفاوت سعی در ارائه خروجی مناسب و با فرمت قابل قبول برای مخاطبان خود می نمایند. خروجی یک برنامه وب ، در سطح سرویس گیرندگان ارائه می گردد ، بدیهی است بمنظور فرمت مناسب خروجی برنامه های وب ، می بایست بر تکنولوژی هائی  متمرکز گردید که امکان بکارگیری آنان در سطح سرویس گیرنده و از طریق مرورگر کاربران ، میسر می باشد . مسئولیت میزبان نمودن بخش رابط کاربر برنامه های وب برعهده مرورگر بوده و لازم است تمامی تلاش های انجام شده در این خصوص با تاکید بر اهمیت و جایگاه مرورگر ها ، سازماندهی و مدیریت گردد . ASP.NET ( پلات فرم دات نت برای ایجاد برنامه های وب ) ، از دو روش  عمده در ارتباط با  ایجاد فرمت مناسب خروجی ( Formatting) برای برنامه های وب ، استفاده می نماید :
  •  استفاده از CSS . از تکنولوژی CSS)Cascading style sheet) ،  بمنظور کنترل شکل ظاهری عناصر موجود بر روی یک فرم وب استفاده می گردد . از امکانات CSS ، می توان در جهت تنظیم رنگ ، اندازه ، فونت  و رفتار عناصر HTML موجود بر  روی یک صفحه وب استفاده نمود .

  •  استفاده از XSLT . از تکنولوژی XSLT)Extensible Stylesheet Language Transformation ) ، بمنظور تبدیل اطلاعات یک فایل XML به خروجی HTML و  استقرار اطلاعات فوق بر روی یک فرم وب ، استفاده می گردد . XSLT ، داده مورد نیاز را از فایل XML دریافت و پس از تبدیل آنان به عناصر HTML ،  سبک های ( Styles )  مشخص شده را در رابطه با هر یک از عناصر بکار می گیرد .

در این مقاله قصد داریم به بررسی نحوه استفاده از CSS ، بمنظور تعریف فرمت خروجی برنامه های وب پرداخته و در مقاله ای جداگانه با نحوه استفاده از XSLT ، آشنا شویم .
CSS ، مسئولیت جمع آوری و سازماندهی تمامی اطلاعات مرتبط با فرمت بکارگرفته شده در ارتباط با عناصر HTML موجود بر روی یک فرم وب را برعهده دارد . با توجه به  ذخیره سازی  اطلاعات فوق در یک مکان ، مدیریت و اعمال سیاست های جدید در رابطه با شکل ظاهری یک برنامه وب ، بسادگی انجام خواهد شد . ویژوال استودیو دات نت ، ابزارهای لازم بمنظور ایجاد و  ویرایش Style  را ارائه نموده است. در زمان ایجاد یک برنامه وب با استفاده از ویژوال استودیو دات نت ، یک Style sheet پیش فرض نیز ایجاد می گردد .( بعنوان بخشی از یک پروژه جدید برنامه وب ، ) . لازم است به این نکته اشاره گردد که  فقط برای پروژه های ویژوال بیسک دات نت ، بصورت اتوماتیک یک Style sheet پیش فرض ، ایجاد می گردد. برای پروژه های ویژوال سی شارپ ، می بایست  یک style sheet ، ایجاد نمود.
بمنظور اعمال فرمت دلخواه در رابطه با خروجی یک برنامه وب ، می توان در سه سطح متفاوت این کار راا انجام داد :

  • Global . سبک های تعریف شده  دریک فایل جداگانه ذخیره و تمامی صفحات می توانند از آن استفاده نمایند . 
  • Page . سبک های موردنظر در بخش Head یک صفحه تعریف  و تمامی عناصر موجود بر روی صفحه قادر به استفاده از آنان خواهند بود.
  • Inline . سبک های مورد نظربعنوان خصلت یک عنصر HTML تعریف  و صرفا" همان عنصر قادربه استفاده از آنان خواهد بود .

 اولویت هر یک از سطوح فوق ، مشابه تعریف یک متغیر و محدوده ( Scoping ) استفاده از آن می باشد. سبک های تعریف شده Inline دارای اولویت بیشتر نسبت به Page بوده و سبک های Page دارای اولویت بیشتری نسبت به Global می باشند . مثلا" در صورتیکه با استفاده از هر یک  از روش های فوق ، سبک خاصی بمنظورنحوه نمایش یک پاراگراف ، تعریف شده باشد ، سبک تعریف شده inline دارای اولویت بیشتری خواهد بود.با توجه به اولویت مجموعه قوانین  تعریف شده  مربوط به سبک نمایش ، از  Style Sheet ها ، بعنوان Cascading  نیز یاد می گردد . کد زیر ، نحوه استفاده از سه روش فوق را بمنظور تعریف Style  ، نشان می دهد .

Style types definition

<HTML>
       <HEAD>
                    <title> WebForm1 </title>
                     <!--  (1) Style Sheet reference . --->
                     <LINK REL="StyleSheet" Type="text/css" HREF="Test.css">
                     <!-- (2)  Page-Level style definition -->
                      <Style>
                          p {
                                font -family : 'Times New Romans' , Thoma , font-size:medium ;
                               }
                      </Style>
         </HEAD>
                       <Body>
                            <P> The Alignment is from the style sheet . </p>
                            <P> The font is from the style in the page's head element . </P>
                             <!-- (3) Inline style definition -->
                              <
P style="FONT-SIZE : large ; FONT - STYLE : italic " > the italic is from the inline style . </P>
                      </Body>     
  </HTML>

Test.css file

<!-- (1) From Styles.css sheet referenced in HEAD element . -->
   P
     {
        font-size : small ;
        text - align : center ;
     }
 

در مثال فوق ، نحوه نسبت دهی خصلت Style  به یک  عنصر و در سه سطح متفاوت نشان داده شده است . برای خصلت font-size ، در سه سطح  متفاوت ، style تعریف شده است .در مواردیکه خصلت فوق ، بصورت Inline بهمراه یک عنصر HTML ، استفاده شده است ، تمامی تعاریف موجود ( در سطح Page و یا بصورت Reference ) نادیده گرفته می شود و اولویت  با سبک تعریف شده بصورت Inline ، خواهد بود . تعریف انجام شده در رابطه با اندازه فونت در فایل Test.css ، عملا" در صفحه فوق ، استفاده نخواهد شد ، چراکه در صفحه وب نیز برای خصلت فوق و در سطح Page  ، سبک لازم تعریف و دارای اولویت بیشتری  نسبت به سبک تعریف شده در فایل Test.css ، می باشد . خصلت های text-align , font-family و font-style صرفا" یک مرتبه تعریف شده اند، بنابراین  هر یک از آنان دارای تاثیر خاص خود می باشند .

تعریف و ذخیره سازی Style در یک فایل Style sheet ( فایلی با انشعاب css ) دارای مزایای عمده ای نسبت به تعریف و استفاده از آنان بصورت محلی در هر یک از فرم های وب و یا استفاده از آنان بصورت Inline بهمراه عناصر HTML ، است :

  • پشتیبانی و  نگهداری مجموعه قوانین تعریف شده ، صرفا" از طریق یک محل انجام خواهد شد . بنابراین ، تغییرات مورد نیاز صرفا"  از یک نقطه اعمال و تمامی برنامه متاثر از آن می گردد.

  • امکان استفاده از چندین style جداگانه که هریک مجموعه قوانین خاصی را تعریف می نمایند ، فراهم می گردد . در چنین مواردی ، می توان با توجه به شرایط و اهداف برنامه از یکی از سبک های تعریف شده بصورت پویا ، استفاده نمود .مثلا" می توان با استفاده از سبک های تعریف شده ، فرمت خروجی مورد نظر را در ارتباط با یک دستگاه خاص ( نمایشگر، چاپگر) ، ایجاد نمود. بعنوان نمونه ، یک برنامه می تواند سه نوع سبک شامل : استاندارد ، Enlarged type و Printer friendly را تعریف نماید که یکی از آنان با توجه به خواسته کاربر ، انتخاب و بکار گرفته شود.

 استفاده از Style Sheet در فرم های وب
در زمان ایجاد یک برنامه وب با استفاده از ویژوال استودیو دات نت ، یک Style sheet جدید با نام Style.css بصورت اتوماتیک نیز ایجاد می گردد. ویژوال استودیو ، در اغلب موارد بصورت اتوماتیک  از Style ایجاد شده  در هر یک از صفحات وب و یا فرم های وب ، استفاده نمی نماید ( فراخوانی فایل فوق، بصورت اتوماتیک انجام نمی شود) . بمنظور استفاده از Style sheet ایجاد شده ، می بایست از یک عنصر لینک در بخش  head مربوط به page استفاده گردد :

Using Global style

<HEAD>
<title>WebForm1</title>
      ...
<LINK REL="StyleSheet" TYPE = "text/css" HREF="Styles.css">
</HEAD>

تغییر Style
بمنظور تغییر Style  تعریف شده و یا ایجاد Style  جدید ، می توان از ابزار Style Builder در ویژوال استودیو دات نت ، استفاده نمود . در این رابطه مراحل زیر را دنبال می نمائیم :

  • فعال نمودن Style Sheet در ویژوال استودیو دات نت . پس از فعال نمودن Style sheet ، ویژوال استودیو دات نت ، تعاریف مرتبط با Style را در پنجره Document نمایش و یک Outline از Style sheet را در پنجره Tool ، نمایش خواهد داد :

  • Style مورد نظر بمنظور اعمال تغییرات را از طریق پنجره Tool ،  انتخاب  می نمائیم . در ادامه ، ویژوال استودیو تعاریف مرتبط با Style را در پنجره Document نشان می دهد 

  • بر روی Style definition ، کلیک راست  نموده (یا کلیک راست  بر روی Style  از طریق پنجره Tool )  و از طریق منوی مربوطه گزینه Build Style را انتخاب می نمائیم .ویژوال استودیو دات نت ، ویزارد Style Builder را فعال می نماید .
     

 


 

  • با استفاده از Style Builder می توان فرمت دلخواه  را در ارتباط با یک Style  تعریف نمود .

افزودن Style
برای افزودن سبک مورد نظر به یک Style خاص ، می توان از نام عنصر استفاده نمود . در این رابطه ،امکان استفاده از اسامی کلاس ها و یا ID مربوط به عناصر نیز وجود دارد .

  • فعال  نمودن Style Sheet ، کلیک راست بر روی پنجره Style sheet و یا Tool و انتخاب Add Rule  از طریق منوی pop up . ویژوال استودیو دات نت در ادامه ویزارد Add Style Rule را فعال می نماید :

  •  انتخاب نوع Style موردنظر که قصد ایجاد آن وجود دارد . در این رابطه می توان اقدام به ایجاد Style در رابطه با عناصر HTML ، کلاس ها و یا  عناصری با ID خاص ، نمود. نام آیتم مورد نظر را تایپ نموده و در ادامه با انتخاب گزینه "<" ( افزودن )،  آیتم انتخابی به مجموعه قوانین ، اضافه گردد .

  • مراحل فوق ، برای هر یک از آیتم هائی که می خواهیم style در رابطه با آنان بکارگرفته شود ، تکرار می گردد.

استفاده از Style بهمراه  کلاس ها
با استفاده از کلاس های Style ، می توان فرمت یکسانی را در رابطه با عناصر متفاوت HTML موجود بر روی یک فرم وب ، بکارگرفت. زمانیکه یک Style  در ارتباط با یک کلاس ایجاد می گردد، ویژوال استودیو دات نت ، با استفاده از مشخصه classname . ، یک تعریف Style را به Style sheet اضافه می نماید.

style class

.emphasis
   {
      font-style :italic ;
    }

 Style Class فوق، مسئولیت ایجاد فرمت مناسب ( ایتالیک ) را برای تمامی عناصری که از این کلاس استفاده می نمایند، برعهده دارد. برای استفاده از Style فوق بهمراه عناصر HTML از خصلت class استفاده میگردد. بمنظور استفاده از style بهمراه کنترل های سرویس دهنده ، از خصلت CssClass استفاده می گردد .

Style class

<P> This paragraph is test <Span Class="emphasis"> some text</span></p>
<asp:TextBox ID="Text1"  Runat="Server" CssClass="emphasis" >some text  </asp:TextBox>

ایجاد Style برای عناصر خاص
با استفاده از ID مربوط به عناصر،می توان Style  مورد نظر در ارتباط با عناصر خاص موجود بر روی یک فرم وب را تعریف نمود. ID مربوط به عناصر ، می بایست برای هر یک از عناصر موجود بر روی صفحه ، منحصربفرد می باشد. فرمت مشخص شده ، صرفا" در رابطه با یک عنصر بر روی هر صفحه بکارگرفته می شود . زمانیکه یک Style rule برای یک عنصر با ID مشخص شده ،ایجاد می گردد ، ویژوال استودیو دات نت ، یک تعریف Style را با استفاده از شناسه elementID #  ایجاد و آن را  به Style sheet ،اضافه می نماید.

Style by element ID

#Inserted
  {
     text-decoration : underline ;
  }
#deleted
  {
      text-decoration : line-through ;
  }

Style های تعریف شده در ویژوال استودیو ، اغلب بصورت صحیح در بخش form designer نشان داده نمی شوند . در صورتیکه خروجی مورد نظر در ارتباط با یک فرمت خاص مشاهده نمی گردد، می توان عملیات زیر  را  دنبال نمود:

  • اطمیان از ذخیره سازی صحیح Style sheet تعریف شده
  • فرم وب را در حالت HTML view و Design view مشاهده و بین آنان سوئیچ نمائید .
  • برروی فرم وب کلیک سمت راست نموده و گزینه View In Browser را بمنظور نمایش فرم وب در مرورگر ، انتخاب نمائید.

ایجاد Style تودرتو
در صورتیکه به تعاریف Style در Style sheet پیش فرض ، ( فایل Styles.css ) نگاهی داشته باشیم ، متوجه خواهیم شد که برخی تعاریف style ، چندین نام عنصر را شامل می شوند . تعاریف فوق  ، فرمت عناصر تودرتو را  مشخص می نماید. Style زیر ، نوع های متفاوتی از Bullet را تعریف می نماید( nested) .

Nested Style

UL  LI {
       list-style-type : square ;
      }
UL LI LI {
        list-style-type : disc ;
       }
UL LI LI {
       list-style-type : circle ;
      }  

بمنظور ایجاد Style های تودرتو ، می توان با استفاده از جعبه محاوره ای Add Style Rule ، چندین  آیتم را به ساختار سلسله مراتبی Style rule اضافه نمود.

تغییر Style Sheet در زمان اجراء
همانگونه که قبلا" اشاره گردید ، می توان چندین Style sheet را تعریف تا  امکان  استفاده از آنان  بصورت پویا و با توجه به شرایط موجود در برنامه در اخیتار کاربر قرارداده شود. ( مشاهده فرم وب ، نسخه چاپی فرم وب  ، ارائه نسخه بزرگتر فرم وب  و ... ) . بمنظور سوئیچ نمودن اتوماتیک بین Style Sheet ها ، می توان از خصلت media استفاده نمود. خصلت فوق ، Style sheet  مورد نظر را در ارتباط با  چاپ  و یا  نمایش بر روی نمایشگر ، مشخص می نماید. کد زیر ، نحوه  استفاده از دو style را بمنظور مشاهده فرم وب بر روی نمایشگر و یا چاپ آن،  نشان می دهد :

Two style sheets for one web form

<LINK REL="stylesheet" TYPE="text/css" HREF="styles.css" media="screen" >
<LINK REL="stylesheet" TYPE="text/css" HREF="print.css"    media="print" >

بمنظور سوئیچ نمودن بین Style sheet در زمان اجراء ، یک اسکریپت سمت سرویس گیرنده را نوشته تا تغییر لازم  در عنصر href  مربوط به لینک style sheet را ایجاد نماید . کد زیر ، یک فرم وب را ایجاد نموده  که بین style sheet های Style1.css و Style2.css ، سوئیچ می نماید ( زمانیکه کاربر بر روی لینک موجود کلیک می نماید ) .

Changing style sheets at run time

<HTML>
<HEAD id=myhead>
<title> ChangeSheets </title>
<LINK ID="ScreenStyle" REL="stylesheet" TYPE="text/css" HREF="Style
1.css">
<Script language="vbscript">
    Sub SwitchSheets( )
         if document.all("screenstyle").GetAttribute("HREF") = "Style1.css" then
                  document.all("ScreenStyle").SetAttribute "HREF" , "Style
2.css" , 0
         else
                  document.all("ScreenStyle").SetAttribute "HREF" , "Style
1.css" , 0
   End Sub
</Script>
</HEAD>
     <body>
           <form id="form1" method="post" runat="server">
                 <h2> Sample Styles </h2>
                  <p> Sample Paragraph </p>
                  <p><a onclick="switchsheets" href="#"> Click here
                  </a> to switch between sheets. </p>
            </form>
   </body>
</HTML>               Powered By yosafysite.tk

DOM چیست ؟

DOM)Document Object Model) یک رابط برنامه نویسی برای سندهای XML  و Html است . با استفاده از اینترفیس فوق، نحوه دستیابی و انجام پردازش های لازم در رابطه با سند های XML و Html فراهم می گردد . برنامه نویسان با استفاده از DOM ، قادر به ایجاد یک سند ،حرکت در طول ساختار سند، افزودن ، اصلاح و یا حذف المان های یک سند XML و یا Html می باشند . DOM توسط کنسرسیوم وب استاندارد و بمنظور استفاده از طریق زبان های برنامه نویسی متعددی طراحی شده است .
گره ها
برنامه ای با نام پارسر،  امکان  استقرار یک سند XML در حافظه را فراهم می نماید . پس از استقرار سند  در حافظه ، اطلاعات مربوطه بکمک  DOM ،  قابل بازیابی و پردازش خواهد بود . DOM  ، یک نمایش شبه درختی از یک سند XML را ایجاد می نماید . المان Document ،
دارای بالاترین  سطح در درخت ایجاد شده  است . المان فوق ،  دارای یک و یا چندین فرزند است . یک اینترفیس گره ، امکان  خواندن و یا نوشتن المان های خاصی در ساختار درختواره ای یک سند XML  را  میسر می نماید .با استفاده از خصلت ChildNodes مربوط به المان Document و بکارگیری یک حلقه تکرار می توان هر یک از گره ها  را انتخاب و در ادامه عملیات مورد نظر در رابطه با آن را انجام داد . پارسر شرکت ماکروسافت (MSXML،  دارای توابع متفاوت بمنظور حرکت در طول درخت،  دستیابی به گره ها بهمراه خصلت مربوطه،  درج و حذف گره ها و تبدیل ساختار درختی به شکل اولیه XML است . در حال حاضر،  سیزده نوع متفاوت گره توسط پارسرشرکت ماکروسافت،  حمایت می گردد . جدول زیر متداولترین نوع گره ها را نشان می دهد .

مثال

نوع گره

<!DOCTYPE food SYSTEM "food.dtd">

Document type

<?xml version="1.0"?>

Processing instruction

<drink type="tea">Irani</drink>

Element

type="tea"

Attribute

Irani

Text

استفاده از پارسر
بمنظور خواندن، ویرایش  و یا ایجاد و پردازش یک سند XML ، می بایست از یک پارسر استفاده کرد . پارسر شرکت ماکروسافت،  یک عنصر مبتنی بر COM بوده که بهمراه IE نسخه پنج ، ارائه شده است . پس از نصب مرورگر فوق،  امکان استفاده از پارسر فراهم می گردد . پارسر MSXML ،  دارای امکانات متعدد برنامه نویسی بمنظور استفاده توسط زبانهای زیر است :

  • حمایت از جاوااسکریپت  VBScript  Perl جاوا و  ++ C

  • حمایت از استاندارد کنسرسیوم وب و XML DOM

  • حمایت از DTD و معتبر سازی

مثال : نحوه ایجاد شی Document ،  با استفاده  جاوااسکریپت ، VBscript و ASP در جدول زیر نشان داده شده است :

مثال

تکنولوژی

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

Javascript

set xmlDoc = CreateObject("Microsoft.XMLDOM")

VBscript

set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

ASP

استقرار یک سند XML در حافظه
کدهای  زیر نحوه استقرار یک سند XML با نام Test.xml در حافظه را نشان می دهد :

استقرار یک سند XML در حافظه

<script language="JavaScript">
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
      xmlDoc.async="false"
      xmlDoc.load("Test.xml")
      // ....... پردازش های لازم  
</script>

اولین خط در اسکریپت های فوق ، یک نمونه از پارسر XML شرکت ماکروسافت را ایجاد می نماید .  در دومین خط ،  به پارسر اعلام می گردد منتظر دریافت کامل سند XML بوده قبل از اینکه پردازش خود را آغاز نماید . در سومین خط ،  به پارسر اعلام شده است که یک سند XML با نام Test.xml را در حافظه مستقر نماید .

استقرار متن XML در پارسر
کدهای زیر، نحوه استقرار یک رشته متن را در پارسر XML نشان می دهد . در مثال فوق از متد LoadXML در مقابل متد load استفاده شده است . از متد loadXML بمنظور استقرار یک رشته متن در پارسر استفاده می گردد .

استقرار یک رشته متن XML در حافظه

<script language="JavaScript">
    var text="<note>"
    text=text+"<to>Ali</to><from>Reza</from>"
    text=text+"<heading>Reminder</heading>"
    text=text+"<body>Don't forget me this weekend!</body>"
    text=text+"</note>"
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.loadXML(text)
    // ....... پردازش های لازم
</script>

شی ParseError
خطای مربوط به فایل : با استفاده از شی ParseError ، می توان از کد ، متن خطاء و حتی شماره خطی که خطاء در آن اتفاق افتاده  است ، آگاهی یافت . در برنامه زیر پارسر، سعی در استقرار سندی XML در حافظه نموده که  وجود خارجی ندارد . پس از تشخیص خطاء ، برخی از خصلت های مربوط به خطاء در خروجی نمایش داده خواهد شد .

تشخیص خطاء و استفاده از شی ParseError در رابطه با وجود یک فایل

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("Test1.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)

خطای مربوط به  XML . فرض کنید یک سند XML که  "خوش شکل "  نمی باشد،  توسط پارسر خوانده شود . کدهای زیر نحوه تشخیص و برخورد با خطاء را نشان می دهد :

تشخیص خطاء و استفاده از شی ParseError   در رابطه با سند "خوش شکل "

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)

خصلت های ParseError

عملکرد

خصلت

کد خطای بوجود آمده ، برگردانده می شود .

errorCode

علت خطای بوجود آمده  ،برگردانده می شود . 

reason

شماره خط خطای بوجود آمده  ، برگردانده می شود 

line

محل بروز خطاء در خط مربوطه را برمی گرداند .

linePos

رشته ای که شامل خط مربوط به خطای بوجود آمده است،  برگردانده می شود

srcText

url مربوط به سند مستقر سده در حافظه ،  بر گردانده می شود .

url

محل بروز خطاء در فایل مربوطه،  برگردانده می شود .

filePos

حرکت در طول درخت
یکی از متداولترین روش های بازیابی المان های یک سند XML ، حرکت در طول درخت ( از گره ای به گره دیگر ) و استخراج مقدار متن ذخیره شده بهمراه هر یک از المان ها  است . کدهای نوشته شده زیر ، امکان حرکت در طول یک درخت XML را فراهم و در ادامه هر یک از المان های سند XML ، در خروجی نمایش داده می شوند ( کدها با استفاده از VBScript نوشته شده اند ) .

حرکت در طول درخت و نمایش المان های یک سند XML

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
 document.write(x.text)
next

ایجاد محتویات مبتنی بر Html برای یک سند XML
یکی از مهمترین قابلیت های XML ، تمایز و تفکیک سندهای Html از داده های مربوطه است . با استفاده از یک پارسر XML ، موجود در مرورگرها ، یک صفحه وب قادر به ایجاد محتویاتی پویا است . در این زمینه می توان از پتانسیل های جاوااسکریپت بمنظور تولید و ارائه  محتویات پویا نیز استفاده کرد . در همین راستا ، امکان استفاده از ASP برا ی ایجاد محتویات پویا با  تاکید بر نقش سرویس دهنده وب نیز وجود دارد . برنامه زیر ، داده های موجود در یک سند XML را خوانده و آنها را با فرمت Html در خروجی نمایش خواهد داد .

نمایش داده های موجود در یک سند XML با استفاده از جاوااسکریپت

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text

دستیابی به المان ها از طریق نام
رنامه زیر داده های موجود در یک سند XML را خوانده و آنها را با فرمت Html در خروجی نمایش خواهد داد .

دستیابی به المان ها د ر  یک سند XML  از طریق نام و بکمک  جاوااسکریپت

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write(xmlDoc.getElementsByTagName("from").item(0).text)



مقالات                 
دایره المعارف       
دوره های آموزشی


 

 



              

 

مقدمه ای بر برنامه نویسی شی گراء در دات نت

برنامه نویسی شی گراء، بدون شک مهمترین تحول در دنیای نرم افزار طی سالیان گذشته بوده که بیشترین تاثیر را در پیشبرد نرم افزار بدنبال داشته  و ما امروز در صنعت گسترده نرم افزار از دستاوردهای وسیع  آن بهره مند هستیم . در این مقاله قصد داریم ، به بررسی برنامه نویسی شی گراء پرداخته و از این زاویه نگاهی به دات نت  داشته باشیم .

بمنظور شناخت برنامه نویسی شی گراء ، کافی است به اطراف خود نگاهی داشته باشیم .جارو برقی ، قهوه جوش ، پنکه سقفی  و مجموعه بسیار گسترده ای  از سایر اشیاء را پیرامون زندگی خود مشاهده می نمائیم . اشیاء ما را محاصره و یا در محاصره اشیاء می باشیم . برخی از این اشیاء نظیر دوربین ، مستقل عمل نموه و برخی دیگر نظیر تلفن و ماشین های پاسخگو با سایر اشیاء ارتباط دارند . برخی از اشیاء دارای داده ها ئی می باشند که بین کاربران استفاده می گردد(یک دفترچه تلقن) . برخی از اشیاء شامل اشیاء دیگری می باشند، یک دستگاه بستنی ساز درون فریزر ، نمونه ای در این زمینه است .
بسیاری از اشیاء از لحاظ عملکرد با یکدیگر مشابه ولی از لحاظ اهداف با یکدیگر متفاوت می باشند . مثلا" وان حمام و سینک آشبزخانه هر دو امکان استفاده از آب را فراهم می نمایند ،ولی این کار بندرت اتفاق خواهد افتاد که شما در سینک آشبزخانه دوش گرفته و یا ظروف آشبزخانه خود را در وان حمام بشوئید! بهرحال وان حمام و سینک آشبزخانه موجود در منزل ، احتمالا" از یک لوله آب مشترک در ساختمان استفاده و اینترفیس آنها در موارد متعددی مشترک است ( پیچ آب گرم وسرد ، یک شیر آب ، یک فاضلاب ) .
در صورت تامل در ارتباط با اشیاء فوق ، با سوالات متعددی مواجه خواهیم شد . چه تفاوت هائی بین یک وان حمام و سینک آشبزحانه ، وجود دارد ؟ آیا اختلاف موجود به  محل آنها ، اندازه لگن و یا  گودی  آنها از سطح زمین برمی گردد. شباهت موجود بین اشیاء فوق چیست ؟
در برخی موارد انجام عملات یکسان در ارتباط با یک شی ، رفتارهای متفاوتی را بدنبال خواهد داشت . یک شی  قادر به انجام عملیات متفاوتی با توجه به ماهیت وضعیت بوجود آمده است . مثلا "  زمانیکه دکمه
Play  یک دستگاه کنترل کننده DVD و یا VCD فعال می گردد ، دستگاه قوق ، یک فیلم را پخش و ما شاهد نمایش آن بر روی صفحه تلویزیون خواهیم بود. اما اگر یک CD در دستگاه Player باشد ، همزمان با فشردن دکمه Play ، دستگاه Player باعث پخش CD صوتی شده و ما شاهد نواختن موسیقی از بلندگوهای مربوطه خواهیم بود.  همانگونه که مشاهده می گردد در چنین وضعیتی ، فعال نمودن دکمه ها ی مشابه ، عملیات یکسان ولی با  نتایج متفاوت را بدنبال داشته است .
به بسیاری از اشیاء پیرامون خود، می توان بعنوان جعبه های سیاه  (
black box ) ، نگاه نمود.در چنین حالتی نسبت به اصول اولیه عملکرد شی مورد نظر و پردازش های اولیه آن شناخت لازم وجود خواهد داشت ولی بسیاری از جزئیات عملیاتی که یک شی انجام می دهد برای ما ناشناخته خواهد بود. اکثرا" در زمان استفاده از یک شی علاقه مند به رویکرد فوق می باشند ( آشنائی با پتانسیل های شی و نحوه بالفعل نمودن آنان و پرهیز از درگیر شدن و آگاهی از جزئیات مربوطه ) . در چنین مواردی برای استفاده از اشیاء موجود در منزل ، ضرورتی به آگاهی از مکانیزم داخلی بعنوان شرط لازم وجود نخواهد داشت و می توان بدون درگیر شدن در جزئیات از شی موجود استفاده نمود.
بمنظور بررسی موضوع اشاره شده ، می توانیم  نگاهی به عملکرد یک لامپ  100 وات ، داشته باشیم . سیم پیچ درون لامپ چیزی بیشتر از یک مقاومت ساده نیست . زمانیکه برق فعال ( سوئیج  فعال گردد) شده باشد ، حرارت سیم پیچ درون لامپ در حدود 2500 درجه سلسیوس ، خواهد بود.وضعیت فوق ، باعث تشعش گرما ئی متناسب با طول رشته سیم درون لامپ ( قطر خیر ) و حدود 1750 لومن ( واحد پخش نور) می گردد .بدین ترتیب نور مرئی با طول موجی حدود 555 نانومنر را شاهد خواهیم بود. رشته موجود در لامپ از تنگستن تشکیل شده است . آیا به این حجم ازاطلاعات بهمراه جزئیات مربوطه  در زمان استفاده از لامپ ، نیاز خواهیم داشت و یا  صرفا"  می خواهیم زمانیکه سوئیچ فعال می گردد، لامپ روشن و با سایر مسائل و نحوه انجام این کار ، کاری نداریم ؟ در این راستا ، استفاده کنندگان از لامپ آن را بمنزله یک جعبه سیاه در نظر گرفته و صرفا" تمایل به آگاهی از نحوه استفاده از اینترفیس مربوطه برای بخدمت گرفتن پتانسیل موجود را دارند .
هر شی دارای دو خصلت ذاتی است : وضعیت ( 
state ) و رفتار ( Behavior ) . مثلا" یک لامپ  دارای اطلاعاتی نظیر :  روشن/خاموش بودن  ، نام تجاری ، طول عمر و موارد دیگر است که جملگی وضعیت شی فوق را مشخص می نمایند. رفتار لامپ ، شامل ارائه نور و روشنائی است .
یک شی مسلما" نسبت به خود ، بمنزله  یک جزیره است . بسیاری از اشیاء بصورت دسته جمعی و با  تشریک مساعی در یک سیستم  قرار خواهند گرفت . مثلا"  تلویزیون و بلندگوهای آن بخشی از سیستمی می باشند که موسوم به تئاتر خانوادگی است . یخچال و اجاق گاز بخشی از سیستمی با نام آشپزخانه می باشند. این نوع سیستم ها خود متعلق به یک سیستم بزرگتر و با نام آپارتمان و یا خانه می باشند . مجموعه ای از آپارتمانها سیستم دیگری را با نام مجتمع ایجاد می نمایند.
یک نرم افزار را می توان  مشتمل بر مجموعه ای از اشیاء در نظر گرفت که هر یک پتانسیل های لازم را ارائه و با بخدمت گرفتن آنان و بهره گیری از پتانسیل های موجود زمینه نیل به اهداف  مورد نظر فراهم خواهد شد.   بمنظور طراحی و پیاده سازی یک برنامه شی گراء در اولین  مرحله می بایست ، اقدام به طراحی و ایجاد اشیاء مورد نظر با توجه به اهداف نرم افزار نمود.مرحله فوق ، اولین گام و بدون شک مهمترین مرحله در فرآیند ایجاد یک سیستم است . در مرحله دوم که ارزش آن شاید بمراتب بالاتر از مرحله قبل باشد ، می بایست نحوه ارتباط اشیاء با یکدیگر بدرستی مشخص گردد. در زمان ایجاد یک سیستم بزرگ که دارای پیچیدگی های خاص خود است ، می بایست نسبت به دو مرحله فوق ، شناخت لازم وجود داشته و بدون آگاهی لازم ، امکان ایچاد اینچنین سیستم های بزرگی با رویکرد شی گراء ، چالش های خاص خود را بدنبال خواهند داشت .  در چنین مواردی می توان فرآیند پیاده سازی یک سیستم را شامل دو مرحله مهم طراحی شی گراء و برنامه نویسی شی گراء در نظر گرفت . برنامه نویسی مبتنی بر عنصر ، پایه و اساس این نوع سیستم ها محسوب می گردد .  برنامه نویسی اشیاء در نرم افزار ، نیازمند یک زبان برنامه نویسی شی گراء نمی باشد و اگر از یک زبان برنامه نویسی شی گراء استفاده می گردد ، بدین مفهوم نخواهد بود که کد نوشته شده ، شی گراء خواهد بود. زبان ها صرفا" می توانند کمکی در فرآیند فوق را ارائه و هیچگونه تضمینی در این رابطه را ارائه نخواهند داد. با استفاده از ویژوال بیسیک ، امکان نوشتن نرم افزار شی گراء وجود خواهد داشت . البته لازم است به این موضوع اشاره گردد که نوشتن برنامه شی گراء در ویژوال بیسیک همواره بسادگی انجام نخواهد شد ، چراکه  ویژوال بیسیک همواره دارای رویکردی شی گراء نمی باشد. پیاده سازی عناصر باینری با قابلیت استفاده مجدد در ویژوال بیسک در حال حاضر میسر و امکان پذیراست ولی استفاده از اینگونه عناصر  بین زبان های متفاوت چالش های خود را بدنبال خواهد داشت . با عرضه دات نت که مطابق آخرین دستاوردهای علمی ایجاد شده است ، ویژوال بیسیک دات نت بعنوان یکی از زبانهای حمایت شده ،  دارای امکانات قدرتمند وغنی بمنظور استفاده ازمزایای آخرین دستاوردهای پیاده سازی در برنامه نویسی شی گراء است .

ویژوال بیسیک دات نت و برنامه نویسی شی گراء
ویژوال بیسیک دات نت یک زبان برنامه نویسی شی گراء کامل است . این بدان معنی است که زبان فوق از چهار اصل برنامه نویسی شی گراء یعنی : انتزاع (abstraction ) ، کپسوله سازی کد و داده  ( encapsulation  ) ، وراثت  ( inheritance) ، چند ریختی ( polymorphism ) حمایت می نماید. در ادامه با اصول چهار گانه فوق بیشتر آشنا شده و مشاهده خواهیم کرد که هر یک از اصول فوق، چه دستاوردی را  برای پیاده کنندگان نرم افزار شی گراء بدنبال خواهند داشت .

انتزاع  ( abstraction )
رادیو دارای یک تیونر ، یک آنتن ، یک پیچ صدا و یک سوئیچ روشن و خاموش است . بمنظور استفاده از رادیو، ضرورتی به به آگاهی از نحوه دریافت سیگنال هائی رادیوئی توسط آنتن مربوطه ، تبدیل آنان به سیگنال های الکتریکی ، تقویت قدرت آنان بر اساس یک مدار تقویت کننده فرکانس بالا ، نخواهد بود. در این راستا لازم نیست از نحوه فیلتر نمودن نتایج ، تقویت و تبدیل آنان به صوت ، آگاهی داشت .ما صرفا" رادیو را روشن و پس از تنظیم ایستگاه مورد علاقه خود ، از آن استفاده می نمائیم . بدین ترتیب استفاده کنندگان می توانند بدون آگاهی از جزئیات داخلی از رادیو استفاده نمایند. ویژگی فوق ،  بسیار مهم بوده و امکان استفاده از رادیو برای هر شخص فراهم می گردد ( نه فقط افرادیکه دارای اطلاعات فنی در رابطه با نحوه عملکرد آن می باشند). بنابراین می توان این استنباط را داشت که رادیو یک شی است که بگونه ای طراحی شده است که پیچیدگی ها ی مربوط نمایان نباشد ( مخفی شدن پیچیدگی ) .
در نرم افزار شی گراء ، پیچیدگی با استفاده از انتراع ، مدیریت می گردد . انتزاع ، فرآیندی است که بر اساس آن رفتار حیاتی و مهم یک شی مشخص و جزئیات نامرتبط  ، حذف می گردد. یک انتزاع خوش فکر ، عموما" ساده بوده و  سمت و سوی آن نگریستن به موضوع (شی ) از دیدگاه کاربر است . فرآیند انتزاع ، نسبت به ساختار و ماهیت شی مورد نظر متفاوت بوده و لازم است برای ایجاد یک انتزاع برتر و مناسب ، موضوع بدفعات و از زوایای متفاوت مورد بررسی قرار گیرد.مثلا" در صورتیکه  بخواهیم  از رادیو با دو هدف متفاوت : گوش دادن به موزیک و یا آمورش اصول الکترونیک ، استفاده نمائیم ، نگرش به انتزاع رادیو در هر یک از موارد فوق با یکدیگر متفاوت خواهد بود .
انتزاع ، یک باید غیر قابل اتتخاب و جزء لاینفک یک شی است . مثلا"  شی
Button که در فرم های ویندوز و یا وب از آن بدفعات استفاده می گردد ، دارای متدی با نام  Click  است . متد فوق ، یک انتزاع است و چه بخواهیم و یا نخواهیم وجود خواهد داشت . ( تغییر شکل اولیه Button در زمانیکه بر روی آن کلیک می گردد ).  در این رابطه رویداد OnClick  یک انتخاب است که پیاده کنندگان می توانند با توجه به سیاست های موجود در نرم افزار نحوه برخورد با رویداد فوق را تبین و مشخص نمایند .

کپسوله سازی کد و داده   (encapsulation)
زبانهای برنامه نویسی نظیر
C و پاسکال قادر به ایجاد ساختارهائی مشابه شی می باشند. در C ، این ویژگی یک struct و در پاسکال از آن با نام رکورد یاد می گردد . هر دو نمونه، نوع های داده تعریف شده توسط کاربر می باشند . در هر دو زبان ، یک تابع قادر به عمل بر روی بیش از یک نوع است عکس حالت فوق نیز صادق است (بیش از یک نابع قادر به عملیات بر روی یک نوع داده است ). داده بطور کامل ارائه و آسیب پذیری خاص خود را خواهد داشت .
در مقابل وضعیت فوق ،  برنامه نویسی شی گراء بر اساس کپسوله سازی است . وضعیت شی و رفتار آن  با یکدیگر نگهداری و اصطلاحا" کپسوله می گردند. داده ئی که وضعیت  یک شی را ارائه داده بهمراه متدهائی  ( توابع و روتین ها ) که بر روی داده ها عملیاتی را انجام خواهند داد ، با یکدیگر و بعنوان یک واحد منسجم  ذخیره می گردند. بعبارت دیگر ، استقرار ساختمان داده ها و کدهای مربوطه جهت پردازش داده های فوق ، بمنظور رسیدن به یک هدف مشخص در یک
Box و تولید یک شی مشخص با اهداف از قبل تعریف شده ، کپسوله سازی نامیده می گردد.
کپسوله سازی ، اغلب با نام مخفی سازی اطلاعات نیز نامیده می شود. اما با اینکه این دو واژه در برخی حالات بجای یکدیگر استفاده می گردند ، نمی توان آنان را مترادف هم در نظر گرفت . آنان دارای مفاهیمی مجزاء می باشند. کپسوله سازی ، پیاده سازی یک شی را از رفتار آن  تفکیک و بنوعی محدودیتی را  بمنظور دستیابی به داده داخلی  ایجاد می نماید . محدودیت فوق ، باعث می گردد که جزئیات خاصی از رفتار یک شی مخفی گردد . بدین ترتیب ، امکان ایجاد یک جعبه سیاه فراهم که وضعیت داخلی یک شی در مقابل استفاده کنندگان وو آسیب های احتمالی حفاظت خواهد شد .
کپسوله سازی معمولا" با "انتزاع " نیز اشتباه گرفته می شود. با اینکه دو مفهوم فوق تا حدود زیادی با یکدیگر مشابه  می باشند ، ولی  ایده های متفاوتی را ارائه می نمایند. انتزاع یک فرآیند بوده و شامل عملیات لازم بمنظور مشخص نمودن خصایص و رفتار یک  شی برای  پردازش است . کپسوله سازی ، مکانیزمی است که توسط  "انتزاع " ، پیاده سازی می گردد .مثلا" شی رادیو ، تکنولوژی های متفاوتی را کپسوله نموده است ، تکنولوژی هائی که امکان درک مناسب آنان برای اغلب افراد امکان پذیر نخواهد بود.
در ویژوال بیسیک دات نت ، ساختاری که امکان تعریف یک "انتزاع " را فراهم می نماید ، کلاس (
class ) ، نامیده می شود. واژه کلاس و شی ، اغلب بجای یکدیگر استفاده می گردند ، اما  شی در واقع یک نمونه از یک کلاس است . یک عنصر شامل مجموعه ای از یک و یا چندین شی نظیر یک کتابخانه کلاس در یک DLL است .

توارث  (inheritance)
توارث ، قابلیت تعریف یک کلاس جدید است که رفتارهای خود ( و کد ) را ااز یک کلاس موجود ، به ارث می برد. کلاس جدید ، کلاس مشتق شده و یا کلاس فرزند ، نامیده می شود . کلاس اولیه بعنوان کلاس پایه و یا مادر  نامیده می شود .
توارث بمنظور ارائه ارتباطات از نوع "
Is-a " و یا "kind-of" ، است. یک اتومبیل یک وسیله نقلیه است . یک قایق یک وسیله نقلیه است . یک زیردریائی یک وسیله نقلیه است . در برنامه نویسی شی گراء ، کلاس پایه "وسیله نقلیه " ، می تواند رفتارهای عمومی تمامی انواع وسائط نقلیه را مشخص می نماید. یک کلاس زیرمجموعه که از کلاس پایه مشتق می گردد می تواند بگونه ای پیاده سازی گردد که نشاندهنده رفتار نوع خاصی از یک وسیله نقلیه باشد .مهمترین دستاورد توارث ، قابلیت توسعه و استفاده مجدد از کد است .  علاوه بر امکان فوق ، یکی دیگر از دستاوردهای توارث ، قابلیت ارتباط بین اشیاء متفاوتی است که از یک شی واحد ، مشتق شده اند .
در مقابل توارث ، نوع خاص دیگری از ازتباط  و از نوع "
has - a" وجود دارد . این نوع ارتباط با استفاده از ترکیب ( Composition)  که در برخی حالات از آن با نام تجمع ( aggregation ) نیز یاد می گردد، ایجاد می گردد. ارتباط فوق، نشاندهنده این موضوع است که  یک شی در مقابل توارث خصلت ها و رفتار خود از یک شی دیگر ، خود شامل شی دیگر است ( ترکیب خصلت ها و رفتار در مقابل توارث خصلت ها و رفتار ) .  طبیعتا"  اتومبیل دارای یک موتور است ، اما نمی توان این ادعا را داشت که اتومبیل نوعی از یک موتور است .
در
++C ، نوع خاصی از توارث و با نام توارت چندگانه ، استفاده می گردد. در سناریوی فوق ، یک کلاس از بیش از یک کلاس پایه مشتق می شود . تعداد زیادی از برنامه نویسان ++C ، استفاده از توارث چندگانه  را دارای چالش های خاص خود دانسته و در مواردیکه از کلاس های پایه با اسامی توابع یکسان  استفاده می گردد بکارگیری صحیح آنان برای حتی برنامه نویسان با تجربه مسائل خاص خود را بدنبال خواهد د اشت .ویژوال بیسیک دات نت ، نظیر جاوا صرفا" امکان توارث یگانه را حمایت می نماید.
در زمان طراحی شی گراء ، می بایست شناخت لازم و عمیقی از توارث و تاثیرات آن وجود داشته باشد . ایجاد یک شی که از شی دیگر مشتق خواهد شد ، همواره عملیات آسانی نخواهد بود و با مجموعه ای از سوالات روبرو خواهیم شد . مثلا"  آیا  دایره نوع خاصی از بیضی است ؟ آیا مربع شکل خاصی از مستطیل است ؟ . 

چند ریختی ( polymorphism  )
چندریختی ، تصور( برداشت )  اشکال متفاوت از یک شی ، است. در برنامه نویسی شی گراء ، این انتظار وجود دارد که پتانسیل های زبان استفاده شده برخوردی مناسب و متفاوت با اشیاء را در زمان اجراء داشته باشند. در مواردیکه اشیاء با یکدیگر ارتباط برقرار می نمایند عملا" پیام هائی را ارسال و یا دریافت می دارند . در این راستا ، فرستنده پیام ضرورتی به آگاهی ازاینکه چه کلاسی از دریافت کننده عضوء است ، نخواهد داشت. (می تواند هر کلاس دلخواهی باشد) . شی فرستنده صرفا"می بایست  دارای دانش لازم در ارتباط با توانائی شی دریافت کننده  بمنظور انجام یک رفتار خاص باشد. وضعیت فوق ، مهمترین مزیت چندریختی  است .
مثلا" فرض کنید ما دارای یک مستطیل ، مربع و یک دایره باشیم . هر کلاس  یک
shape بوده و هر یک دارای متدی با نام Draw می باشند که مسئولیت  تفسیر و رسم شکل بر روی صفحه را بر عهده دارند. با استفاده از چند ریختی  ، می توان متدی را ایجاد که  یک شی Shape  و یا  آرایه ای  از اشیاء Shape را بعنوان پارامتر دریافت نماید. می توان مربع ، مستیطل و دایره را به این متدها بدون هیچگونه مسئله ای پاس دهیم . (مراجعه به یک کلاس از طریق مادر آن بطور کامل معتبر و قانونی خواهد بود ). در مثال فوق ، گیرنده صرفا" از این موضوع که  یک Shape را دریافت که دارای متدی با نام Draw است ، آگاه  و اطلاعات خاصی در ارتباط با نوع خاص Shape  نخواهد بود. در صورتیکه Shape ، مستطیل باشد ، در ادامه نسخه Draw مربوط به مستطیل فراخوانده خواهد شد. اگر شکل مورد نظر ، مربع باشد ، نسخه  Draw مربوط به  مربع ،  فراخوانده می شود.
مفهوم فوق را می توان از زاویه ای دیگر نیز بررسی نمود . فرض کنید از یک نرم افزار گرافیکی کوچک  بمنظور ترسیم اشکال متفاوت استفاده می گردد و بخواهیم در یک لحظه چندین شکل را بر روی صفحه رسم نمائیم . بمنظور پیاده سازی قابلیت فوق ، کلاسی با نام
Scene ، ایجاد می گردد. کلاس فوق، دارای متدی با نام Render است که یک آرایه از اشیاء Shape را بعنوان ورودی دریافت می نماید . در چنین حالتی می توان آرایه ای  از اشکال متفاوت را ایجاد و آن را برای متد Render پاس نمود . متد فوق ، قادر به تکرار بین آرایه و فراخوانی متد Draw برای رسم هر یک از عناصر آرایه است . در این راستا و  متناسب با نوع شکل ، نسخه Draw  مربوط به شکل مورد نظر فراخوانده می گردد . متد  Render ، دارای ایده و یا اطلاعاتی  در ارتباط با نوع شکلی که در حا ل کار با آن است،  نخواهد بود.
مهمترین مزیت پیاده سازی کلاس
Scene و متد مربوطه آن یعنی Render ، جایگاه آنان در توسعه سیستم است . مثلا" در صورتیکه کلاس جدیدی با نام Ellipse ، اضافه گردد  ( کلاسی برای نرم افزار مربوطه ) ، ضرورتی به اعمال تغییرات در کلاس Scene وجودد نخواهد داشت . . متد Render قادر به رسم Ellipse نظیر سایر اشکال خواهد بود چراکه متد فوق با اشیاء مربوط یک ارتباط عمومی دارد . دراین حالت ، کلاس های Shape و Scene بدرستی با یکدیگر جفت وجور شده اند. این نوع از چند ریختی  ، عام و یا parametricpolymorphism نامیده می شود.  نوع دیگری از چند ریختی  ، Overloading
نامیده می شود. در مدل فوق ،  یک شی دارای دو و یا بیش از دو رفتار است که دارای اسامی یکسان می باشند . متدها صرفا" از طریق پیامهائی که دریافت می نمایند ( توسط پارامترهای متد ) مشخص خواهند شد . ایجاد یک متد مشترک با نام power  بمنظور محاسبه توان اعداد صحیح  و اعشاری ، نمونه ای مناسب در این زمینه است . با اینکه می دانیم برای محاسبه توان اعداد صحیح و اعشاری از الگوریتم ها ی متفاوتی استفاده می گردد ، می خواهیم با داشتن یک متد از قابلیت های آن بمنظور محاسبه توان اعداد صحیح و یا اعشاری استفاده نمائیم . استفاده کننده از متد Power ، با سناریوی طراحی شده درون متد کاری نداشته و صرفا" پارامتر خود را در اختیار متد قرار خواهد داد . با تمهیداتی که درون متد پیش بینی شده است ، تصمیم لازم در خصوص استفاده از روتین های جانبی ( متدهای جانبی ) بمنظور محاسبه توان اعداد صحیح و یا اعشاری یک عدد ، اتخاذ خواهد شد .
چند ریختی ، یکی از مفاهیم و ویژگی های مهم  برنامه نویسی شی گراء بوده که انعطاف شگفت انگیزی را در ارتباط با طراحی برنامه ها بدنبال خواهد داشت .

فریمورک دات نت
اشیائی که با استفاده از ویژوال بیسیک دات نت ایجاد می گردند، تداوم و ادامه حیات خود را مدیون فریمورک دات نت می دانند. پلات فرم فوق، با استفاده از استانداردهای های باز و پروتکل هائی نظیر
XML  ، HTTP و SOAP ایجاد شده است . فریمورک دات نت ، شامل یک کتابخانه استاندارد غنی است که سرویس های اساسی را در اختیار تمامی زبانهای سازگار با دات نت ، قرار می دهند.هدف از معماری فوق ، ارائه امکانات و تسهیلات لازم برای برای ایجاد ، بکارگیری و اجراء سرویس های مبتنی بر وب است . علیرغم هدف  فوق ، فریمورک دات نت ، محلی ایده آل برای  پیاده سازی تمامی انواع برنامه ها  صرفنظر از طراحی است .  برخی از مزایای معماری فوق بشرح زیر می باشد :

  • عملیات توزیع شده بر اساس استانداردهای اینترنت و پروتکل هائی نظیر HTTP,XML و SOAP 
  • ارائه سرویس های جهانی و بزرگ نظیر Object pooling, پیام ، امنیت و تراکنش
  •  زیرساخت  مناسب بمنظور تسهیل در پیاده سازی کدها و عناصر با قابلیت استفاده مجدد
  • تسهیل در پیاده سازی تحت وب با استفاده از استانداردهای باز .
  • ارتباط کامل بین زبانها که  دستاوردهائی نظیر : توارث کلاس ها ،  Catch exceptions و اشکال زدائی بین زبان های متفاوت را بدنبال خواهد داشت .
  • بکارگیری نرم افزار در دات نت بمراتب ساده ترنسبت به گذشته خواهد بود ، چراکه تنظیمات در فایل های پیکربندی از نوع XML ذخیره و در دایرکتوری مربوط به نرم افزار ذخیره خواهند شد. در این راستا ضرورتی به استفاده از ریجستری نخواهد بود

دو بخش بسیار مهم دات نت که توجه طراحان و پیاده کنندگان نرم افزار را بسرعت بسوی خود جلب می نماید : CLR)Common Language Runtime) و  کتابخانه کلاس دات نت است . CLR ،  سرویس های لازم برای عناصری را که تحت دات نت اجراء می گردند ، ارائه می نماید .کتابخانه کلاس دات نت ، مجموعه ای گسترده از کلاس ها را برای هر چیزی  از دستیابی به داده گرفته تا طراحی رابط کاربر، امنیت ، شبکه و ... ارائه می نماید. کتابخانه همچنین شامل تعاریف مورد نیاز برای تمامی نوع های داده اولیه نظیر : bytes,integers و string است . تمامی این نوع ها ، از یک کلاس پایه با نام  System.object  مشتق می گردند. محدودیتی بین نوع هائی که توسط سیستم تعریف شده اند با نوع هائی که شما ایجاد می نمائید ،وجود نخواهد داشت . هر چیزبمنزله  یک شی خواهد بود.
در گذشته ، پاس دادن یک
string از یک عنصر نوشته شده به زبان ویژوال بیسیک به عنصر دیگری که با ++C نوشته شده بود ، ( و یا برعکس ) مسائل و مشکلات خاص خود را بدنبال داشت . رشته ها در ویژوال بیسیک ، مشابه رشته ها در ++C نبودند . در حقیقت،در برخی موارد خاص ، استفاده از یک عنصر نوشته شده با ++C
از طریق ویژوال بیسیک ، بدلیل تفاوت در نوع داده آنان ، غیر ممکن بود. هر زبان سازگار با  دات نت ، از نوع های یکسان تعریف شده  و موجود در کتابخانه کلاس پایه استفاده می نماید. بدین ترتیب ، با مسائل مربوط به ارتباط عملیاتی بین زبانها که در گذشته شاهد آنان بودیم ، برخورد نخواهیم کرد.

CLR و قابلیت های آن
CLR ، موتور اجرائی فریمورک دات نت است . سیستم  فوق ، مدیریت تمامی کدهای ترجمه شده را بر عهده خواهد داشت .کد ترجمه شده که در دات نت اجراء می گردد را کد مدیریت یافته (اداره شده) می گویند. علاوه بر مسئولیت لود و اجراء یک برنامه ، CLR
سرویس هائی را ارائه که تمامی  پیاده کنندگان عناصر می توانند از مزایای آن بهره مند گردند:

  • فراخوانی و توقف threads و پردازه ها
  • چرخه حیات شی و مدیریت حافظه
  • ارتباط و همبستگی بین زبان ها
  •  کد قابل استفاده در محیط های  متفاوت ( Cross-code )  و  عملیات مبتنی بر امنیت
  •  Exception handling ( حتی بین زبانها )
  • بکارگیری و مسئله ورژن سازی
  •  ارتباط بین کد اداره شده ( مدیریت یافته ) و کد غیر اداره شده (غیرمدیریت یافته )
  • اشکال زدائی بین تمامی زبانها

Runtime ها چیزی جدیدی نمی باشند . ویژوال بیسیک همواره دارای نوع خاصی از یک runtime  بوده است . ویژوال ++C ، دارای یک runtime با نام MSVCRT.DLL است . perl ، Python و SmallTalk نیز از runtime استفاده می نمایند. تفاوت بین این نوع از Runtime ها و CLR در این است که CLR بمنظور کار با چندین زبان برنامه نویسی طراحی شده است .هر برنامه ای که مقصد کمپایلر آن فریمورک دات نت باشد ، قادر به استفاده از تمامی مزایای CLR است .
دات نت در این رابطه قابل مقایسه با جاوا نیز می باشد . جاوا از یک
Runtime با نام JVM)Java Virtual Machine) استفاده و صرفا" قادر به اجراء کد نوشته شده توسط جاوا می باشد . لازم است به این نکته مهم نیز اشاره گردد که JVM یک مفسر است . در دات نت ، تمامی برنامه های نوشته شده با هر یک از زبان های سازگار با دانت نت ،در ایتدا به یک زبان مستقل از پردازنده ترجمه می گردند که IL)Intermediate Language) نامیده می شود( قابل مقایسه با بایت کدهای جاوا ) . IL ، نظیر جاوا در زمان اجراء تفسیر نمی گردد و زمانیکه کد در اولین مرتبه اجراء می گردد ، یک و یا چندین کمپایلر JIT)Just-in-time) مسئولیت ترجمه کدهای IL به کد مختص یک ماشین را برعهده می گیرند.
ارتباط و همبستگی بین زبانها یک از مهمترین مزایای ارائه شده توسط
CLR است . اگر برنامه نویسی ، کلاسی را با استفاده از ++C نوشته باشد ، می توان کلاسی در VB.NET را با استفاده از آن ایجاد نمود( توارث بین زبانها ). ویژگی فوق ، توارث بین زبان ها نامیده می گردد. اشیاء نوشته شده با زبان متفاوت دیگر قادر به ارتباط عملیاتی  با یکدیگر می باشند . دو بخش مهم CLR که  امکان فوق را فراهم می نمایند CTS)Common Type System) و CLS) Common Language Specification)
، می باشند .

سیستم CTS
سیستم
CTS ، قوانین لازم بمنظورتبعیت یک زبان در جهت  بهره گیری از مزایای فریمورک دات نت را تعریف می نماید. سیستم فوق، همچنین مجموعه ای از نوع های متداول و عملیاتی که در بین زبان های برنامه نویسی متفاوت موجود است را تعریف و مشخص می نماید که چگونه این نوع ها استفاده و توسط CLR مدیریت گردند ، چگونه اشیاء قابلیت های خود را عرضه و چگونه با یکدیگر ارتباط برقرار نمایند . CTS
 ، فونداسیون لازم بمنظور ارتباط متقابل بین زبانها در دات نت را ایجاد  می نماید.

سیستم CLS)Common Language Specification)
CLS ، زیر مجموعه ای از CTS بوده که مسئول تشریح پارامترهای پایه و مهم استفاده شده توسط مجموعه ای گسترده از زبان های برنامه نویسی است . عناصری که از ویژگی های CLS ، استفاده می نمایند ، سازگار با CLS بوده و امکان استفاده و دستیابی به عناصر فوق ، از طریق سایر زبانهای برنامه نویسی سازگار با  دات نت ، وجود خواهد داشت . VB.NET یک زبان سازگار با CLS است . بنابراین ، هر کلاس ، شی و یا عنصری که ایجاد می گردد ، توسط سایر زبا ن های سازگار با CLS در دا ت نت ، قابل استفاده خواهد بود.