دات نت محیطی جدید بمنظور طراحی، پیاده سازی و اجرای برنامه های کامپیوتری را در اختیار طراحان و پیاده کنندگان نرم افزار قرار می دهد.
با استفاده از پلات فرم فوق ، می توان بسرعت اقدام به پیاده سازی نرم افزار نمود.
برنامه های تولیده شده ، امکان استفاده از پتانسیل های محیط
( Common Language Runtime CLR ) را خواهند داشت .
آشنائی با مفاهیم اولیه برنامه نویسی در محیط فوق ، دارای اهمیت خاص خود بوده و سرعت در استفاده مطلوب از محیط فوق ، را بدنبال خواهد داشت .
در مقالاتی که در این زمینه ارائه خواهد شد به بررسی مفاهیم اولیه برنامه نویسی محیط فوق ، خواهیم پرداخت .
در این راستا ، در ابتدا با نحوه نوشتن یک برنامه آشنا و در ادامه به تشریح برخی از مفاهیم مهم در این زمینه ، خواهیم پرداخت .
نوشتن یک برنامه در فریمورک دات نت
تمامی زبانهای حمایت شده در دات نت ، از سیستم نوع یکسان ، کتابخانه کلا س فریمورک مشابه و CLR استفاده خواهند کرد .
بدین ترتیب، تمامی برنامه های نوشته شده با یکی از زبانهای حمایت شده ، خصایص مشابهی را به اشتراک می گذارند.
شاید مهمترین تفاوت قابل توجه در رابطه با زبان های برنامه نویسی حمایت شده در دات نت ، به گرامر هر یک از آنها برگردد .
( در مثال هائی که در این مقاله ذکر می گردد ، از ویرایشگر Notepad ،در مقابل ویژوال استودیو دات نت، استفاده شده است .
مثال های ارائه شده به اندازه کافی ساده بوده تا بتوان بکمک آنان با فرآیندهای ترجمه و اجراء ، بسرعت آشنا گردید ).
نوشتن یک برنامه
برای نوشتن یک برنامه ساده در دات نت ، مراحل زیر را دنبال می نمائیم :
• فاز اول : ایجاد برنامه
برنامه Notepad را فعال و پس از درج کدهای زیر آن را با نام Hello.vb ، ذخیره نمائید .
• فاز دوم : ترجمه و ایجاد یک فایل اجرائی
برای اجراء برنامه ایجاد شده در مرحله قبل ، در ابتدا کمپایلر VB.NET را از طریق خط دستور و بصورت زیر فعال می نمائیم : ( دستور فوق را می توان از طریق خط دستور ویندوز و یا خط دستور موجود در ویژوال استودیو ، فعال کرد )
در ادامه و پس از ایجاد فایل اجرائی (hello.exe ) ، امکان اجرای برنامه فراهم می گردد.
استفاده از Namespace
با استفاده از VB.NET ، می توان به کلاس ها مراجعه و از آنان استفاده کرد .
در مثال زیر ، یک نمونه از کلاس System.Io.FileStream ، ایجاد شده است .
مراجعه به Namespace های مورد نیاز در یک برنامه روشی مناسبتر در این زمینه است .
با استفاده از namespace ، ضرورتی به توصیف تمامی مراجعات به کتابخاته کلاس ، وجود نخواهد داشت .
مثلا" برای دستیابی به اشیاء System ، می بایست از Namespace با نام System در برنامه استفاده گردد.
( Imports) .
تعریف namespace و کلاس VB.NET ، امکانات حمایتی لازم در خصوص ایجاد Namespace های خاص و کلاس های مربوط به آن را ارائه می نماید.
(نکته : مدل زیر یک روش عمومی برای نامگذاری namespace است ) : namespace در VB.NET در VB.NET با استفاده از عبارت namespace می توان یک namespace را تعریف کرد .
با استفاده از namespace تعریف شده ، امکان کپسوله نمودن کلاس های ایجاد شده ، فراهم خواهد شد.
برخی از ویژگی های namespace عبارتند از : namespace می تواند درون سایر namespace ها ، مستقر گردند .
یک namespace می تواند در چندین فایل تعریف گردد .
یک فایل حاوی کد مبداء می تواند چندین namespace را تعریف نماید.
نقاط ورود ، حوزه ، تعاریف هر برنامه اجرائی می بایست شامل یک نقطه ورود خارجی باشد .
مکان فوق ، محلی را که برنامه اجرای خود را از آنجا آغاز می نماید ، مشخص می نماید..در VB.NET تمامی کد می بایست در متدهای یک کلاس قرار بگیرد.
نقاط ورود در VB.NET بمنظور ارائه کد نقطه ورود در VB.NET ، در ابتدا می بایست یک ماژول و یا یک کلاس مشخص گردد .
در ادامه می بایست نقطه ورود برای برنامه ، مشخص گردد.
نقطه ورود ، می بایست بعنوان یک متد عمومی که main نامیده می شود ، در نظر گرفته شود.( کمپایلر به دانش فوق نیاز خواهد داشت ) .
در یک کلاس ، متد فوق می بایست بصورت اشتراکی تعریف گردد .امکان تعریف متد فوق در یک ماژول بصورت اشتراکی ، وجود نخواهد داشت .
نحوه تعریف ( مشخص نمودن ) نقاط ورود برای یک ماژول و یا یک کلاس ، بصورت زیر است : حوزه VB.NET ، از نقطه بعنوان یک عملگر resolution حوزه ، استفاده می نماید .
مثلا" در صورت استفاده از متد WriteLine مربوط به کلاس Console ، از گرامر Console.WriteLine ، استفاده می شود.
تعاریف در VB.NET ، الزامی به تعریف یک متغیر قبل از استفاده از آن نمی باشد .
پیشنهاد می گردد که در چنین مواردی متغیرها با صراحت تعریف گردند.
در این راستا می توان از عبارت options ، استفاده کرد.
بمنظور ایجاد نمونه ای از یک شی ، از New استفاده می گردد.
مثال زیر ، نحوه تعریف یک شی از نوع Comp در namespace با نام Lib و با نام MyComp را نشان می دهد .
کنسول ورودی و خروجی می توان از کلاس Console ، مربوط به CLR وابسته به System Namespace ، برای ورودی و خروجی هر نوع رشته و مقادیر عددی توسط متدهای Read , ReadLine و Write,WriteLine استفاده کرد .
برنامه زیر، نحوه نمایش یک رشته در خروجی را نشان می دهد .
ترجمه و اجراء یک برنامه فریمورک دات نت اکثر جنبه های برنامه نویسی در دات نت برای تمامی زبانهای سازگار ، یکسان است .
هر کمپایلر حمایت شده باعث تولید کدهای "خود تشریح " MSIL)Microsoft Intermediate Language) ، می گردد .
تمامی کدهای مدیریت یافته ( Managed code ) با استفاده از CLR(Common Language runtime) ، اجراء خواهند شد .
CLR ، امکان یکپارچگی بین برنامه ها ، مدیریت اتوماتیک حافظه ، برخورد یکدست با موارد خاص و استثناء ، امنیت پیشرفته و در نهایت یک مدل برنامه نویسی ساده و همگن را ارائه می نماید.
گزینه های کمپایلر فریمورک دات نت، دارای یک کمپایلر خط دستوری برای VB.NET است ( vbc.exe ) .
برای ترجمه برنامه Hello.vb ، بکمک کمپایلر فوق ، از دستور زیر استفاده می شود : گرامر فوق، باعث فراخوانی کمپایلر VB.NET می گردد.
در این مثال خاص، صرفا" نام فایل مورد نظر برای کمپایلر مشخص شده و در ادامه ، کمپایلر فایل اجرائی را تولید خواهد کرد ( Hello.exe ) گزینه های خط دستور در VB.NET ، می توان لیست کاملی از گزینه های همراه کمپایلر را با استفاده از ?/ ، مشاهده نمود ( ?/ Vbc ) .
از گزینه های مفید در این زمینه، می توان به سوئیچ out/ ، ( نام فایل خروجی را مشخص می نماید) و سوئیچ target/ ، ( نوع کد مقصد را مشخص می نماید") ، اشاره کرد.
بصورت پیش فرض ، نام فایل خروجی مشابه نام فایل ورودی و با انشعاب exe .
، خواهد بود.
مقدار پیش فرض برای تعیین نوع کد مقصد ، یک برنامه اجرائی است ( سوئیچ t/ ، دارای عملکردی معادل با سوئیچ target/ است ).
دستور زیر نحوه استفاده از سوئیچ های فوق را نشان می دهد : استفاده از گزینه کمپایل reference/ در زمان مراجعه به سایر اسمبلی ها ، می بایست از سوئیچ reference/ ، استفاده گردد .
گزینه فوق این امکان را برای کمپایلر فراهم می آورد که اطلاعاتی را ایجاد و در کتابخانه های مشخص شده استقرار تا زمینه استفاده از آنان برای کد مورد نظر ( در حال ترجمه ) ، فراهم گردد.
مثال زیر نحوه ایجاد یک برنامه اجرائی از طریق خط دستور و با استفاده از reference / ، را نشان می دهد .
( عملکرد سوئیچ r / مشابه reference / است ).
در بخش دوم این مقاله به بررسی فرآیند اجراء مدیریت یافته ( اداره شده ) ، خواهیم پرداخت .
مفاهیم اولیه برنامه نویسی در دات نت ( بخش دوم ) در بخش اول این مقاله به بررسی یک برنامه نمونه ساده دات نت پرداخته شد و از این رهگذر با برخی مفاهیم اولیه و در عین حال مهم برنامه نویسی در دات نت آشنا شدیم .
در بخش دوم این مقاله به بررسی فرآیند اجراء پرداخته و بدنبال آن با برخی دیگر از مفاهیم اساسی برنامه نویسی در دات نت آشنا خواهیم شد .
در فریمورک دات نت ، CLR زیر ساخت لازم برای یک محیط اجراء مدیریت یافته ( اداره شده ) را فراهم می نماید .
در زمان پیاده سازی یک برنامه در فریمورک دات نت ، برنامه مورد نظر می تواند با استفاده از هر یک از زبان های سازگار با CLR ، نوشته گردد.
کمپایلر استفاده شده ، کدها را به مقصد CLR ، ترجمه می نماید .
پس از فرآیند ترجمه کد نوشته شده ، یک ماژول مدیریت یافته( اداره شده ) ایجاد خواهد شد.
ماژول فوق، در فایلی که PE)Portable Executable) ، نامیده می شود، قرار گرفته و شامل اطلاعات زیر خواهد بود : MSIL)Microsoft Intermediate Language) ، کمپایلر کد نوشته شده را به MSIL ترجمه می نماید .
کد فوق ، مجموعه ای از دستورالعمل های مستقل از نوع پردازنده بوده و در ادامه با توجه به نوع پردازشگر به کدهای مختص ماشین تبدیل می گردند.
Type metadata .اطلاعات فوق ، نوع ها ، اعضاء و سایر مراجع استفاده شده توسط CLR در زمان اجراء را بطور کامل تشریح خواهد کرد.
مجموعه ای از سایر منابع .
منابع فوق ، شامل موارد متععدی نظیر فایل های Jpg .
و یا Bmp .
، می باشند .
اگر در زمان استفاده از کمپایلر ویژوال بیسیک از سوئیچ target / ، استفاده و مقدار آن Exe و یا Library در نظر گرفته شود ، کمپایلر یک ماژول اجرائی را تولید که یک اسمبلی (Assembly ) خواهد بود.
اسمبلی ها بخش ضروری و اساسی برنامه نویسی در فریمورک دات نت بوده و CLR از آنان بعنوان واحدهای پایه و بمنظور اشتراک ، بکارگیری امنیت و ورژن های متفاوت، استفاده می نماید.
CLR دات نت ، صرفا" کدهای MSIL را که در یک اسمبلی موجود می باشند ، اجراء خواهد کرد .
در صورتیکه بهمراه سوئیچ target / (در کمپایلر ویژوال بیسیک ) ، از Module استفاده شود ، کمپایلر یک ماژول مدیریت یافته را تولید که یک اسمبلی نخواهد بود .ماژول تولیده شده ، شامل یک مانیفست نبوده و نمی تواند توسط CLR ، اجراء گردد.
یک ماژول مدیریت یافته را می توان به یک اسمبلی و از طریق استفاده از کمپایلر ویژوال بیسیک و یا با استفاده از Assembly Linker) Al.exe) اضافه نمود.
در ادامه به تشریح MSIL ، متادیتا و اسمبلی خواهیم پرداخت .
کد اجرائی در زمان اجرای یک برنامه مدیریت یافته ، لودر سیستم عامل ، CLR را در حافظه مستقر و در ادامه زمینه اجرای کد MSIL ماژول های مدیریت یافته ، فراهم می گردد.
با توجه به اینکه پردازنده میزبان در مقطع کنونی ، قادر به اجرای مستقیم دستورالعمل های MSIL نخواهد بود، CLR ، می بایست در ابتدا دستورالعمل های MSIL را به کد مختص ماشین و با توجه به نوع پردازنده ، تبدیل نماید .
CLR ، تمام کدهای MSIL را به دستورالعمل های مستقل از پردازنده در زمان لود ، ترجمه نخواهد کرد .
در مقابل، CLR در زمان فراخوانی هر یک از توابع ، دستورالعمل های مربوطه را به کد مختص پردازنده تبدیل خواهد کرد.MSIL ، صرفا" در زمان مورد نیاز، ترجمه خواهد شد .
عناصر CLR که مسئولیت انجام عملیات فوق را برعهده دارند، کمپایلر JIT)Just in Time) ، نامیده می شود .
ترجمه JIT ، باعث صرفه جوئی حافظه و زمان در حین مقداردهی اولیه برنامه می گردد .
Appliaction Domain سیستم عامل و محیط های اجراء نوع های خاصی از ایزولاسیون ( تمایز) بین برنامه ها را ارائه می نمایند .
با ارائه سرویس فوق ، این اطمینان بوجود خواهد آمد که یک برنامه در حال اجراء قادر به تاثیر منفی بر سایر برنامه ها ی غیر مرتبط ، نخواهد بود .
ویژگی فوق ، یک واحد ایمن و چندکاره پردازش را ارائه نموده و CLR بر اساس آن قادر به ایزولاسیون بین برنامه ها خواهد بود.
حوزه های برنامه ، عموما" توسط میزبانان زمان اجراء که مسئولیت فعال نمودن CLR قبل از اجرای برنامه ها را برعهده دارند ، فراهم می گردد.
متادیتا هر کمپایلر که مقصد آن CLR است ، نیازمند توزیع ( انتشار) کامل متادیتا در هر یک از ماژول های مدیریت یافته است .متا دیتا ، مجموعه ای از جداول داده بوده که بصورت کامل هر یک از عناصر تعریف شده در یک ماژول را تشریح می نماید .اطلاعات فوق ، شامل نوع داده ، اعضاء بهمراه تعاریف مربوطه ، پیاده سازی و مراجعه به سایر نوع ها و اعضاء باشد .
متادیتا ، تمامی اطلاعات موردنیازبرای ارتباط عناصر نرم افزاری تولیده شده را در اختیار CLR قرار خواهد داد .رویکرد فوق ، جایگزینی مناسب برای تمامی تکنولوژی های قدیمی نظیر: IDL)Interface Defination Language) ، کتابخانه های نوع و ثبت خارجی ( External registration ) ، می باشد.
متا دیتا همواره در یک فایل exe .
و یا dll .
، حضور داشته و شامل کد MSIL است .
بنابراین ، امکان تفکیک متادیتا از کد MSIL وجود نخواهد داشت .با توجه به اینکه متادیتا در یک مستقل از یک زبان برنامه نویسی خاص بوده و در یک محل مرکزی نظیر ریجستری ویندوز ذخیره نمی شوند ، امکان تشریح اتوماتیک برنامه های دات نت ، فراهم می گردد.
متادیتا دارای کاربردهای متعددی است که مهمترین آنها عبارتند از : مکان یابی و لود کلاس ها .
با توجه به اینکه متا دیتا و MSIL در یک فایل مشابه قرار دارند ، تمام اطلاعات موجود در این فایل برای CLR ، در زمان ترجمه قابل استفاده بوده و ضرورتی به استفاده از فایل های هدر(header) وجود نخواهد داشت ( تمام نوع ها در هر اسمبلی توسط مانیفست مربوطه اسمبلی ، تشریح می گردند ).
تاکید امنیت .
متا دیتا ، می تواند شامل مجوزهای لازم بمنظور اجراء کد باشد ( البته عکس عبارت فوق نیز ممکن است وجود داشته باشد ، یعنی متا دیتا می تواند شامل مجوزهای لازم بمنظور اجراء کد نباشد ) .
سیستم امنیتی از مجوزها استفاده تا باعث ممانعت کد از دستیابی به منابعی گردد که مجوز لازم برای دستیابی به آنان وجود ندارد MSIL MSIL مایکروسافت که در برخی حالات Managed code نامیده می شود ، دستورالعمل هایی می باشند کمپایلرآنها را در زمان ترجمه کد اولیه ، تولید می نماید.
صرفنظر از سازماندهی منطقی آنان ، اکثر اسمبلی ها شامل کدهائی با فرمت MSIL می باشند .
MSIL یک زبان ماشین مستقل از پردازنده بوده که توسط مایکروسافت و مشاوره با سایر تولیدکنندگان کمپایلر، ایجاد شده است .
MSIL یک زبان بمراتب سطح بالاتر نسبت به اکثر زبان های ماشین است .
MSIL شامل دستورالعمل های لازم برای عملیات متداولی نظیر : دستوراتی برای ایجاد ، مقداردهی و صدا زدن متدهای مربوط به یک شی ( اشیاء ) ، دستورات لازم برای عملیات منطقی جاری ، Control Flow ,DMA و Exception handling می باشد .
قبل از اینکه کد MSIL قادر به اجراء گردد ، می بایست به کد مختص یک پردازنده خاص توسط یک کمپایلر JIT ، تبدیل گردد.
CLR ، یک کمپایلر JIT با معماری خاص برای هر نوع معماری پردازنده ، ارائه می نماید .
کمپایلرهای JIT مبتنی بر یک معماری خاص ، امکان نوشتن کد مدیریت یافته را فراهم تا در ادامه و بکمک آن امکان ترجمه و تولید کد وابسته به یک معماری خاص فراهم و در نهایت زمینه اجراء کد نوشته شده ، فراهم گردد.(هر کد مدیریت یافته که API مختص یک سیستم عامل و یا کتابخانه ها را استفاده می نماید ، صرفا" قادر به اجراء بر روی سیستم های عامل خاصی خواهد بود ) .
اسمبلی ها یکی دیگر از عملیاتی که CLR ، انجام می دهد لود و اجرای برنامه های دات نت است .
برنامه های دات نت بعنوان اسمبلی بکار گرفته می شوند .
اسمبلی شامل یک و یا چندین فایل EXE و یا DLL بهمراه اطلاعات متا دیتا است .
متا دیتا مربوط به تمام اسمبلی در مانیفست اسمبلی ذخیره می گردد .
CLR ، از اسمبلی بعنوان واحدهای عملیاتی جهت اشتراک و استفاده مجدد استفاده می نماید.
یک اسمبلی ، واحد بکارگیری کلاس است ( در مقایسه با یک Dll منطقی ) هر اسمبلی شامل تمامی فایل های فیزیکی است که واحد اجرائی ( عملیاتی ) را تشکیل خواهد داد ( ماژول مدیریت یافته ، منابع ، فایل های داده ) .
از لحاظ مفهومی ، اسمبلی ، روشی را بمنظور مشاهده مجموعه ای از فایل ها بعنوان یک موجودیت ، فراهم می نماید.
استفاده از اسمبلی ها بمنظور ایجاد یک برنامه ، یک باید است .
در این راستا می توان ، نحوه بسته بندی اسمبلی ها بمنظور استفاده را انتخاب کرد.
مانیفیست اسمبلی ( Assembly Manifest ) یک اسمبلی شامل بلاکی از داده ها است که "مانیفست " ، نامیده می شود .
مانیفست ، جدولی است که هر entry آن نام یک فایل بوده و بعنوان بخشی از اسمبلی در نظر گرفته خواهد شد.مانیفست شامل متا دیتا ئی است که بمنظور مشخص نمودن ملزومات ورژن ، یکسان سازی امنیت ، و سایر اطلاعاتی مورد نیازی است که از آنان بمنظور تعریف حوزه اسمبلی و مراجع لازم بمنظور دستیابی و استفاده از منابع ها و کلاس ها ، استفاده می گردد.
با توجه به اینکه متادیتا باعث می شود که یک اسمبلی دارای ویژگی خود تشریحی گردد ، CLR همواره دارای اطلاعات مورد نیاز در رابطه با اسمبلی بمنظور اجراء آن خواهد بود .
تمامی برنامه ها که توسط CLR اجراء می گردند ، می بایست ترکیبی از یک و یا چندین اسمبلی باشند .
تمام فایل هائی که یک اسمبلی را ایجاد می نمایند در مانیفست اسمبلی لیست می گردند .
مانیفست ، قادر به ذخیره شدن در یک و یا چندین فایل است: اسمبلی های تک فایل ( Single-file) .
اگر اسمبلی صرفا" دارای یک فایل مرتبط باشد ، مانیفست همرا ه و مرتبط با فایل PE ، خواهد بود .
اسمبلی های چند فایل ( Multi-file ) ، اگر اسمبلی دارای بیش از یک فایل مرتبط باشد ، مانیفست می تواند بصورت یک فایل stand alone بوده و یا در یکی از فایل های PE در اسمبلی مستقر گردد.
ابزارهای CLR CLR ، در رابطه با تست و اشکال زدائی کد MSIL دو ابزار را ارائه می نماید: اسمبلر MSIL .
اسمبلر MSIL ( فایل ILasm.exe ) کد MSIL را بعنوان ورودی اخذ و یک فایل PE شامل نمایش باینری کد MSIL بهمراه متا دیتا مورد نیاز را تولید می نماید .
گرامر استفاده بصورت زیر است: برنامه MSIL Disassembler .
با استفاده از برنامه فوق ( فایل ILdasm.exe ) می توان بررسی لازم در خصوص متدیتا و کد disassembled هر یک از ماژول های مدیریت یافته را انجام داد .
استفاده از برنامه ILdasm.exe برنامه ILDASM ، قادر به نمایش متادیتا و دستورالعمل های MSIL مرتبط با کد دات نت است .
ابزار فوق ، بمنظور اشکال زدائی و افزایش شناخت شما نسبت به زیر ساخت دات نت بسیار مفید است .
برنامه زیر ، کد نوشته شده به زبان ویژوال بیسیک را بمنظور نمایش یک عبارت ساده در خروجی نشان می دهد .
مرحله اول : در برنامه ویژوال استودیو دات نت و از طریق خط دستور برنامه Welcome.exe را فعال می نمائیم :( ildasm Welcome.exe ) .
پس از باز نمودن آیکون MainApp ، رابط کاربر گرافیکی Disassembler اطلاعاتی را در رابطه با فایل Welcome.exe نمایش خواهد داد.
مرحله دوم : نمایش محتویات مانیفست .
بر روی MANIFEST کلیک نموده و در ادامه شاهد نمایش پنجره MANIFEST خواهیم بود.
در بخش سوم این مقاله به بررسی کمپایلر JIT و سایر موارد در ارتباط با برنامه نویسی دات نت ، خواهیم پرداخت .
مبانی دا ت نت ( بخش اول ) دات نت ، پلات فرم جدید ماکروسافت بمنظور تحقق نظریه : " نرم افزار بعنوان سرویس " ، است .
دات نت یک محیط پیاده سازی است که بکمک آن می توان اقدام به ایجاد و بکارگیری نرم افزار و نسل جدیدی از عناصر موسوم به " سرویس های وب " ، نمود.
تمامی محصولات اصلی ماکروسافت از ویژوال استودیو دات نت تا ویندوز و نهایتا" مجموعه آفیس ، متاثر از پلات فرم فوق شده و خواهند شد .
دات نت به پیاده کنندگان این امکان را خواهد داد که با زبان برنامه نویسی مورد علاقه خود ، اقدام به پیاده سازی برنامه ها نمایند.
ویژگی ( پتانسیل ) فوق از طریق معرفی CLR)Common Language Runtime )، میسر شده است .
در این مقاله قصد داریم به بررسی دات نت پرداخته و پتانسیل ها و قابلیت های آن را تشریح نمائیم .
در جولای سال 2000 ، شرکت ماکروسافت در کنفرانس پیاده کنندگان حرفه ای (PDC ) ، در شهر Orlando ایالت کالیفرنیا ، جزئیات بیشتری از نسل جدید پلات فرم خود ( دات نت ) بمنظور پیاده سازی برنامه های ویندوز و اینترنت را در اختیار علاقه مندان خصوصا" پیاده کنندگان نرم افزار قرار داد .
محوریت ابتکار فوق ، بر فریمورک دات نت استواربوده ونشاندهنده یک پلات فرم مناسب بهمراه کتابخانه های کلاس گسترده ای است که پتانسیل های متعددی را در اختیار قرار می دهد.
یکی از نکات قابل توجه در پلات فرم فوق،استفاده از XML و SOAP بمنظور ارتباط بین نرم افزارها ی موجود در اینترنت ( نرم افزارهای مبتنی بر وب ) ، است .
در این راستا مجموعه ای از محصولات مبتنی بر سرویس دهنده با نام سرویس دهندگان Enterprise دات نت، مطرح که بمنزله نسل جدیدی از محصولات Backoffice ماکروسافت ، می باشند.
فریمورک دات نت ، مدلی کاملا" جدید بمنظور برنامه نویسی و بکارگیری نرم افزار را ارائه نموده است.
"بیل گیتس "، در سخنرانی خود در PDC ، بدین نکته اشاره داشتند که در هر پنج تا شش سال ما شاهد یک تحول عمده در رابطه با پیاده سازی نرم افزار بوده ایم .
آخرین موارد در این زمینه به سوئیچ از DOS به ویندوز در سال 1990 و گذر از پیاده سازی شانزده بیتی به سی و دو بیتی ( از ویندوز widows 3.x به ویندوز NT/95 ) در اواسط دهه 90 میلادی ، است.
با معرفی دات نت در PDC ، پیاده کنندگان آن را معماری مناسبی برای پیاده سازی نرم افزار ( برنامه های Desktop و برنامه های وب ) مشاهده نمودند .
ویژوال استودیو دات نت ، اولین محصول مبتنی بر دات نت ماکروسافت بوده که در سال 2001 در اختیار علاقه مندان قرار گرفت .
اهمیـت دات نت برای ماکروسافت تا بدین حد است که در سال 2001 ، بیش از هشتاد درصد منابع بخش تحقیق و توسعه این شرکت در رابطه با آن صرف شده است .
زبان سی شارپ ، که زبانی جدید برای برنامه نویسی در دات نت است بعنوان زبان استاندارد برای پیاده سازی داخلی در شرکت ماکروسافت پذیرفته شده است .
یک پلات فرم مناسب برای آینده دات نت، اولین پلات فرم طراحی شده از صدر تا ذیل با در نظر گرفتن واقعیتی با نام اینترنت است .
دات نت از یک ماشین مجازی خاص در این زمینه استفاده می نماید .
ماهیت ماشین مجازی فوق ، بگونه ای است که از API ویندوز فاصله و در این رابطه از یک کتابخانه کلاس استفاده می نماید که می توان به جرات این ادعا را داشت که تاکنون نظیر آن ، ایجاد نشده است .
امکان استفاده از زبانهای متعدد برنامه نویسی ، وجود خواهد داشت .معماری دات نت ، امکان ارتباط بین زبانها را بسادگی فراهم خواهد کرد .دات نت ، یک رویکرد جدید در رابطه با پیاده سازی نر م افزار را مطرح نموده است .
نگاه به دات نت ، عمدتا" بصورت سیستم های توزیع شده است.
با استفاده از XML ،امکان اجرای توابع بر روی کامپیوترهای متفاوت یک سازمان ویا جهان فراهم و جلوه ای زیبا در همیاری بمنظور اجرای یک برنامه ، به نمایش در خواهد آمد.
از این منظر ، سیستم ها از سرویس دهندگان تا سیستم های بدون کابل ، قادر به اشتراک پلات فرم عمومی یکسانی خواهند بود .
با استفاده از نسخه های دات نت که برای تمام آنها در دسترس خواهد بود، امکان ارتباط مناسب آنها با یکدیگر فراهم خواهد شد.
دات نت ، بمنظور طراحی و پیاده سازی برنامه های سنتی نیز راهکارها و امکانات مناسبی را ارائه تا از این طریق امکان پیاده سازی و بکارگیری این نوع از نرم افزارها ، بسادگی انجام گیرد .
برخی از تکنولوژی ها ی ارائه شده در دات نت نظیر فرم های ویندوز، تلاشی در این راستا است .
ایده های اولیه از اواخر سال 1995 ، شرکت ماکروسافت توجهی خاص و قابل توجه نسبت به اینترنت نمود .
هدف ماکروسافت در این زمینه پیوند بین پلات فرم ویندوز و اینترنت بود.
ماحصل تلاش ماکروسافت در این زمینه ارائه مدل برنامه نویسی Windiws DNA ، بود .
در این راستا مجموعه ای از ابزارها و تکنولوژی های مبتنی بر اینترنت ، طراحی و ارائه گردید .
ASP ، از اولین تلا ش های ماکروسافت در این زمینه است .
عملا" در این زمینه ( مطرح شدن اسکریپت ها ی مفسری ) یک برگشت به عقب نسبت به پیاده سازی ساختیافته و شی گراء را شاهد بوده ایم .
طراحی ، اشکال زدائی و نگهداری چنین کدهای غیر ساختیافته ای مسائل خاص خود را خواهد داشت .
سایر زبانها نظیر ویژوال بیسیک بصورت موفقیت آمیز در رابطه با برنامه نویسی بر روی اینترنت و پلات فرم ماکروسافت استفاده می گردید ولی اغلب از آن بمنظور ایجاد عناصری که از طریق ASP ، بخدمت گرفته می شدند ، استفاده می گردید .در این رابطه تلاش های اندکی نیز در جهت ایجاد یک اینترفیس مبتنی بر وب بر روی زبان های سنتی نظیر webclasses در VB ، نیز انجام شد ولی هیچکدام از تلاش های فوق ، در سطح گسترده ای مورد استقبال و پذیرش قرار نگرفت .
ماکروسافت در صدد حل آشفتگی های همراه برنامه های ویندوز DNA بود .
ویندوز DNA ، تصویری مناسب از یک معماری Three-Tire و مبتنی بر COM بود که تکنولوژی ASP در لایه Presentation ، اشیاء Bussiness در لایه میانی و یک engine بانک اطلاعاتی رابطه ای در لایه Data ، قرار می گرفت .
مفاهیم همراه DNA ،کامل و بی عیب بود اما در زمان استفاده عملیاتی چالش های خاص خود را بدنبال داشت .
پیاده سازی عناصر COM ، مستلزم یک سطح مناسب از دانش و مهارت است و می بایست زمان زیادی در این رابطه صرف گردد .
بکارگیری نرم افزارهای DNA ، نیز مسائل خاص خود را داشت ( مسائل مربوط به ورژن ، نصب عناصر و عناصری که با آن مرتبط می باشند ) .
بموازات تلاش سایر شرکت ها در رابطه با ارائه راهکارهائی خاص بمنظور پیاده سازی برنامه ها ی وب ، شرکت ماکروسافت در صدد برطرف نمودن محدودیت های مدل برنامه نویسی DNA گردید.
تولد دات نت در اوایل سال 1998 ، گروهی از پیاده کنندگان نرم افزار در ماکروسافت ، کار خود را بر روی نسخه ای جدید از IIS ( نسخه چهار) ، به اتمام رساندند که دارای چندین ویژگی جدید در رابطه با ASP بود .در این راستا ، قابلیت های جدیدی بمنظور پیاده سازی برنامه های وب در ویندوز NT ، فراهم گردید.گروه پیاده کننده دارای ایده های متعددی برای اعمال اصلاحات جدید بودند .
گروه فوق ، کار خود را بر روی یک معماری جدید برای پیاده سازی ایده های مطرح شده ، آغاز نمود .
این پروژه ، NGWS)Netx Generation Window Services) ، نامیده گردید.
پس از ارائه ویژوال استودیو شش ، در اواخر سال 1998 ، تلاش برای ایجاد نسخه ای جدید از ویژوال استودیو در دستور NGWS ، قرار گرفت .
گروه COM+/MTS در مدل پیشنهادی خود از یک Runtime ، عمومی برای تمامی زبانهای استفاده شده در ویژوال استودیو ، استفاده نمودند .
تلاش افراد درگیر در پروژه NGWS ادامه تا در نهایـت ، شرکت ماکروسافت در کنفرانس پیاده کنندگان حرفه ای (PDC) ، دات نت را معرفی نمود.
مروری بر فریمورک دات نت فریمورک دات نت ، تمامی لایه های پیاده سازی نرم افزار را از سطح سیستم عامل به بالا ، تحت پوشش قرار می دهد.
فریمورک فوق، سطحی مناسب وقدرتمند از ارتباط و همبستگی بین تکنولوژی Presentation ، تکنولوژی های Component و تکنولوژی های Data را ارائه می نماید ( نظیر این ارتباط و همبستگی تاکنون در پلات فرم ویندوز مشاهده نشده است) .
معماری فوق ، امکان طراحی و پیاده سازی برنامه های مبتنی بر اینترنت و محیط های Desktop ، را بسادگی فراهم و نیازهای هر گروه از نرم افزارهای فوق را بخوبی جواب می دهد .
اجزای اصلی فریمورک دات نت در شکل زیر نشان داده شده است .
فریمورک دات نت از لایه پائین با عملیاتی نظیر مدیریت حافظه آغاز و بسمت بالا بمنظور ارائه اینترفیس های برنامه ها و کاربران ، دنبال می شود .
در بین لایه ها ، لایه های سیستمی دیگر که هر یک دارای پتانسیل های خاصی برای پیاده کنندگان می باشند ، وجود دارد.
CLR) Common Language Runtime) ، بمنزله قلب فریمورک دات نت محسوب و engine لازم بمنظور ارائه قابلیت های کلیدی را ارائه می نماید .
CLR ، شامل عناصر اساسی دیگری نظیر: (Common Type System (CTS ، است.
علاوه بر مدیریت حافظه ، CLR ، مراجعات به اشیاء و عملیات Garbage Collection را نیز انجام می دهد .
در لایه میانی ، ما شاهد نسل جدیدی از سرویس های استاندارد نظیر ADO.NET و XML می باشیم .سرویس های فوق ، تحت کنترل فریمورک بوده و امکان بکارگیری آنها بصورت جامع و استاندارد در بین تمامی زبانها ، فراهم می گردد .
بالاترین لایه ، شامل اینترفیس های برنامه و کاربر است .
فرم های ویندوز ، روشی جدید بمنظور ایجاد برنامه های Desktop مبتنی بر win32 می باشند.
فرم های وب ، یک رابط کاربر مناسب برای برنامه های مبتنی بر وب را ارائه می نمایند.
سرویس های وب ، مکانیزمی بمنظور ارتباط برنامه ها از طریق اینترنت و با استفاده از SOAP ، می باشد.
سرویس های وب ، قابل مقایسه با عناصر COM و DCOM بوده با این تفاوت مهم که در این راستا از تکنولوژی های متعدد اینترنت ، استفاده می گردد.
فرم های وب و سرویس های وب ، اینترفیس اینترنت دات نت را تشکیل و پیاد ه سازی آنان از طریق بخش دیگری در فریمورک دات نت که ASP.NET ، نامیده می شود ، محقق می گردد .
پتانسیل های موجود در هر لایه فریمورک دات نت ، توسط هر یک از زبان های سازگار با دات نت ، قابل استفاده خواهد بود.
در پایان لازم است به این نکته اشاره گردد که در این رابطه ( فریمورک دات نت ) می توان از اینترفیس های مبتنی بر متن ( کاراکتری) نیز استفاده کرد .
این نوع برنامه ها اصطلاحا" Console Application ، نامیده می شوند .