شرح زبان سی شارپ و قابلیت های تحت وب آن (دات نت)
مقدمه
C# یكی از زبانهای جدید برنامهسازی شیگرا است كه با ارائة رهیافت Component-Based به طراحی و توسعه نرمافزار میپردازد. آنچه ما در حال حاضر از زبانهای برنامهسازی Component-Based در اختیار داریم و آنچه كه C# در اختیار ما قرار میدهد، افق جدیدی به سوی تولید و طراحی نرمافزارهای پیشرفته را در روی ما قرار میدهند.
نرمافزار، به عنوان یك سرویس، هدف اصلی نسل بعدی در سیستمهای محاسباتی است. برای مثال، C# زبانی مناسب برای تولید و طراحی صفحات وب، ایجاد اجزایی با قابلیت استفاده مجدد و ایجاد محیطهایی چند رسانهای را به عنوان زبانی كه هدفش توسعه ایجاد نرمافزارهای پیشرفته است، در اختیار ما قرار میدهد.
زبان برنامهسازی C#، به همراه تكنولوژی جدید شركت نرمافزاری مایكروسافت یعنیNET. ارائه گردید، از این رو از تكنولوژیNET. این شركت بهره میبرد. پس در ابتدا به بیان مطالبی درباره محیطNET. میپردازیم.
فصل اول:تکنولوژیNET.
چراNET.؟
در گذشته زبانهای برنامهسازی، سیستمهای عامل و محیطهای اجرایی نرمافزارها برای دورهای خاص ساخته میشدند. هنگامیكه برنامهها از محیطهای رومیزی(Desktop) به اینترنت منتقل میشدند، ابزارهای موجود نیازمند API هایی اضافی و قابلیتهای دیگری بودند. بیشتر این قابلیتها در كنار زبانهای برنامهسازی بعنوان ابزارهایی جهت رفع این نیازمندیها ارائه میشدند. هرچند این ابزارهای اضافی بصورت قابل توجهی نیازمندیها را حل كرده و باعث رسیدن اینترنت به وضعیت كنونی شدند، اما همچنان مسائل بسیاری وجود داشت كه نیاز به حل شدن داشتند.
NET. به منظور پشتیبانی از كاربردهای عصر جدید اینترنت ساخته شد. مواردی همچون گسترش، امنیت و versioning، كه از مسایل مهممی بودند، توسط NET. پوشش داده شدند. قسمت مركزیNET. بخش CLR (Common Language Runtime) است كه یك موتور اجرایی مجازی است كه از توسعه، امنیت و ارتقای نسخه كد پشتیبانی مینماید. در گذشته چنین امكاناتی برای كدهای كامپایل شده فراهم نبود. بدلیل اینكهNET. توانست بر این مشكلات اساسی فائق آید، راه حل قدرتمندتری جهت ساخت برنامههای تحت اینترنت به شمار میرود.
NET. چیست؟
NET. محیطی جهت ساخت برنامههای توزیع شده است كه شامل ابزارهایی نظیر ""كتابخانه كلاسهای پایه"(BCL: Base Class Library)، CLR و زبانهای برنامهنویسی است. این ابزارها امكان ساخت انواع مختلفی از نرمافزارها، از قبیل فرمهای ویندوز، ADONET.، ASPNET. و سرویسهای وب، را فراهم میآورند.
فرمهای ویندوز، مجموعهای از كتابخانهها جهت ساخت رابطهای كاربر گرافیكی برای برنامههای كاربردی است. این كتابخانهها اغلب API های Win32 را در خود دارا میباشند. همچنین امكان استفاده از رهیافت شیگرایی را جهت تولید آسان برنامههای تحت ویندوز، فراهم میآورند.
ADONET. مجموعهای از كلاسهای شیگرایی است كه جهت ساخت مولفههای داده و سطوح دسترسی داده در برنامههای n-tiered مورد استفاده قرار میگیرد.
ASPNET. شامل مدل برنامهنویسی فرمهای وب است كه بوسیلة آن برنامههای تحت وب ساخته شده و تحت اینترنت قابلیت اجرا پیدا كرده و از طریق مرورگر(Browser) قابل دسترسی میباشند. این روش مدل بهبود یافته برنامهسازی وب است كه در آن كدها در سرور كامپایل میشوند ولی همانند صفحات HTML در كامپیوتر مشتری اجرا میشوند.
سرویسهای وب، رهیافتی جدید، مستقل از platform و استاندارد، جهت ایجاد ارتباط و فعالیت بین سیستمهای ناهمگون در اینترنت، میباشند. سرویسهای وبNET.، از زیر ساخت شیگرایی برنامهنویسی ASPNET. استفاده میكنند، اما همچنان از استانداردهای باز و مدلی بر پایة پیغام(Message Based Model) استفاده مینمایند. استفاده از استانداردهای باز از قبیل XML، WSDL و UDDI باعث میشوند تا سرویسهای وب با سایر سرویسهای وب استاندارد كه پیادهسازیهایی متفاوت دارند، بدون توجه به محیط و platform آنها، ارتباط برقرار نمایند.
این چند نمونه، اندكی از انواع مختلف نرمافزارهایی بودند كه میتوان تحتNET. به پیادهسازی آنها پرداخت.
كتابخانههای كلاسهای پایه(Base Class Library: BCL)
BCL درNET.، شامل هزاران نوع قابل استفاده، جهت افزایش بهرهوری در ساخت برنامههایNET. است. به علت گستردگی BCL یادگیری تمام كلاسهای آن وقتگیر بوده و امكان پذیر نمیباشد، به همین دلیل برای صرفهجویی در زمان بهتر است قبل از ایجاد یك نوع خاص به جستجوی نوعهای موجود در BCL بپردازیم. نگاهی كلی به BCL میتواند بسیار سودمند باشد. جدول زیر Namespace های مهم و توضیح نوعهای مختلف BCL را نمایش میدهد.
NET. Namespaces |
|
Namespace |
Description |
System |
The most commonly used types. |
System.CodeDom |
Allows creating types that automate working with source code, that is, compilers and code creation tools. |
System.Collections |
Collection types such as ArrayList, Hashtable, and Stack. |
System.ComponentModel |
Supports building reusable components. |
System.Configuration |
Types for working with various kinds of XML configuration files. |
System.Data |
Most of the types for ADONET. database programming. Other types are in namespaces that are specific to a database or data interface. |
System.Diagnostics |
Process, EventLog, and Performance Counter types. |
System.DirectoryServices |
Managed interface for accessing Windows Active Directory Services. |
System.Drawing |
GDI+ types. |
System.EnterpriseServices |
COM+ types. |
System.Globalization |
Types for culture-specific support of calendars, formatting, and languages. |
System.IO |
Directory, File, and Stream types. |
System.Management |
APIs for performing WMI tasks. |
System.Messaging |
Types for working with message queues. |
SystemNET. |
Access to networking protocol types. |
System.Reflection |
Reflection APIs for inspecting assembly metadata. |
System.Resources |
Types for culture-specific resource management. |
System.Runtime |
COM Interop, Remoting, and Serialization support. |
System.Security |
Code access security, role-based security, and cryptography types. |
System.ServiceProcess |
Types for building Windows Services. |
System.Text |
Text encoding/decoding, byte array from/to string translation, the StringBuilder class, and regular expressions. |
System.Timers |
Timer types. |
System.Threading |
Threads and synchronization types. |
System.Web |
HTTP Communications, ASPNET., and Web Services types. |
System.Windows |
Windows Forms types. |
System.XML |
All XML support types, including XML Schema, XmlTextReaders/XmlTextWriters, XPath, XML Serialization, and XSLT. |
جدول 1-1 Namespaceهای مهم و رایج
هر Namespace مجموعهای از كلاسهای از پیس ساخته شدةNET. است كه میتوان از آنها در برنامههای مختلف استفاده نمود.
(Common Language Runtime)CLR
CLR یك موتور اجرایی است كه با هدف اصلی اجرای هدایت شدة كدها درNET. ایجاد گردیده است. CLR به مدیریت اجرا، ارتقای نسخه و امنیت تمامی كدها درNET. میپردازد. به همین دلیل كدهایNET. یا C# اغلب تحت عنوان كدهای مدیریت شده، شناخته میشوند.(Managed Code) تمامی كدهایی كه به CLR مرتبت هستند، تحت عنوان "مدیریت شده" و كدهایی توسط CLR مدیریت نشدهاند، بلكه مستقیماً به كد ماشین تبدیل میشوند، تحت عنوان "مدیریت نشده" بیان میشوند.
كدهای مدیریت شده، به كد ماشین كامپایل نمیشوند، بلكه به زبان سطح میانی مایكروسافت(MSIL) كامپایل شده و مورد استفاده قرار میگیرند. این زبان سطح میانی را میتوان زبانی شبیه به زبان اسمبلی تصور كرد. IL در حافظه بارگذاری میشود و بلافاصله بوسیلة CLR در حافظه به كد ماشین كامپایل میگردد.
برنامههایNET. از اسمبلیهایی تشكیل شدهاند كه اجزای خودكار منطقی توسعه، شناسایی و امنیت به حساب میآیند و تفاوت آنها با روشهای قدیمی در آن است كه اسمبلی میتواند شامل یك یا چندین فایل باشد. اسمبلیNET. به صورت یك فایل اجرایی تك یا یك فایل كتابخانهای است، اما ممكن است حاوی ماژولها، كه كدهایی غیر اجرایی بوده و قابلیت استفادة مجدد را دارند، نیز باشد.
مسئلة مهم دیگر در مورد CLR، نحوة بارگذاری(Load) و اجرای برنامه توسط آن است. به محض اینكه برنامةNET. شروع به اجرا میكند، ویندوز اسمبلیNET. راتشخیص داده و CLR را اجرا میكند. سپس CLR نقطه شروع برنامه را شناسایی و پروسة تعیین انواع كه در آن، محل قرارگیری انواع مختلف بكار رفته در برنامه مشخص میشود را، اجرا میكند. اسمبلی شناسایی شده در پروسة Loader بارگذاری میگردد.