PDA

View Full Version : مقاله: .:: شناخت اصولی چارچوب .NET ::.



مهران رسا
شنبه 13 مهر 1387, 12:17 عصر
شناخت اصولی چارچوب .NET

این مقاله در چندیدن قسمت مرتبط به هم ارائه خواهد شد .

نویسنده : مهندس فرشاد فکری نجات
ویرایش و تایپ : مهران رسا


مقدمه :

مطالعه و پیگیری این سلسله مقالات که از این پس ارائه خواهند شد، برای دوستان عزیزی که از ابتدا به صورت قدم به قدم قصد ورود به دنیای .NET و .NET Framework را دارند ، یک انتخاب بسیار مناسب و ایده آل است و بطور حتم تحول بسیاری در دنیای برنامه نویسی یک برنامه نویس ایجاد خواهد کرد .
تجربه نشان داده که وارد شدن به یک مبحث جدید ، نیازمند بررسی قدم به قدم و با زبانی بسیار ساده می باشد . بر همین مبنا در این سلسله مقالات ابتدا به بررسی چارچوب دانت می پردازیم .

مهران رسا
شنبه 13 مهر 1387, 12:19 عصر
قسمت اول

از گذشته تا به امروز ، زبان های برنامه نویسی بسیاری تولید شده که همواره برنامه نویسان در انتخاب آنها دچار تردید میگردند . همانطور که در آینده و با مطالعه ادامه مقاله متوجه خواهید شد ، تکنولوژی و چارچوب .NET نیز از زبان های برنامه نویسی بسیاری پشتیبانی می کند و در حقیقت توان و قدرت زبان های برنامه نویسی تحت چارچوب .NET یکسان بوده و از این رهگذر ، طبیعتاً و تا اندازه زیادی ، انتخاب زبان دلخواه تبدیل به امری سلیقه ای شده است . هر چند در صورتی که بدون هیچ آشنایی قبلی به برنامه نویسی ، اخیراً علاقه مند به دنیای برنامه نویسی شده اید و یا حتی اگر برنامه نویس ویژوال بیسیک می باشد ، به احتمال زیاد همگان انتخاب VB.NET را به شما توصیه خواهند کرد . اما اگر پیش از این برنامه نویس زبان هایی مانند C ، C++ و یا Java بوده اید ، ساختار زبان خود را تغییر نداده و از زبان هایی مانند C# و VC++ در چارچوب .NET بهره ببرید .

.NET Framework چیست ؟
بسیاری از افرادی که با کامپیوتر کار می کنند ، به ویژه سطح متوسط به بالا ، از چند سال پیش با تکنولوژی .NET آشنا شده اند و حتی ماهیانه و سالیانه با انبوهی از محصولات نرم افزاری مواجه هستند که این نام را به دنبال خود یدک می کشد . ولی بسیاری از کاربران هنوز شناخت مناسبی نسبت به این تکنولوژی ندارند . در توضیحی مقدماتی باید گفت تکنولوژی دات نت توسط غول بزرگ نرم افزاری (Microsoft) تولید گردید . این تکنولوژی در واقع راه حل (Solution) شرکت Microsoft برای تولید و ایجاد نرم افزار ها برای سیستم عامل های مختلفن (بالاخص ویندوز) بود که با استقبال بسیاز زیاد متخصصین و برنامه نویسان دنیا مواجه شد از همان ابتدای امر ، استفاده از این تکنولوژی و استقبال گسترده از آن توسط سرار برنامه نویسان سراسر جهان صورت گرفت زیرا آنها تولید کنندگان و پدیدآورندگان نرم افزار هستند و دیگران کاربران تنها از محصولاتی که از این تکنولوژی در تولید آنها استفاده شده ، بهره مند می شوند .
به عبارتی با نگاهی ظریف و ریزبینانه میتوان گفت که چارچوب .NET در واقع یک Package و یا بسته نرم افزاری الحاقی می باشد که مانند هر نرم افزار دیگری می توان آن را روی سیستم عامل نصب کرد ولی تفاوت میان این بسته نرم افزاری و بسته های نرم افزاری معمولی دیگر ، از نگاه سیستم عامل وجود دارد . زیرا .NET در واقع ارتباط مستقیمی با سیستم عامل وجود برقرار کرده و بطور مشترک عملیات مدیریت و اجرای برنامه های را به عهده میگیرد . همچنین تفاوت آنها (.NET و سیستم عامل) تنها در این است که سیستم عامل حداقل نرم افزاری است که الزاماً می بایست در یک کامپیوتر جهت مدیریت برنامه ها و اجرای آنها وجود داشته باشد ولی .NET Framework ممکن است در یک نسخه سیستم عامل نصب نشده باشد که در آن صورت برنامه های نوشته شده با .NET در آن سیستم عامل اجرا نخواهد شد . البته این موضوع در نسخه های جدیدتر ویندوز (از XP به بعد) بطوری کامل رفع شده زیرا از این پس ، Microsoft هنگام ارائه سیستم عامل خود،
نسخه جدید .NET را زیر بر روی آن قرار خواهد داد تا کاربران با مشکلاتی از این دست مواجه نشوند.
در همین ابتدای امر توصیه میشود برای اطمینان از نصب نسخه ای از .NET Framework بر روی سیستم عامل خود ، به آدرس WinDrive\Windows مراجعه نمایید در این مسیر پوشه ای به نام Microsoft.NET وجود دارد که درون آن نسخه های مختلفی از Framework قرار گرفته است. در این مسیر متوجه خواهید شد که حداقل یک نسخه از Framework (هر چند قدیمی) در سیستم عامل شما وجود دارد . اما وجود نسخه های مختلف چارچوب .NET در کنار هم نیز امکان پذیر است . به عنوان مثال : ممکن است که نسخه های 1.0 یا 1.1 و 3.5 در پوشه Framework سیستم عامل شما قرار داشته باشد . در همین رابطه قابل ذکر است که اصولاً .NET پس از اجرا در سیستم عامل ، به جستجوی کلاس های و منابع مختص به همان نسخه از Framework پرداخته و وجود یا عدم وجود نسخه های دیگر ، اهمیتی ندارد . بنابراین در قالب یک امتیاز ، با گذشت زمان ، گسترش و تغییر نسخه های .NET Framework ، تاثیری در روند اجرای نرم افزار ها نخواهد داشت .

پایان قسمت اول.

مهران رسا
شنبه 13 مهر 1387, 14:19 عصر
قسمت دوم

تاریخچه
در کنفرانس (Professional Developers Conference) PDC جولای سال 2000 که در شهر های Orlando و Florida برگزار شد ، شرکت Microsoft نسخه 1.0 فناوری .NET را به جهانیان معرفی کرد . قبل از .NET معمولاً از تکنولنوژی Windows DNA استفاده میشد که برنامه نویسان نسخه های قبلی زبان های برنامه نویسی با آن آشنا هستند . در واقع در سیستم قدیمی تر همه چیز بر مبنای COM و برنامه نویسی آن انجام میگرفت . که این نوع برنامه نویسی با مشکلات زیادی مواجه بوده و با سیاست های بلند پروازانه و ایده آل شرکت مایکروسافت هماهنگی نداشت.
نسخه 1.1 این چارچوب در سال 2003 به همراه Visual Studio .NET 2003 ارائه شد و پس از آن نسخه 2.0 آن با تغییراتی مناسب در راستای پیشبرد اهداف این تکنولوژی ، به هوراه VS .NET 2005 ارائه شد .[editor] و تا هم اکنون نسخه 3.5 از این تکنولوژی همراه با Visual Studio .NET 2008 ارائه شده است.

قابلیت های .NET Framework


1 – تغییر در بنیاد کلاس های از طریق FCL

یکی از مهم ترین تغییرات در .NET وجود Component های یکپارچه می باشد . زیرا از این کامپوننت های و یا کلاس ها می توان در هر زبانی مانند C# ، VB.NET ، JAVA و غیره استفاده نمود.
اگر به یاد داشته باشید در مدل برنامه نویس گذشته ، برنامه نویسان از توابع API ، MFC و دیگر امکانات سیستم عامل برای برنامه نویسی استفاده می کردند . اما در این ساختار ، برنامه نویسان با مشکلاتی از جمله تفاوت عملکرد در نسخه های مختلف ویندوز و عدم پیاده سازی برنامه های ویندوز در دیگر سیستم عامل ها ، (مانند Linux) مواجه بودند . از این رو یک مجموعه کامل از کلاس های نوشته شده خود دات نت به نام FCL Library که شامل چند هزار کلاس مفید می باشد ، جایگزین توابع API و کلاس های MFC در ویندوز گردید که با استفاده از این مجموعه کلاس یکپارچه ، برنامه نویسان با هر زبان برنامه نویسی در هر نسخه از سیستم های عامل ویندوز و یا لینوکس ، قادر به ایجاد برنامه های خود هستند .
البته در .NET همچنان API ویندوز پشتیبانی می شود و میتوان از آن استفاده نمود ولی پیشنهاد می شود که برای ایجاد برنامه های قابل حمل (Portable) ، همیشه از کلاس های .NET استفاده نمایید زیرا استفاده از API ها ، برنامه شما را محدود به فعالیت در سیستم عامل ویندوز خواهد نمود . به عنوان مثال پیش از این برای دسترسی به بانک اطلاعاتی می بایست مستقیماً از توابع API و یا توابع داخلی زبان مربوطه استفاده می کردید ، اما برای دسترسی به بانک اطلاعاتی در
.NET یک راه حل جامع و کارآمد توسط تمامی زبان های برنامه نویسی این چارچوب وجود دارد . در واقع برای انجام هر عملی در برنامه نویسی که پیش از این با API ها و COM ها انجام می گرفت ، یک کلاس .NET شبیه سازی شده است که برای آشنایی با کلیه این کلاس های و استفاده از آنها می بایست به مرجع FCL موجود در MSDN مراجعه نمایید .

2 – رعایت دقیق اصول شئی گرا

برنامه نویسان C++ ، جاوا و ... ، با اصول OOP (Object Oriented Programming) ، که اصولی را برای تولید برنامه مطرح می کند ، به خوبی آشنایی دارند . اصول برنامه نویسی شئی گرا یکی از تکنیک هایی است که یک برنامه را با قوائد خاصی قانونمند و توانمند خواهد کرد . تا پیش از این و در نسل های گذشته زبان های برنامه نویسی ، استفاده از شئی گرایی تقریباً امری دلخواه بوده و برنامه نویسان به دلخواه و تمایل خود قادر به ایجاداینگونه برنامه های بودند . اما چارچوب .NET به گون ای طراحی شده تا تمامی زبان های برنامه نویسی تحت پوشش آن ، برای نوشتن کوچکترین برنامه ، الزاماً از روش OOP استفاده نمایند .

پایان قسمت دوم .

مهران رسا
دوشنبه 15 مهر 1387, 23:07 عصر
قسمت سوم

قابلیت های .NET Framework

3 - Garbage Collection (زباله جمع کن)

یکی از مزایای بزرگ .NET ، عملیات Garbage Collector (جمع آوری زباله) است . برنامه نویسان قدیمی C++ بخوبی به خاطر دارند که پروسه ایجاد و حذف یک Object در حافظه ، به چه اندازه برنامه نویس را به دردسر می انداخت . زیرا پس از ایجاد هر شئی یک فضای حافظه برای آن در نظر گرفته می شد که پس از خاتمه استفاده از شئی مذکور می بایست بطور دستی فضای مربوطه آزاده شده و شئی را از بین می بردید . در بسیاری از مواقع به دلیل سهل انگاری برنامه نویس ، با عدم حذف فضای حافظه ، برنامه با مشکلات متعددی روبرو می شد . اما در فناوری .NET خود CLR مدیریت حافظه را دست گرفته و به هیچ عنوان نیازی به حذف فضای اشغال شده ، توسط برنامه نویس نبوده و این عمل یکی از وظایف CLR می باشد . به عبارت دیگر CLR به صورت هوشمندانه ای فاضای اختصاص داده شده به تمام اشیایی که هیچ ارجاعی به آنها داده نشده را آزاد خواهد نمود. لازم به ذکر است که این عمل فقط در Managed Code ها انجام میگیرد . و اگر از کد های UnManaged استفاده می کنید ، عمل آزاد سازی حافظه مجدداً توسط خود برنامه نویس انجام خواهد گرفت . توضیحات تکمیلی جهت درک مفهوم کدهای Managed و UnManaged در ادامه همین مقاله مطرح خواهد شد .

4 – Exception Handling (کنترل استثناء)

Exception Handling از دیگر امکانات مناسب و کاربردی .NET می باشد . با استفاده از این تکنیک ، برنامه نویس قادر به کنترل و مدیریت استثنائات و خطاهایی که در حین اجرای برنامه به وجود آمده اند می باشد .در اینصورت برنامه به هنگام برخورد با مشکلاتی مانند خطای تقسیم بر صفر و یا نا توانی در دسترسی به یک Device ، با Error سیستم عامل مواجه نشده و از محیط برنامه خارج نگردیده و با نمایش پیغام مناسبی از طرف برنامه ، به کار خود ادامه می دهد .

5 - Multi Threading (برنامه نویس چند نخی)

از امکانات دیگر .NET عملیات Multi Threading می باشد . Thread به معنای نخ و Multi Thread به معنای چند نخی و در واقع یک اصطلاح برنامه نویسی است . همانطور که می دانید ، مفهمومی به
نام Multi Task و به معنای اجرای همزان چند برنامه ، در سیستم عامل وجود دارد . حال همین تصور از Multi Tasking را به یک برنامه ساده کوچک محدود نمایید . شما به عنوان برنامه نویس در برنامه خود ، با قابلیت Multi Thread قادر به انجام چندین کار و پردازش داخلی برنامه خود بطور همزان خواهید بود .
به عنوان مثال ، در بخشی از برنامه خود و در یک زمان خاص ، ارتباطی با بانک اطلاعاتی برقرار کرده و داده ها را نمایش می دهید و در همان زمان نیز بطور مورازی ، عملیات دیگری را انجام می دهید . در واقع شما به عنوان برنامه نویس قادر به مدیریت زمان و پردازش برنامه خود بطور همزمان خواهید بود.

6 – Type Safe (محافظ نوع)

محافظ نوع و یا Type Safe ، از امکانات قابل توجه دیگری در .NET می باشد که توسط CLR مدیریت می شود . به عنوان مثال اگر متغیر پارامتر ورودی یک تابع 4 بایتی بوده ولی یک مقدار 8 بایتی را به آن ارسال نماییم ، قاعداً با مشکل مواجه خواهیم شد . اما در دانت نت با وجود شرایط مساوی ، CLR تنها مقدار 4 بایت را در اختیار متغیر قرار می دهد تا مقدار ورودی به تابع ، بطور کامل از بین نرود . در واقع این عملیات (محافظت از مقادیر و متغیر ها) ، به نام Type Safe شناخته شده و بدون دخالت برنامه نویس از طریق خود CLR ، انجام میگیرد . البته یک برنامه نویس همیشه می بایست از حجم نوع های داده مطلع بوده و مقادیری مطابق با گنجایش آنها در متغیر های مربوطه قرار دهد.

7 – مفهموم Delegate

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

مهران رسا
پنج شنبه 18 مهر 1387, 00:46 صبح
قسمت چهارم

وضعیت .NET در لینوکس
همانطور که قبلاً به این موضوع اشاره شد . تکنولوژی .NET به گونه ای طراحی شده که قابل اجرا و استفاده در تمامی سیستم عامل ها و کامپیوتر های بوده و بدون توجه به نوع سیستم و ساختار CPU ، قادر به اجرای کدهای مختص آن ماشین می باشد .
پروژه ها .NET در سیستم عامل لینوکس با نام Mono ارائه شده و تمامی ساختار این فناوری ، به علاوه FCL (کتابخانه غنی) آن نیز در این پروژه شبیه سازی شده است . همچنین ابزار بسیار قدرتمندی به نام Mono Develop در لینوکس طراحی شده که IDE این تکنولوژی و رقیب سرسختی برای Visual Studio .NET خواهد بود .

قابلیت Multi Language از طریق CLS
.NET Framework تعداد زیادی از زبان های برنامه نویس را تحت پوشش خود قرار داده که از مهمترین آنها می توان به C# (C Sharp) و VB.NET و VC++.NET و حتی جاوا اشاره نمود .
قابلیت CLS به این مفهوم است که در ایجاد یک پروژه ، برنامه نویس قادر به استفاده از تمامی زبان های برنامه نویس تحت پوشش دات نت و به دلخواه خود خواهد بود . به عنوان مثال بخشی از یک برنامه حسابداری را می توان با C# ئ بخشی دیگر را با VB.NET و دیگر زبان های ایجاد نمود . حتی این امکان مهیا است که خود شما یک کامپایلر برنامه نویس ایجاد کرده (البته با رعایت قوانین CLS) و در کنار دیگر زبان های تحت پوشش دات نت ، بخشی از یک پروژه یکپارچه را تکمیل نمایید . CLS که مخفف Commom Language Specification می باشد , در واقع قوانینی را در جهت یک پارچه کردن و هماهنگی بین زبان های برنامه نویس در .NET تعیین می کند . استفاده از CLS یکی از جالب ترین تکنیک های مورد استفاده در دات نت می باشد . با استفاده از این روش شما به عنوان برنامه نویس ، پس از شناخت نقاط ضعف و قوت هر زبان
برنامه نویسی ، قادر به استفاده از نقاط قوت هر یک از آنها خواهید بود و سپس با شناخت این موضوع ، می توانید برنامه قدرتمندی را ایجاد نمایید . تجربه نشان داده است ، این سبک در برنامه نویسی Team Work (کار گروهی) نیز بسیار موثر می باشد .

مفهوم کد های Managed و Unmanaged
در .NET می توان برنامه هایی را به صورت Managed (مدیریت شده) و Unmanaged (مدریت نشده) ایجاد نمود . اگر برنامه ای کاملاً بر اساس چارچوب .NET نوشته شود و از کلاس های FCL و همینطور قوانین مربوط به آن پیروی نماید ، در واقع این نرم افزار یک برنامه Managed خواهد بود و هنگام اجرا ، توسط CLR مدیریت شده و امنیت آن نیز تامین می گردد . اما گاهی اوقات برنامه نویسان برای دسترسی به امکاناتی که در .NET وجود ندارد ، اقدام به برنامه نوسی خارج از قوانین .NET نموده و از COM های غیر دات نتی و همینطور کلاس های بیرونی (مثلاً COM هایی که با VC++ و یا VB نسخه قدیمی نوشته شده اند) و یا حتی API که توسط .NET پشتیبانی نمی شود استفاده می کنند . که در این صورت برنامه های تولید شده Unmanaged بوده و CLR بطور کامل بر روی مدیریت آنها کنترل مناسبی اعمال نمی کند .
همچنین برنامه های .NET بطور پیش فرض از طریق کدهای Managed ایجاد می شوند . اما در صورت درخواست برنامه نویس ، استفاده از کدهای Unmanaged نیز امکان پذیر خواهد بود . البته بحث در مورد تکنیک های ایجاد کد های Unmanaged و ارتباط بین کدهای مدیریت شده و مدیریت نشده در حوصله این مقاله نبوده و تنها به توضیح مختصر فوق در این رابطه بسنده می کنیم .