針對既有VB程式碼的升級,微軟提供了升級精靈,作為企業的輔助工具,不過,洪志鵬在擔任昇陽教育訓練中心總經理時期,發表《Visual Basic宣告死亡》一文,已清楚點出VB程式的升級仰賴升級精靈,是天方夜譚。
既然如此,升級精靈的定位在哪裏呢?微軟開發工具暨平臺推廣處協理劉念臻強調:「升級精靈只是評估的工具,絕非萬靈丹。」無法將非物件導向的程式,自動化轉換成具物件導向概念的系統。升級精靈做了什麼?
Visual Studio .NET的升級精靈,會把VB專案檔分析一遍,然後列出可以轉換及無法轉換的部分,提供相關建議。如果既有的應用程式,使用太多的Windows API,及目前.NET無法接受的語法,肯定會得到一堆的建議,企業就必須考慮程式升級下一步的策略。
升級精靈目前可以做到的是,封裝VB使用者介面,成為ActiveX控制項,雖然微軟不建議使用ActiveX,不過,.NET仍支援ActiveX。而與資料庫存取無關且可重複使用的程式碼,可以一併轉換,至於無法支援的語法則提出警告。
VB不是強式型別(Strong type)的語言,宣告變數時,可以不定義資料型態,可以是字串,也可以是整數,但在.NET環境並不允許,也就無法轉換,升級精靈會列出此類問題,提示開發人員手動解決。留意升級精靈的限制
VB程式不適合升級的類型:單機式的資料庫應用程式、VB增益集、遊戲、圖形處理、滑鼠拖曳功能、Variant型別的使用及Windows API等。
微軟也在MSDN網站明載升級精靈不支援的技術,光是前兩項-以VB語法直接繪圖,及與資料庫存取相關的應用(尤其是與資料感知及資料控制元件相關應用),就囊括企業大部份的應用。真正能夠仰仗升級精靈自動化移轉的VB應用程式類型就所剩不多了。
微軟開發工具暨平臺推廣處應用架構技術經理李匡正坦言:「VB到VB.NET,除非是『Hello World』這種簡單的程式,否則不可能一行程式都不用重寫。」
在Windows DNA時期,商用邏輯是封裝在COM元件中,如果企業過去的程式寫法,習慣使用強式型態,且應用邏輯有適當切割,雖然仍不能避免重寫及改正的部分,但系統架構及COM元件是有重複使用的價值。現今所謂的升級,勢必包含重寫
現在所謂的VB升級,勢必包含重寫,如果需要修改的部分,在可容許的範圍之內的話,升級精靈的確是很方便的工具。 不過,升級精靈有其適用的範圍及工作領域,因此微軟將升級精靈定位在升級的評估工具,而非百分之百自動化升級的工具。
劉念臻強調:「VB的升級包括物件導向的觀念及架構,所以升級精靈的適用性關乎原來程式是怎麼寫的。」要是程式設計不良,像一團麵糊,一個按鈕觸發事件,包辦所有的執行程式,那麼程式的升級確實需要一些策略。
程式是設計理念的反應,所以仍需藉助人工的改寫。胡德民表示:「過去許多程式是沒有結構化的,升級精靈無法從雜亂無章、沒有架構的程式中,逆向工程產生結構化的設計藍圖。」升級精靈只能針對已經結構化的VB程式調整語法。不可能把非物件導向的程式,轉換成為物件導向的架構。VB升級最大的障礙-ADO
微軟的VB升級研討會,花了一整堂課的時間介紹ADO.NET及其優點,而且在結論中強調.NET支援舊版ADO。然而,不可諱言,目前VB升級最大的障礙正是ADO。
雖說VB.NET仍支援ADO,但無法在WinForm做資料繫結與資料感知的控制,只能在 VB.NET 內以ADO搭配ActiveX控制項,達到資料繫結的目的,這連帶影響升級精靈的實用價值。 李匡正認為:「企業在過渡時間可以使用ActiveX作為緩衝,但絕非長久之計。」因為ActiveX是原生的程式,未來無法享受64位元的好處,如果在VB.NET上使用ActiveX,那麼升級也就沒什麼意義。
轉型物件導向最終的目的是提升生產力
微軟希望開發人員可以逐步分階段地,把自身的能力提升到物件導向領域,如果短時間之內無法達到,VB.NET允許相當程度的向前相容。VB.NET與舊版VB的語法有一定程度的向前相容,因而保留了結構化程式設計的語法。在物件導向的設計中,應該盡量避免全域性模組,但在VB.NET中,仍然允許開發者使用老方法,所以使用VB.NET並不等同於物件導向程式開發與設計。
微軟為什麼希望客戶捨棄老方法,選擇物件導向呢?胡德民表示:「因為要強化程式碼的可維護性。」一個人不可能長期在企業寫程式,一旦員工離職或工作交接,後續的維護就有大問題,這也是企業現在不敢升級的原因之一,因為已經沒有人可以了解程式碼的結構與意義。
升級不是只有語法的升級,而是從設計階段的作法就要升級。從VB到VB.NET不用學習新的語言,語法沒有改變,改變的是組織程式碼的方法,最終的目的是提升生產力。
不過,Sybase系統顧問向質彬認為:「物件導向不是程式再利用及高維護性的保證,重點在開發方法。」 光是程式語言的物件導向是不夠的!商業邏輯的再利用性主要在方法,例如OMG組織提出的MDA(Model-Driven Architecture),就是分析與平臺無關的PIM(Platform Independent Model),再對應到各種平臺。所以企業不要認為擁抱物件導向,就可以解決所有問題。
熱門新聞
2024-11-25
2024-11-25
2024-11-25
2024-11-24
2024-11-25
2024-11-22
2024-11-24