مفاهیم تکنولوژی Net.

مقدمه

C# یکی از زبانهای جدید برنامه‌سازی شی‌گرا است که با ارائة رهیافت Component-Based به طراحی و توسعه نرم‌افزار می‌پردازد. آنچه ما در حال حاضر از زبانهای برنامه‌سازی Component-Based در اختیار داریم و آنچه که C# در اختیار ما قرار می‌دهد، افق جدیدی به سوی تولید و طراحی نرم‌افزارهای پیشرفته را در روی ما قرار می‌دهند.

نرم‌افزار، به عنوان یک سرویس، هدف اصلی نسل بعدی در سیستم‌های محاسباتی است. برای مثال، C# زبانی مناسب برای تولید و طراحی صفحات وب، ایجاد اجزایی با قابلیت استفاده مجدد و ایجاد محیط‌هایی چند رسانه‌ای را به عنوان زبانی که هدفش توسعه ایجاد نرم‌افزار‌های پیشرفته است، در اختیار ما قرار می‌دهد.

زبان برنامه‌سازی C#، به همراه تکنولوژی جدید شرکت نرم‌افزاری مایکروسافت یعنی.Net ارائه گردید، از این رو از تکنولوژی .Net این شرکت بهره می‌برد. پس در ابتدا به بیان مطالبی درباره محیط .Net می‌پردازیم.

چرا .Net؟

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

.Net به منظور پشتیبانی از کاربردهای عصر جدید اینترنت ساخته شد. مواردی همچون گسترش، امنیت و versioning، که از مسایل مهممی بودند، توسط .Net پوشش داده شدند. قسمت مرکزی .Net بخش CLR (Common Language Runtime) است که یک موتور اجرایی مجازی است که از توسعه، امنیت و ارتقای نسخه کد پشتیبانی می‌نماید. در گذشته چنین امکاناتی برای کدهای کامپایل شده فراهم نبود. بدلیل اینکه .Net توانست بر این مشکلات اساسی فائق آید، راه حل قدرتمندتری جهت ساخت برنامه‌های تحت اینترنت به شمار می‌رود.

.Net چیست؟

.Net محیطی جهت ساخت برنامه‌های توزیع شده است که شامل ابزارهایی نظیر ""کتابخانه کلاسهای پایه"(BCL : Base Class Library)، CLR و زبانهای برنامه‌نویسی است. این ابزارها امکان ساخت انواع مختلفی از نرم‌افزارها، از قبیل فرمهای ویندوز، ADO.Net، ASP.Net و سرویسهای وب، را فراهم می‌آورند.

فرمهای ویندوز، مجموعه‌ای از کتابخانه‌ها جهت ساخت رابط‌های کاربر گرافیکی برای برنامه‌های کاربردی است. این کتابخانه‌ها اغلب API های Win32 را در خود دارا می‌باشند. همچنین امکان استفاده از رهیافت شی‌گرایی را جهت تولید آسان برنامه‌های تحت ویندوز، فراهم می‌آورند.

ADO.Net مجموعه‌ای از کلاسهای شی‌گرایی است که جهت ساخت مولفه‌های داده و سطوح دسترسی داده در برنامه‌های n-tiered مورد استفاده قرار می‌گیرد.

ASP.Net شامل مدل برنامه‌نویسی فرمهای وب است که بوسیلة آن برنامه‌های تحت وب ساخته شده و تحت اینترنت قابلیت اجرا پیدا کرده و از طریق مرورگر(Browser) قابل دسترسی می‌باشند. این روش مدل بهبود یافته برنامه‌سازی وب است که در آن کدها در سرور کامپایل می‌شوند ولی همانند صفحات HTML در کامپیوتر مشتری اجرا می‌شوند.

سرویسهای وب، رهیافتی جدید، مستقل از platform و استاندار، جهت ایجاد ارتباط و فعالیت بین سیستمهای ناهمگون در اینترنت، می‌باشند. سرویسهای وب .Net، از زیر ساخت شی‌گرایی برنامه‌نویسی ASP.Net استفاده می‌کنند، اما همچنان از استانداردهای باز و مدلی بر پایة پیغام(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 ADO.NET 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.

System.Net

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, ASP.NET, 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 بارگذاری می‌گردد.

شکل 1-1 نحوه مدیریت برنامه‌ها توسط CLR

زبانهای برنامه‌نویسی

قسمت مهم دیگر .Net، پشتیبانی آن از چندین زبان برنامه‌نویسی متفاوت است. IL طوری طراحی شده است که از چندین زبان برنامه‌نویسی پشتیبانی نماید. در حقیقت، هم اکنون ده‌ها زبان برنامه‌نویسی مورد پشتیبانی و پذیرش IL می‌باشند. علاوه بر C#، .Net شامل زبانهایی نظیر Visual Basic، Jscript، J# و C++ نیز می‌باشد. برخی دیگر از زبانهای برنامه‌سازی مهم که بوسیلة IL پشتیبانی می‌شوند عبارتند از : Borland Delphi.Net، Cobol.Net، Fujitsu، Python.Net، Perl.Net و بسیاری دیگر از زبانهای برنامه‌سازی که تحت .Net عمل می‌کنند و بوسیلة آن مورد پذیرش هستند.

عامل اصلی نگهدارندة این زبانها در کنار یکدیگر، (Common Types System)CTS است. اگرچه هر یک از این زبانها نوع‌های خود را در روشهای خاص خود ارائه می‌دهند، رفتار زیرساختی هر یک از آنها نسبت به CLR یکسان است. CTS اعضای یک نوع را مشخص می‌نماید : فیلد، متد، رخداد، ویژگی(Property) و اندیکسر(Indexer).  همچنین سطوح دسترسی به آنها را نیز معین می‌نماید : عمومی(public)، داخلی(internal)، حفاظت شده (protected) ، حفاظت شده داخلی(protected internal) و خصوصی(private). البته باید توجه کرد که مسلماً کلمات کلیدی هر یک از زبانها با سایر زبانها متفاوت است اما ساختار اصلی آنها در CLR یکسان است.

سوال مهمی که در اینجا مطرح می‌گردد، اینست که چرا از چندین زبان استفاده می‌شود؟ برای پاسخ به این سوال توجه شما را به پروژه‌های تجاری عظیم جلب می‌کنم. همانطور که می‌دانید هر پروژه تجاری دارای شرایط و ویژگیهای خاص به خود است و یکی از مهمترین عوامل در تولید و راهبری پروژه‌های امروزی امکان استفادة مجدد از برنامه‌ها است. استفاده از چندین زبان برنامه‌نویسی اولاً می‌تواند نیاز هر نوع پروژه‌ای را طبق خواستهای آن برآورده کند و ثانیاً قابلیت استفادة مجدد را افزایش می‌دهد.

یکی دیگر از مزایای استفاده از چندین زبان برنامه‌نویسی، تجارت بین‌المللی است، بدین معنا که هر شرکت می‌تواند نرم‌افزار و محصول خود را با یکی از زبانهای مورد نظر خود ساخته و بدون نگرانی از عدم همخوانی آن با سایر محصولات به بازار ارایه نماید. پشتیبانی .Net از رنج وسیعی از زبانهای برنامه‌نویسی امکان به اشتراک‌گذاری کدها و استفادة مجدد از برنامه‌ها را به راحتی فراهم کرده و عصر جدیدی را در تولید نرم‌افزار ایجاد نموده است.

 

مزایای پشتیبانی از چندین زبان برنامه‌نویسی

این امکان باعث می‌شود تا هر فرد با توجه به علایق و سوابق کاری خود به برنامه‌نویسی با زبانی خاص بپردازد. بعنوان مثال فرض کنید گروهی مدتها با COBOL برنامه‌نویسی کرده‌اند، حال چون .Net از این زبان نیز پشتیبانی می‌کند، این گروه با صرف مدت زمانی کوتاه می‌توانند به .Net روی‌آورده و از مزایای آن بهره‌مند شوند. از دیگر مزایای چند زیانی استفادة مجدد از مولفه‌ها و اجزای برنامه‌های نوشته شده است.

البته به یک نکته مهم باید توجه کرد، که منظور در این‌جا این نیست که در یک پروژه با چندین زبان شروع به برنامه‌نویسی کنیم، اما با قابلیت .Net می‌توانیم مثلاً dll های نوشته شده به زبان C# را در یک پروژه‌ای که با زبان VB.Net نوشته می‌شود، مورد استفاده قرار دهیم.

در این‌ جا باید به این نکته نیز توجه کرد که همگونی و سازگاری بین دو زبان همیشه بصورت کامل و خودکار صورت نمی‌گیرد و در برخی موارد هر زبان ویژگی‌های خاص خود را دارد که در زبان دیگر قابل اجرا و شناسایی نمی‌باشد. بعنوان مثال، برنامه‌های VB.Net نمی‌توانند با dll های C# که دارای متدهای عمومی هستند و نوع آنها به طور اشاره‌گر(pointer) تعریف شده است، کار نمایند.

"خصوصیات عمومی زبان" یا CLS به منظور حل چنین مشکلاتی طراحی شده است. CLS ویژگی‌های عمومی یک زبان را مشخص می‌کند و تعیین می‌کند که زبانها در صورت نیاز به اشتراک‌گذاری کدها تا چه حدی می‌توانند عمل نمایند. بعنوان مثال، C# برای اینکه بخواهد با CLS همخوانی داشته باشد، نباید اشاره‌گرها و نوع‌های بدون علامت را به صورت عمومی(public) در نظر بگیرد.

 


 

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


منابع این مطلب :

.Net Framework SDK Documentation  Release 1.1 2003

Copyrights © Microsoft 2001-2003

 

Copyrights © 2004-2005 Meysam Ghazvini. Iran. Tehran 

Copyright © 2005 C# Persian (http://csharp-persian.netfirms.com)

  
نویسنده : ali gooliof ; ساعت ٤:٠٠ ‎ب.ظ روز ۱۳۸٧/٢/٦
تگ ها :