2016/01/15

完成 Delphi 在 Web 上的未竟之夢?【Elevate Web Builder 介紹】

Delphi 從 1.0 以來,一直都是以「Native」,中文來說,是以「原生碼」的方式存在著。


不論是以前的 Kylix 還是現在的 FireMonkey,主打的就是「每個平台都會有自己的原生碼」的應用程式。


而不像是 JAVA 般,以 JVM 的方式,在每個平台都有自己的虛擬機器代工來執行 Java 程式。

也不像是 .NET,以 .NET Framework 作為轉接器,讓每個語言都能在透過它在不同的 Windows 系統執行。


Delphi,總是以原生的方式,在世人的面前展露它利落的身段,而不是利用一層肥大轉接器的裙帶關係,或是一種緩慢及安全性有疑慮的虛擬機器,所帶給使用者那種痴呆煩悶的遲滯感覺。


在 Win32 下所帶給 Delphier 們即視、優雅、敏捷開發的娛悅感,卻在這世界轉向 Web 化後,一夕之間,變成所有 Delphier 的惡夢。

翻翻 Delphi 的歷史,為了網頁開發,它為了拉住 Delphier 的心,做出了以下的變化:
  • WebBroker:自己刻 Web 服務
  • InternetExpress:提供可視化的 Web 元件

隨著時間的推移,這兩套解決方案並沒有完全解決 Delphier 的 Web 障礙。
於是眾多地協力廠商也加入 Web 開發的戰線,因此有更多的產品問世了:
  • IntraWeb
  • UniGUI
  • Raudus
  • Kitto

這麼多的商品,看得是 Delphier 眼冒金星,老花眼都快提早來到了。

Delphi 在 Web 上,看似很多樣化的選擇,事實上,都是基於一個不願面對的真相,那個真相是:

全都是基於 Web Service 下的外掛程式!
也就是 IIS / Apache 裡,利用 DLL 成為它的外掛,完成 Web 資料的輸出。

因為只有一個 DLL,看起來很利落,沒有其它的 HTML / JavaScript / CSS 網頁檔案糾結,只要維護一個專案就好。

可是,有沒有想過一個問題:【DLL,它怎麼更新?】沒有,因為你只想到你自己!

我們必須在每一次更新,都必須把 IIS / Apache Web 服務器關閉,更新 DLL 後再重啟 Web服務器。

這聽起來很蠢。對吧!

無法即時更新小區塊語法事小,停機重開這問題才大,只要上線的人一多,影響的後果十分可怕。

這樣讓人沮喪的結果讓我不禁想起了一件事:

【FireMonkey 都可以編譯 iOS, Android, Mac OSx 多平台的原生碼了,為什麼網頁這件事情卻做不到?】


我抱著這樣的一個疑問過了好幾年,直到某天在 Google 上看到了一道署光:

Elevate Web Builder (以下簡稱 EWB)嚴格來說並不是屬於 Delphi 的 3rd party 元件,而是一套全新的 IDE,基於 Pascal + VCL framework,它的概念上如下圖:

EWB 所要表達的概念

將 Delphi 程式碼轉換成網頁程式碼……這不就達成了【網頁原生碼】的目標嗎!
多年來 Delphier 內心最深層的痛處,隨著這套產品的問世,這痛處一定會跟著消失的!

首先,先來看看這套 IDE 的介面吧!

EWB Design 介面

在 2016/01/15 的今天,EWB 版本是:2.04。

整體操作上完全和 Delphi 一模一樣,毫無違和感,在 Delphi 裡的設計概念完全可以在 EWB 上完全複製!

元件可以繼承,想要自訂功能和函式也沒有問題,EWB 都會完全按照 Delphier 的意志,完美地將 Pascal 轉換到網頁程式碼上。

有點可惜的是,EWB 目前對中文字型(double-wide characters)支援度還不夠,在編輯顯示上會有一半的文字無法看到,但在Browser裡都會正常顯示,如下圖:

EWB 上的第一個測試專案

EWB 的客服人員說明這個問題會在 2.5 版裡正式解決,敬請期待!

也因為測試版的關於,你會發現編譯的時候,在Output目錄裡看到 .js 及 .html 檔案稍閃即逝的情形,然而要保留產出的這兩個檔案,只能在正式版才能享受到囉!


有了封裝後的 JS 和 HTML 網頁檔案,這代表線上即時更新網頁成為可能,再也不用把網頁伺服器關掉重開啦!


再重複一次,可以線上即時更新網頁這件事,目前只有 EWB 可以做到,受夠以前用 Delphi 開發 CGI / ISAPI 那種外掛形式的網頁應用嗎?


用 EWB 來設計 Web Application 就對了!


另人期待的資料庫應用呢?
嘿嘿,在這邊就讓我賣個關子,先留給你們去研究吧!


我要來去玩 EWB 囉~~~!

See also:
Elevate Web Builder - Rapid Application Development
Elevate Web Builder - Roadmap


13 則留言:

  1. 先問一下,是絕對位址定位嗎?

    回覆刪除
  2. EWB 有支援 RWD(響應式)設計

    回覆刪除
  3. 我的意思是,元件是用TOP LEFT定位嗎?WIDTH有沒有支援50%這種的?

    回覆刪除
    回覆
    1. 在 Delphi 的世界,沒有百分比定位的方式,會使用這套開發工具的 Delphier 可能也無法理解網頁設計的定位技巧。

      在 EWB 中,可以利用 Layout.Stretch (延伸)、Constraints(約束).Max.Width(Height),以及 Margins(邊距) 三個屬性的搭配,來完成相對定位的需求。

      刪除
    2. 有關 Layout 在 EWB 和 CSS 不同之處,可以參考這篇:

      Layout Management

      刪除
  4. 謝謝你提供的說明。這種用WIN FORM的方式來做WEB FORM,應該在細節調整時會格格不入吧。

    回覆刪除
    回覆
    1. EWB 的目標有顧及到 Web Application 在多平台調整和更新上的細節

      對Delphier來說是多少可以減輕些壓力

      至於不是寫 Web Application?還是交給專業的從業人員吧。哈!

      刪除
    2. 如果USER可以這麼寬容,程式人員日子就好過了。^_^

      刪除
  5. 回覆
    1. 會輸出 .html 和 .js 兩個檔案,但正式版才會保留,試用版只能看到它閃一下就刪掉了

      佈署方式就「直接放上 Web Server 目錄」就可以了

      刪除
  6. 聽起來跟HTML5 builder差不多,兩者最大的差異在那裏?

    回覆刪除
    回覆
    1. H5B 核心是一種 PHP framework(後端) 和JavaScript framework(前端)

      而EWB是一種【Delphi到HTML5轉換器】,更特別的是,它最終產出是 html, js檔案,是能直接在 IIS/Apache 上佈署的檔案,和Delphi現在所有基於ISAPI發展的HTML5 framework完全不一樣。

      刪除
  7. 這麼多年了,直到現在才聽到這種產品,真高興,感謝您。

    回覆刪除

How to use URLEncode in Delphi

URL編碼,也稱【百分號編碼(Percent-encoding)】 由於 URL 不能直接接受 UTF8 文字,所以要先轉成百分號編碼後,如此網址才能順利送給 HTTP Server 從 Indy 加入 Delphi 後,就可以用 IdURI.TIdURI 單元進行編碼 ...