從上個星期就開始有朋友問我為什麼很久沒有更新Blog了,其實我想我寫Blog已經很勤快了,這次10多天沒有更新Blog想當然是我又開始出差了。上星期台灣進行了『Delphi.NET多層應用系統開發技術研討會』,在DevCo重新在台灣舉辦活動1,2個月之後,的確發現慢慢的一些客戶開始回流來參加研討會了,這是個好現象,也讓我有機會和一些朋友談談他們的工作近況以及他們希望能夠聽到什麼主題的研討會。而之所以DevCo會在上星期舉行『Delphi.NET多層應用系統開發技術研討會』就是因為許多朋友都在詢問如何把應用程序移植到.NET以及如何讓他們能夠使用ASP.NET開發新的Web應用程序但是又能夠同時使用現有的Midas/DataSnap應用系統。
其實要讓新的.NET應用系統和現有的Midas/DataSnap應用系統整佑在一起不困難,要解決的問題就只是讓.NET客戶端呼叫到Midas/DataSnap應用系統以及如何在兩個執行環境中進行數據型態的轉換。
使用.NET的InterOp2技術就可以讓.NET客戶端呼叫到Midas/DataSnap應用系統,至於數據型態轉換就有點困難。最簡單的想法就是讓兩邊都使用XML來交換數據,但是唯一的麻煩就是Midas/DataSnap在許多方法中都是以OleVariant的型態來封裝數據,因此.NET的客戶端必須知道如何處理Midas/DataSnap傳遞來的OleVariant資料封包,並且從其中撷取出以XML封裝性的真正數據。
還好我們可以在Delphi『隱誨』的文件中找到一絲曙光:
原來OleVariant/Variant可以對映成.NET的System.Object或是Delphi.NET重新定義的TObject。
有了這兩個知識之後我們就可以讓.NET客戶端和Midas/DataSnap應用系統整合了,在『Delphi.NET多層應用系統開發技術研討會』中,我從 BDE的項目開始討論如何移植到.NET,接著討論dbExpress項目,最後討論移植Midas/DataSnap應用系統整合並且開發.NET的Windows From和ASP.NET應用程序來呼叫並且使用Midas/DataSnap應用系統提供的服務和數據, 例如下圖是Win32 VCL Form以及.NET Windows Form同時呼叫COM+的Midas/DataSnap服務器的執行畫面:
而下面是最後在研討會中的范例,我使用Delphi 2006開發一個ASP.NET的應用程序來呼叫Midas/DataSnap應用系統提供的服務和數據並且顯示在浏覽器中,您可以看到使用Delphi 7開發的VCL Form應用程序也在執行,而且Midas/DataSnap的COM+服務器也在運轉中同時提供Win32和.NET的客戶端服務。
《Delphi.NET多層應用系統開發技術研討會》是有關Delphi/Delphi.NET多層應用系統開發的第一個研討會,在下次DevCo將會舉辦第2次的『Delphi.NET多層應用系統開發技術研討會』,內容是討論如何在桌面型,主從架構,以及多層架構中都可以重復使用由ECO開發出來的企業邏輯模型。
我知道我大陸的同事這星期也要開始在4個城市進行Delphi2006技術研討會,這是3,4年以來我第一次無法去大陸進行研討會,在此先祝福他們順利,成功了。