سرویس 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 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 را انجام داد .
شناسائی کاربران برنامه هاب وب
یکی از روش هائی که برنامه های وب را قادر به شناسائی کاربران می نماید، الزام کاربران به درج نام و رمز عبور بمنظور استفاده از برنامه می باشد. برنامه های وب ، همچنین قادر به شناسائی کاربران از طریق اطلاعات ذخیره شده بر روی کامپیوتر کاربران و به شکل "کوکی " می باشند. کوکی ، فایل کوچکی بوده که یک برنامه وب قادر به نوشتن آن بر روی کامپیوتر سرویس گیرنده است .
از مهمترین مزایای کوکی ، می توان به تعامل نامحسوس با کاربر اشاره نمود. در چنین مواردی ، کاربران هر مرتبه که سایت را ملاقات می نمایند ، الزامی به Log on ، نخواهند داشت . ( اطلاعات آنان ، بصورت اتوماتیک و در صورت ضرورت در دسترس و قابل استفاده است) . مهمترین نقطه ضعف در جهت استفاده از کوکی ، به تنظیم مرورگرها توسط کاربران بمنظور عدم پذیرش کوکی، برمی گردد .برخی از کاربران تمایل و علاقه ای به ذخیره سازی اطلاعات از طریق یک سایت بر روی کامپیوتر خود را نداشته و تصور می نمایند که ممکن است از اطلاعات فوق ، بمنظور ردیابی آنان در زمان استفاده از اینترنت ، سوء استفاده گردد. بنابراین در مواردیکه قصد استفاده از کوکی وجود داشته باشد ، می بایست در ابتدا توانائی سرویس گیرنده برای پذیرش کوکی بررسی گردد .
در زمان استفاده از کوکی بمنظور ذخیره و بازیابی اطلاعات کاربران ، می توان از دو رویکرد متفاوت استفاده نمود :
ذخیره تمامی اطلاعات کاربران بعنوان یک کوکی بر روی ماشین سرویس گیرنده. استفاده از روش فوق ، درمواردیکه اطلاعات کاربر ساده بوده و سرویس دهنده ضرورتی به استفاده از آنان بمنظور تکمیل عملیات خود نداشته باشد ، می تواند مفید باشد .
ذخیره یک کلید شناسائی بر روی ماشین سرویس گیرنده و بازیابی سایر اطلاعات کاربر از طریق یک منبع داده بر روی سرویس دهنده با توحه به کلید شناسائی .
در ادامه به بررسی هر یک از رویکردهای فوق ، خواهیم پرداخت.
ذخیره سازی اطلاعات کاربران بر روی سرویس گیرنده
برای ذخیره یک کوکی بر روی ماشین سرویس گیرنده ، مراحل زیر را دنبال می نمائیم :
برنامه زیر( روتین مربوط به رویداد Page_Load ) ، نحوه ایجاد یک کوکی و تشخیص آخرین مرتبه ملاقات سایت توسط کاربر را نشان می دهد.در برنامه فوق ، بررسی لازم در خصوص پدیرش کوکی از طرف سرویس گیرنده ، صورت گرفته و در صورتیکه اولین مرتبه است که کاربر سایت را ملاقات می نماید ، یک کوکی جدید ایجاد و در غیر اینصورت ، کوکی ایجاد شده ، بهنگام می گردد.
VB.NET |
Private Sub Page_Load ( ByVal Sender As System.Object , ByVal e As System.EventArgs ) Handles Mybase.Load |
کوکی ها نسبت به حروف بزرگ و کوچک حساس می باشند . مثلا" 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 |
استفاده از کلید بهمراه کوکی
یک کوکی ، قادربه ذخیره سازی 4096 بایت اطلاعات بوده و می توان بمنظور شناسائی اطلاعات همراه کوکی از کلید ها ، استفاده نمود. برنامه زیر ، مشخصات کاربر را در یک کوکی با استفاده از کلیدهای جداگانه ای ذخیره می نماید .
VB.NET |
Private Sub Page_Load ( ByVal Sender As System.Object , ByVal e As System.EventArgs ) Handles butOK.Click |
با استفاده از نام کلید ، می توان اقدام به بازیابی مقادیر نسبت داده شده به هر یک از کلیدهای ذخیره شده در کوکی نمود .
VB.NET |
Private Sub Page_Load ( ByVal Sender As System.Object , ByVal e As System.EventArgs ) Handles butGetData.Click |
ذخیره سازی اطلاعات کاربران بر روی سرویس دهنده
برای ذخیره اطلاعات کاربران بر روی سرویس دهنده ، می توان از کوکی بعنوان یک ابزار شناسائی ( ایندکس ) بمنظور ذخیره و بازیابی اطلاعات کاربران بر روی سرویس دهنده در یک بانک اطلاعاتی ، یک فایل 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 |
ایجاد یک فایل بمنظور ذخیره اطلاعات کاربران
مهمترین هدف ذخیره سازی اطلاعات کاربران، بازیابی آنان با سرعت مناسب و پس از ملاقات مجدد کاربران از سایت و یا اجرای برنامه وب است . با توجه به اینکه این نوع از کاربران با استفاده از یک کلیدمنحصربفرد، شناسائی می گردند ، می توان چنین تصور نمود که دستیابی به داده از طریق یک Data set انجام خواهد شد. Data set ، با استفاده از متد Find ، قادر به بازیابی سطرهائی از داده بکمک کلیدها ی منحصربفرد می باشد . استفاده از یک Data set ، بدان معنی است که فایل ایجاد شده بر روی سرویس دهنده ، می بایست یک بانک اطلاعاتی و یا یک فایل XML باشد . استفاده از فایل های XML در مواردیکه داده های مورد نظر برای ذخیره سازی اندک بوده و روابط بین اقلام اطلاعاتی نیز پیچیده نباشد ، توصیه می گردد .
برای ایجاد یک فایل XML ، بمنظور ذخیره سازی اطلاعات کاربران ، مراحل زیر را دنبال می نمائیم :
ایجاد یک فایل XML
برای ایجاد یک فایل XML در ویژوال استودیو ، گزینه Add New Item را از طریق منوی Project انتخاب و در ادامه XML File را از طریق لیست تمپلیت های نمایش داده شده ، انتخاب می نمائیم . فایل های XML ، شباهت زیادی به فایل های HTML داشته و در این راستا تفاوت های مهمی نظیر حساسیت نسبت به حروف بزرگ و کوچک و پیروی از یک گرامر خاص ، نیز وجود دارد. از تگ های <element> و <element / > بمنظور معرفی عناصر داده در یک فایل XML استفاده می گردد . کد زیر، نحوه ایجاد یک فایل XML بمنظور ذخیره سازی مشخصات کاربر را نشان می دهد .
VB.NET |
<?xml version="1.0" encoding="utf-8" ?> |
ایجاد یک 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 |
ذخیره اطلاعات کاربر بر روی سرویس دهنده
بمنظور ذخیره سازی اطلاعات کاربران بر روی سرویس دهنده بصورت یک فایل XML ، می توان از متد SaveXML مربوط به شی Data set استفاده نمود. روتین SetUserInfo ( جدول زیر ) ، از روتین GetUserData بخش قبل ،استفاده نموده تا یک Data set را از یک فایل XML دریافت نماید. در ادامه ، با استفاده از متد Find ، بررسی لازم در خصوص وجود UserID در Data Set صورت می پذیرد.در صورتیکه UserID پیدا نگردد ، روتین SetUserInfo سطری را برای کاربر ( قبل از تنظیم مقادیر متناظر با فیلدها از طریق کنترل های سرویس دهنده بر روی یک فرم وب )، اضافه می نماید. در نهایت ، SetUserInfo ، تمامی داده را به سرویس دهنده برمی گرداند .
VB.NET |
Sub SetUserInfo ( ByVal UserID As String ) |
بازیابی اطلاعات کاربران از یک Data Set
بمنظور بازیابی اطلاعات کاربران از فایل XML ، از روتین GetUIserData برای ایجاد یک Data Set از فایل XML استفاده می گردد . در ادامه ، می توان با استفاده از متد Find بمنظور بازیابی سطر مرتبط با UserID استفاده نمود . روتین GetUserInfo ( جدول زیر) ، اطلاعات کاربر را از Data Set بازیابی و با استفاده از آن ، کنترل های سرویس دهنده موجود بر روی یک فرم وب را مقداردهی می نماید .
VB.NET |
Sub GetUserInfo ( ByVal UserID As String ) |
استفاده از 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 ، ایجاد نمود.
بمنظور اعمال فرمت دلخواه در رابطه با خروجی یک برنامه وب ، می توان در سه سطح متفاوت این کار راا انجام داد :
اولویت هر یک از سطوح فوق ، مشابه تعریف یک متغیر و محدوده ( Scoping ) استفاده از آن می باشد. سبک های تعریف شده Inline دارای اولویت بیشتر نسبت به Page بوده و سبک های Page دارای اولویت بیشتری نسبت به Global می باشند . مثلا" در صورتیکه با استفاده از هر یک از روش های فوق ، سبک خاصی بمنظورنحوه نمایش یک پاراگراف ، تعریف شده باشد ، سبک تعریف شده inline دارای اولویت بیشتری خواهد بود.با توجه به اولویت مجموعه قوانین تعریف شده مربوط به سبک نمایش ، از Style Sheet ها ، بعنوان Cascading نیز یاد می گردد . کد زیر ، نحوه استفاده از سه روش فوق را بمنظور تعریف Style ، نشان می دهد .
Style types definition |
<HTML> |
Test.css file |
<!-- (1) From Styles.css sheet referenced in HEAD element . --> |
در مثال فوق ، نحوه نسبت دهی خصلت 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> |
تغییر 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 |
Style Class فوق، مسئولیت ایجاد فرمت مناسب ( ایتالیک ) را برای تمامی عناصری که از این کلاس استفاده می نمایند، برعهده دارد. برای استفاده از Style فوق بهمراه عناصر HTML از خصلت class استفاده میگردد. بمنظور استفاده از style بهمراه کنترل های سرویس دهنده ، از خصلت CssClass استفاده می گردد .
Style class |
<P> This paragraph is test <Span Class="emphasis"> some text</span></p> |
ایجاد Style برای عناصر خاص
با استفاده از ID مربوط به عناصر،می توان Style مورد نظر در ارتباط با عناصر خاص موجود بر روی یک فرم وب را تعریف نمود. ID مربوط به عناصر ، می بایست برای هر یک از عناصر موجود بر روی صفحه ، منحصربفرد می باشد. فرمت مشخص شده ، صرفا" در رابطه با یک عنصر بر روی هر صفحه بکارگرفته می شود . زمانیکه یک Style rule برای یک عنصر با ID مشخص شده ،ایجاد می گردد ، ویژوال استودیو دات نت ، یک تعریف Style را با استفاده از شناسه elementID # ایجاد و آن را به Style sheet ،اضافه می نماید.
Style by element ID |
#Inserted |
Style های تعریف شده در ویژوال استودیو ، اغلب بصورت صحیح در بخش form designer نشان داده نمی شوند . در صورتیکه خروجی مورد نظر در ارتباط با یک فرمت خاص مشاهده نمی گردد، می توان عملیات زیر را دنبال نمود:
ایجاد Style تودرتو
در صورتیکه به تعاریف Style در Style sheet پیش فرض ، ( فایل Styles.css ) نگاهی داشته باشیم ، متوجه خواهیم شد که برخی تعاریف style ، چندین نام عنصر را شامل می شوند . تعاریف فوق ، فرمت عناصر تودرتو را مشخص می نماید. Style زیر ، نوع های متفاوتی از Bullet را تعریف می نماید( nested) .
Nested Style |
UL LI { |
بمنظور ایجاد 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" > |
بمنظور سوئیچ نمودن بین Style sheet در زمان اجراء ، یک اسکریپت سمت سرویس گیرنده را نوشته تا تغییر لازم در عنصر href مربوط به لینک style sheet را ایجاد نماید . کد زیر ، یک فرم وب را ایجاد نموده که بین style sheet های Style1.css و Style2.css ، سوئیچ می نماید ( زمانیکه کاربر بر روی لینک موجود کلیک می نماید ) .
Changing style sheets at run time |
<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 . از تکنولوژی 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 ، ایجاد نمود.
بمنظور اعمال فرمت دلخواه در رابطه با خروجی یک برنامه وب ، می توان در سه سطح متفاوت این کار راا انجام داد :
اولویت هر یک از سطوح فوق ، مشابه تعریف یک متغیر و محدوده ( Scoping ) استفاده از آن می باشد. سبک های تعریف شده Inline دارای اولویت بیشتر نسبت به Page بوده و سبک های Page دارای اولویت بیشتری نسبت به Global می باشند . مثلا" در صورتیکه با استفاده از هر یک از روش های فوق ، سبک خاصی بمنظورنحوه نمایش یک پاراگراف ، تعریف شده باشد ، سبک تعریف شده inline دارای اولویت بیشتری خواهد بود.با توجه به اولویت مجموعه قوانین تعریف شده مربوط به سبک نمایش ، از Style Sheet ها ، بعنوان Cascading نیز یاد می گردد . کد زیر ، نحوه استفاده از سه روش فوق را بمنظور تعریف Style ، نشان می دهد .
Style types definition |
<HTML> |
Test.css file |
<!-- (1) From Styles.css sheet referenced in HEAD element . --> |
در مثال فوق ، نحوه نسبت دهی خصلت 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> |
تغییر 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 |
Style Class فوق، مسئولیت ایجاد فرمت مناسب ( ایتالیک ) را برای تمامی عناصری که از این کلاس استفاده می نمایند، برعهده دارد. برای استفاده از Style فوق بهمراه عناصر HTML از خصلت class استفاده میگردد. بمنظور استفاده از style بهمراه کنترل های سرویس دهنده ، از خصلت CssClass استفاده می گردد .
Style class |
<P> This paragraph is test <Span Class="emphasis"> some text</span></p> |
ایجاد Style برای عناصر خاص
با استفاده از ID مربوط به عناصر،می توان Style مورد نظر در ارتباط با عناصر خاص موجود بر روی یک فرم وب را تعریف نمود. ID مربوط به عناصر ، می بایست برای هر یک از عناصر موجود بر روی صفحه ، منحصربفرد می باشد. فرمت مشخص شده ، صرفا" در رابطه با یک عنصر بر روی هر صفحه بکارگرفته می شود . زمانیکه یک Style rule برای یک عنصر با ID مشخص شده ،ایجاد می گردد ، ویژوال استودیو دات نت ، یک تعریف Style را با استفاده از شناسه elementID # ایجاد و آن را به Style sheet ،اضافه می نماید.
Style by element ID |
#Inserted |
Style های تعریف شده در ویژوال استودیو ، اغلب بصورت صحیح در بخش form designer نشان داده نمی شوند . در صورتیکه خروجی مورد نظر در ارتباط با یک فرمت خاص مشاهده نمی گردد، می توان عملیات زیر را دنبال نمود:
ایجاد Style تودرتو
در صورتیکه به تعاریف Style در Style sheet پیش فرض ، ( فایل Styles.css ) نگاهی داشته باشیم ، متوجه خواهیم شد که برخی تعاریف style ، چندین نام عنصر را شامل می شوند . تعاریف فوق ، فرمت عناصر تودرتو را مشخص می نماید. Style زیر ، نوع های متفاوتی از Bullet را تعریف می نماید( nested) .
Nested Style |
UL LI { |
بمنظور ایجاد 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" > |
بمنظور سوئیچ نمودن بین Style sheet در زمان اجراء ، یک اسکریپت سمت سرویس گیرنده را نوشته تا تغییر لازم در عنصر href مربوط به لینک style sheet را ایجاد نماید . کد زیر ، یک فرم وب را ایجاد نموده که بین style sheet های Style1.css و Style2.css ، سوئیچ می نماید ( زمانیکه کاربر بر روی لینک موجود کلیک می نماید ) .
Changing style sheets at run time |
<HTML> |
|
![]()
|
برنامه نویسی شی گراء، بدون شک مهمترین تحول در دنیای نرم افزار طی سالیان گذشته بوده که بیشترین تاثیر را در پیشبرد نرم افزار بدنبال داشته و ما امروز در صنعت گسترده نرم افزار از دستاوردهای وسیع آن بهره مند هستیم . در این مقاله قصد داریم ، به بررسی برنامه نویسی شی گراء پرداخته و از این زاویه نگاهی به دات نت داشته باشیم .
بمنظور شناخت برنامه نویسی شی گراء ، کافی است به اطراف خود نگاهی داشته باشیم .جارو برقی ، قهوه جوش ، پنکه سقفی و مجموعه بسیار گسترده ای از سایر اشیاء را پیرامون زندگی خود مشاهده می نمائیم . اشیاء ما را محاصره و یا در محاصره اشیاء می باشیم . برخی از این اشیاء نظیر دوربین ، مستقل عمل نموه و برخی دیگر نظیر تلفن و ماشین های پاسخگو با سایر اشیاء ارتباط دارند . برخی از اشیاء دارای داده ها ئی می باشند که بین کاربران استفاده می گردد(یک دفترچه تلقن) . برخی از اشیاء شامل اشیاء دیگری می باشند، یک دستگاه بستنی ساز درون فریزر ، نمونه ای در این زمینه است .
بسیاری از اشیاء از لحاظ عملکرد با یکدیگر مشابه ولی از لحاظ اهداف با یکدیگر متفاوت می باشند . مثلا" وان حمام و سینک آشبزخانه هر دو امکان استفاده از آب را فراهم می نمایند ،ولی این کار بندرت اتفاق خواهد افتاد که شما در سینک آشبزخانه دوش گرفته و یا ظروف آشبزخانه خود را در وان حمام بشوئید! بهرحال وان حمام و سینک آشبزخانه موجود در منزل ، احتمالا" از یک لوله آب مشترک در ساختمان استفاده و اینترفیس آنها در موارد متعددی مشترک است ( پیچ آب گرم وسرد ، یک شیر آب ، یک فاضلاب ) .
در صورت تامل در ارتباط با اشیاء فوق ، با سوالات متعددی مواجه خواهیم شد . چه تفاوت هائی بین یک وان حمام و سینک آشبزحانه ، وجود دارد ؟ آیا اختلاف موجود به محل آنها ، اندازه لگن و یا گودی آنها از سطح زمین برمی گردد. شباهت موجود بین اشیاء فوق چیست ؟
در برخی موارد انجام عملات یکسان در ارتباط با یک شی ، رفتارهای متفاوتی را بدنبال خواهد داشت . یک شی قادر به انجام عملیات متفاوتی با توجه به ماهیت وضعیت بوجود آمده است . مثلا " زمانیکه دکمه 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 ایجاد شده است . فریمورک دات نت ، شامل یک کتابخانه استاندارد غنی است که سرویس های اساسی را در اختیار تمامی زبانهای سازگار با دات نت ، قرار می دهند.هدف از معماری فوق ، ارائه امکانات و تسهیلات لازم برای برای ایجاد ، بکارگیری و اجراء سرویس های مبتنی بر وب است . علیرغم هدف فوق ، فریمورک دات نت ، محلی ایده آل برای پیاده سازی تمامی انواع برنامه ها صرفنظر از طراحی است . برخی از مزایای معماری فوق بشرح زیر می باشد :
دو بخش بسیار مهم دات نت که توجه طراحان و پیاده کنندگان نرم افزار را بسرعت بسوی خود جلب می نماید : CLR)Common Language Runtime) و کتابخانه کلاس دات نت است . CLR ، سرویس های لازم برای عناصری را که تحت دات نت اجراء می گردند ، ارائه می نماید .کتابخانه کلاس دات نت ، مجموعه ای گسترده از کلاس ها را برای هر چیزی از دستیابی به داده گرفته تا طراحی رابط کاربر، امنیت ، شبکه و ... ارائه می نماید. کتابخانه همچنین شامل تعاریف مورد نیاز برای تمامی نوع های داده اولیه نظیر : bytes,integers و string است . تمامی این نوع ها ، از یک کلاس پایه با نام System.object مشتق می گردند. محدودیتی بین نوع هائی که توسط سیستم تعریف شده اند با نوع هائی که شما ایجاد می نمائید ،وجود نخواهد داشت . هر چیزبمنزله یک شی خواهد بود.
در گذشته ، پاس دادن یک string از یک عنصر نوشته شده به زبان ویژوال بیسیک به عنصر دیگری که با ++C نوشته شده بود ، ( و یا برعکس ) مسائل و مشکلات خاص خود را بدنبال داشت . رشته ها در ویژوال بیسیک ، مشابه رشته ها در ++C نبودند . در حقیقت،در برخی موارد خاص ، استفاده از یک عنصر نوشته شده با ++C از طریق ویژوال بیسیک ، بدلیل تفاوت در نوع داده آنان ، غیر ممکن بود. هر زبان سازگار با دات نت ، از نوع های یکسان تعریف شده و موجود در کتابخانه کلاس پایه استفاده می نماید. بدین ترتیب ، با مسائل مربوط به ارتباط عملیاتی بین زبانها که در گذشته شاهد آنان بودیم ، برخورد نخواهیم کرد.
CLR و قابلیت های آن
CLR ، موتور اجرائی فریمورک دات نت است . سیستم فوق ، مدیریت تمامی کدهای ترجمه شده را بر عهده خواهد داشت .کد ترجمه شده که در دات نت اجراء می گردد را کد مدیریت یافته (اداره شده) می گویند. علاوه بر مسئولیت لود و اجراء یک برنامه ، CLR سرویس هائی را ارائه که تمامی پیاده کنندگان عناصر می توانند از مزایای آن بهره مند گردند:
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 در دا ت نت ، قابل استفاده خواهد بود.