راهنمای تبديل برنامههای ويژوال بيسيك 6 به ويژوال بيسيك داتنت
ارسال شده: دوشنبه ۲۵ دی ۱۳۸۵, ۳:۴۹ ب.ظ
نکتهي مهم قبل از ارتقاي پروژه
ويژوال بيسيك داتنت نسبت به نسخههای قبلی ويژوال بيسيك تغییرات زیادی داشته است. چون این نسخه برای بهرهبرداری بیشتر از امکانات چارچوب داتنت طراحی شده، تمامی راههاي حفظ سازگاری با نسخههای قبلی در آن بسته شده است.
نکته: هر دو نسخهي 6 و داتنت ويژوال بيسيك و برنامههاي نوشته شده با اين دو زبان را ميتوان همزمان بدون هیچ مشکلی با هم روی یک کامپیوتر نصب و اجرا كرد. اجزا و کنترلهای ایجاد شده در ويژوال بيسيك داتنت ميتوانند با اجزای COM ایجاد شده در نسخههای قبلی و نیز در سایر زبانها ارتباط برقرار كرده و بدون دردسر با هم کار کنند.
در بيشتر موارد، هدف از ارتقاي یک پروژه به داتنت، برخورداری از امکانات و قابلیتهای موجود در چارچوب داتنت برای توسعهي برنامههاست. با این حال به دلايل مختلفي همچون عدم پشتيباني داتنت از برخي از امكانات مورد نياز و يا دوبارهكاري زياد به دليل عدم سازگاري دو نسخه و ...، مواردی نیز پیش ميآید که طي آن توسعهي یک برنامهي تحت ويژوال بيسيك 6 خيلي باصرفهتر از ارتقاي آن به داتنت خواهد بود.
امکانات فراموش شده
امکاناتی که قبلاً در ويژوال بيسيك 6 وجود داشتند اما در داتنت فعلي حذف شدهاند:
- OLE Container Control: در داتنت کنترلی معادل این کنترل وجود ندارد. به همین دلیل ارتقاي برنامههایی که از این کنترل استفاده ميكنند، ممکن نخواهد بود.
- Dynamic Data Exchange (DDE): متدهای کانال DDE نیز در داتنت پشتیبانی نمیشوند. برنامههایی که شامل این کنترل باشند، یا باید از سایر متدهای مربوط به برقراری ارتباط بین برنامههای مختلف استفاده كنند و یا اینکه اصلاً ارتقا نیابند.
- DAO or RDO Data Binding: اتصال به بانکهای اطلاعاتی با استفاده از این دو کنترل در داتنت حذف شده است. کنترلهای Data و Remote Data در داتنت کنترل معادلی ندارند و استفاده از آنها فقط از طریق کدنویسی امکان دارد. برنامههای متکی به این دو کنترل یا باید از کنترل ADO استفاده کنند تا امکان ارتقاي آنها فراهم شود و یا اینکه از ارتقاي آنها صرفنظر شود.
- Visual Basic 5.0 Controls: در ويژوال بيسيك 6 برای حفظ سازگاری برنامهها با نسخهي 5، از کنترلهای این نسخه همانند کنترلهای رایج ویندوز (Windows Common Controls) و Data-Bound Grid نیز پشتیبانی ميشود. اما اگر قصد ارتقاي برنامههایی را دارید که اینگونه کنترلها در آنها به کار رفته است، یا باید اين برنامهها را با نسخهي 6 بهروز كنيد و یا اینکه آنها را به حال خود رها كرده و از خیر ارتقا بگذرید.
- DHTML Applications: تولید چنین برنامههایی در داتنت امکان ندارند. اما برنامههایی که قبلاً با نسخهي 6 ويژوال بيسيك ایجاد شدهاند، ميتوانند در محیط داتنت اجرا شوند.
- ActiveX Documents: برنامههای مبتنی بر اسناد اکتیوایکس نیز از داتنت حذف شدهاند. این قبیل برنامهها قبل از ارتقا باید با استفاده از کنترلهای کاربر (User Controls) بازنویسی شوند، در غیر این صورت امکان ارتقاي آنها وجود نخواهد داشت.
- Property Pages: این مورد نیز در داتنت وجود ندارد و تغییر آنها در ويژوال بيسيك 6 نیز ممکن نیست، به همین دلیل چنین برنامههایی را نیز نمیتوان ارتقا داد.
لزوم و میزان دوبارهکاری در فرآيند ارتقا
به دلیل وجود تفاوتهای بسیار زیاد بین دو نسخهي مورد بحث ويژوال بيسيك، بيشتر برنامههایی که برای ارتقا انتخاب ميشوند، نیازمند تجدید نظر و تغییراتی هر چند اندک در عناصری هستند که نمیتوانند مستقیماً به داتنت تبدیل شوند و یا اینکه با داتنت سازگاری ندارند، میزان این دوبارهکاریها بستگی به عواملی همچون نوع برنامه، امکانات و ابزارهای مورد استفاده در آن و ساختار زبان برنامهنویسی دارد.
سادهترین راه برای تعیین میزان دوبارهکاری مورد نیاز، اجرای ویزارد ارتقا و مشاهدهي فهرست نتایج گزارش ارتقاست. ویزارد ارتقا برای تبدیل یک برنامه به داتنت، نسخهي جدیدی از روی آن ميسازد و نسخهي قبلی را دست نخورده باقی ميگذارد. پس از مشاهدهي گزارش ارتقا، اگر میزان تغییراتی که باید اعمال شوند بهصرفه نبود، پروژهي جدید را حذف كرده و برنامهنویسی و توسعهي سیستم خود را در همان محیط ويژوال بيسيك 6 ادامه دهید.
در زمان تصمیمگيري براي ارتقاي یک پروژه، حتماً به نکات زیر توجه داشته باشيد:
* Single-tier Database Applications: چون ارتباط با دادهها توسط کنترل DAO در داتنت پشتیبانی نمیشود، برنامههای سادهای که با استفاده از این کنترل به دادههای محلی مانند بانکهای اطلاعاتی ایجاد شده توسط مايكروسافت اَكسس متصل شدهاند، نیاز به دوبارهکاري بیشتری نسبت به سایر برنامهها دارند.
* Visual Basic Add-ins: چون ويژوال بيسيك داتنت از محیط توسعهي یکپارچهي ویژوال استودیو داتنت استفاده ميكند، مدل شیئی قابل توسعهي آن با ويژوال بيسيك 6 تفاوتهای زيادي دارد. به همین دلیل کنترلهای افزودنی Add-ins نیاز به دوبارهکاری قابل توجهی دارند.
* Games: برنامههایی مانند بازیها که در آنها از کاراکترهای انیمشینی ويژوال بيسيك 6 استفاده شده است، نیاز به دوبارهکاری خواهند داشت، زیرا این کاراکترها نیز در داتنت متفاوت هستند.
* Graphics: در داتنت از متدهای طراحی فرم، شکل و یا خط خبری نیست. برنامههایی که در آنها از این متدها زیاد استفاده شده است، نیز نیاز به دوبارهکاری قابل توجهی خواهند داشت.
* Drag and Drop Functionality: مدل توابع مربوط به کشیدن و رها کردن در داتنت تفاوت بسیاری با ويژوال بيسيك 6 دارد. این توابع نیز برای کسب کارایی بهتر نیاز به بازنویسی دارند.
* Variants: زمانی که پروژهای را به داتنت تبدیل ميكنيد، دادههای از نوع واریانت به دادههای شیئ تبدیل ميشوند. اگر برنامهای دارید که در آن از این نوع داده زیاد استفاده شده است، این نوع تبدیل ميتواند تفاوتهای بسیار کوچکی در خروجی نرمافزار داشته باشد. به عنوان مثال، عبارت IsObject(Variant) در ويژوال بيسيك 6 مقدار False را باز ميگرداند. در حالی که پس از ارتقا، همین عبارت به IsObject(Object) تبدیل ميشود که مقدار True را باز ميگرداند.
* Windows APIs: به علت تغییراتی که در زبان جديد انجام شده است، برخی از فراخوانیهای مربوط به توابع ویندوز نیاز به تجدید نظر و یا جایگزینی با توابع جدید چارچوب داتنت دارند.
ويژوال بيسيك داتنت نسبت به نسخههای قبلی ويژوال بيسيك تغییرات زیادی داشته است. چون این نسخه برای بهرهبرداری بیشتر از امکانات چارچوب داتنت طراحی شده، تمامی راههاي حفظ سازگاری با نسخههای قبلی در آن بسته شده است.
نکته: هر دو نسخهي 6 و داتنت ويژوال بيسيك و برنامههاي نوشته شده با اين دو زبان را ميتوان همزمان بدون هیچ مشکلی با هم روی یک کامپیوتر نصب و اجرا كرد. اجزا و کنترلهای ایجاد شده در ويژوال بيسيك داتنت ميتوانند با اجزای COM ایجاد شده در نسخههای قبلی و نیز در سایر زبانها ارتباط برقرار كرده و بدون دردسر با هم کار کنند.
در بيشتر موارد، هدف از ارتقاي یک پروژه به داتنت، برخورداری از امکانات و قابلیتهای موجود در چارچوب داتنت برای توسعهي برنامههاست. با این حال به دلايل مختلفي همچون عدم پشتيباني داتنت از برخي از امكانات مورد نياز و يا دوبارهكاري زياد به دليل عدم سازگاري دو نسخه و ...، مواردی نیز پیش ميآید که طي آن توسعهي یک برنامهي تحت ويژوال بيسيك 6 خيلي باصرفهتر از ارتقاي آن به داتنت خواهد بود.
امکانات فراموش شده
امکاناتی که قبلاً در ويژوال بيسيك 6 وجود داشتند اما در داتنت فعلي حذف شدهاند:
- OLE Container Control: در داتنت کنترلی معادل این کنترل وجود ندارد. به همین دلیل ارتقاي برنامههایی که از این کنترل استفاده ميكنند، ممکن نخواهد بود.
- Dynamic Data Exchange (DDE): متدهای کانال DDE نیز در داتنت پشتیبانی نمیشوند. برنامههایی که شامل این کنترل باشند، یا باید از سایر متدهای مربوط به برقراری ارتباط بین برنامههای مختلف استفاده كنند و یا اینکه اصلاً ارتقا نیابند.
- DAO or RDO Data Binding: اتصال به بانکهای اطلاعاتی با استفاده از این دو کنترل در داتنت حذف شده است. کنترلهای Data و Remote Data در داتنت کنترل معادلی ندارند و استفاده از آنها فقط از طریق کدنویسی امکان دارد. برنامههای متکی به این دو کنترل یا باید از کنترل ADO استفاده کنند تا امکان ارتقاي آنها فراهم شود و یا اینکه از ارتقاي آنها صرفنظر شود.
- Visual Basic 5.0 Controls: در ويژوال بيسيك 6 برای حفظ سازگاری برنامهها با نسخهي 5، از کنترلهای این نسخه همانند کنترلهای رایج ویندوز (Windows Common Controls) و Data-Bound Grid نیز پشتیبانی ميشود. اما اگر قصد ارتقاي برنامههایی را دارید که اینگونه کنترلها در آنها به کار رفته است، یا باید اين برنامهها را با نسخهي 6 بهروز كنيد و یا اینکه آنها را به حال خود رها كرده و از خیر ارتقا بگذرید.
- DHTML Applications: تولید چنین برنامههایی در داتنت امکان ندارند. اما برنامههایی که قبلاً با نسخهي 6 ويژوال بيسيك ایجاد شدهاند، ميتوانند در محیط داتنت اجرا شوند.
- ActiveX Documents: برنامههای مبتنی بر اسناد اکتیوایکس نیز از داتنت حذف شدهاند. این قبیل برنامهها قبل از ارتقا باید با استفاده از کنترلهای کاربر (User Controls) بازنویسی شوند، در غیر این صورت امکان ارتقاي آنها وجود نخواهد داشت.
- Property Pages: این مورد نیز در داتنت وجود ندارد و تغییر آنها در ويژوال بيسيك 6 نیز ممکن نیست، به همین دلیل چنین برنامههایی را نیز نمیتوان ارتقا داد.
لزوم و میزان دوبارهکاری در فرآيند ارتقا
به دلیل وجود تفاوتهای بسیار زیاد بین دو نسخهي مورد بحث ويژوال بيسيك، بيشتر برنامههایی که برای ارتقا انتخاب ميشوند، نیازمند تجدید نظر و تغییراتی هر چند اندک در عناصری هستند که نمیتوانند مستقیماً به داتنت تبدیل شوند و یا اینکه با داتنت سازگاری ندارند، میزان این دوبارهکاریها بستگی به عواملی همچون نوع برنامه، امکانات و ابزارهای مورد استفاده در آن و ساختار زبان برنامهنویسی دارد.
سادهترین راه برای تعیین میزان دوبارهکاری مورد نیاز، اجرای ویزارد ارتقا و مشاهدهي فهرست نتایج گزارش ارتقاست. ویزارد ارتقا برای تبدیل یک برنامه به داتنت، نسخهي جدیدی از روی آن ميسازد و نسخهي قبلی را دست نخورده باقی ميگذارد. پس از مشاهدهي گزارش ارتقا، اگر میزان تغییراتی که باید اعمال شوند بهصرفه نبود، پروژهي جدید را حذف كرده و برنامهنویسی و توسعهي سیستم خود را در همان محیط ويژوال بيسيك 6 ادامه دهید.
در زمان تصمیمگيري براي ارتقاي یک پروژه، حتماً به نکات زیر توجه داشته باشيد:
* Single-tier Database Applications: چون ارتباط با دادهها توسط کنترل DAO در داتنت پشتیبانی نمیشود، برنامههای سادهای که با استفاده از این کنترل به دادههای محلی مانند بانکهای اطلاعاتی ایجاد شده توسط مايكروسافت اَكسس متصل شدهاند، نیاز به دوبارهکاري بیشتری نسبت به سایر برنامهها دارند.
* Visual Basic Add-ins: چون ويژوال بيسيك داتنت از محیط توسعهي یکپارچهي ویژوال استودیو داتنت استفاده ميكند، مدل شیئی قابل توسعهي آن با ويژوال بيسيك 6 تفاوتهای زيادي دارد. به همین دلیل کنترلهای افزودنی Add-ins نیاز به دوبارهکاری قابل توجهی دارند.
* Games: برنامههایی مانند بازیها که در آنها از کاراکترهای انیمشینی ويژوال بيسيك 6 استفاده شده است، نیاز به دوبارهکاری خواهند داشت، زیرا این کاراکترها نیز در داتنت متفاوت هستند.
* Graphics: در داتنت از متدهای طراحی فرم، شکل و یا خط خبری نیست. برنامههایی که در آنها از این متدها زیاد استفاده شده است، نیز نیاز به دوبارهکاری قابل توجهی خواهند داشت.
* Drag and Drop Functionality: مدل توابع مربوط به کشیدن و رها کردن در داتنت تفاوت بسیاری با ويژوال بيسيك 6 دارد. این توابع نیز برای کسب کارایی بهتر نیاز به بازنویسی دارند.
* Variants: زمانی که پروژهای را به داتنت تبدیل ميكنيد، دادههای از نوع واریانت به دادههای شیئ تبدیل ميشوند. اگر برنامهای دارید که در آن از این نوع داده زیاد استفاده شده است، این نوع تبدیل ميتواند تفاوتهای بسیار کوچکی در خروجی نرمافزار داشته باشد. به عنوان مثال، عبارت IsObject(Variant) در ويژوال بيسيك 6 مقدار False را باز ميگرداند. در حالی که پس از ارتقا، همین عبارت به IsObject(Object) تبدیل ميشود که مقدار True را باز ميگرداند.
* Windows APIs: به علت تغییراتی که در زبان جديد انجام شده است، برخی از فراخوانیهای مربوط به توابع ویندوز نیاز به تجدید نظر و یا جایگزینی با توابع جدید چارچوب داتنت دارند.