Delphi 10.3 Web應用開發B/S框架介紹(二):IntraWeb 17
發表時(shí)間:2019-1-19
發布人(rén):融晨科技
浏覽次數:184
導言:很多人(rén)想當然的(de)認爲(wéi / wèi)Delphi不(bù)能開發B/S WEB應用,其實Delphi發展到(dào)現在(zài)10.3,一直在(zài)不(bù)斷的(de)進步,Delphi不(bù)但鞏固了(le/liǎo)Windows本機軟件開發領域的(de)王者地(dì / de)位,更擴展到(dào)了(le/liǎo)安卓、IOS、Linux跨平台開發領域,成爲(wéi / wèi)APP快速開發的(de)利器,同時(shí)很多Delphi第三方開發廠商也(yě)不(bù)遺餘力的(de)開發了(le/liǎo)很多Delphi WEB應用解決方案。
作爲(wéi / wèi)最早的(de)Delphi B/S WEB應用解決方案,IntraWeb已經推進到(dào)了(le/liǎo)17版,當前的(de)發布版爲(wéi / wèi)15版,已經相當成熟,并被廣泛應用與生産環境中。
漂亮的(de)Delphi IntraWeb應用
像桌面應用程序一樣開發,但作爲(wéi / wèi)标準HTML和(hé / huò)JavaScript部署到(dào)Web。無需插件。
以(yǐ)下是(shì)IntraWeb 17的(de)路線圖,非常令人(rén)興奮!
支持
IDE: 待定
IntraWeb 14和(hé / huò)16支持Delphi / C ++ 2009.目前這(zhè)意味着13個(gè) Delphi編譯器。添加C ++并且它加倍到(dào)26.這(zhè)确實使構建過程複雜化并使支持問題變得複雜,因爲(wéi / wèi)一些是(shì)特定于(yú)編譯器的(de)。
較新版本的(de)IntraWeb包含自願遙測,它将通過HTTP調用報告有關IntraWeb安裝的(de)基本匿名信息和(hé / huò)其他(tā)相關數據。所有數據都将匿名報告,不(bù)包含任何私人(rén)或個(gè)人(rén)身份信息。報告的(de)一些數據的(de)示例将是(shì)IntraWeb版本,IDE版本和(hé / huò)用于(yú)防止我們的(de)日志中的(de)重複條目顯示爲(wéi / wèi)多個(gè)安裝的(de)匿名ID。這(zhè)是(shì)作爲(wéi / wèi)IntraWeb IDE包中已存在(zài)的(de)版本更新檢查的(de)一部分實現的(de)。
使用這(zhè)些數據将使我們能夠更好地(dì / de)處理使用各種Delphi / C ++版本的(de)用戶數量,并确定IntraWeb 17将支持哪些IDE版本。
浏覽器: 在(zài)Flux中
IntraWeb 17正在(zài)向前邁進,需要(yào / yāo)依靠現代浏覽器中的(de)最新功能。最終的(de)浏覽器支持将被确定,并且還将取決于(yú)最終版本的(de)時(shí)間範圍以(yǐ)及每個(gè)浏覽器如何執行所需的(de)高級功能。
IntraWeb 17将具有雙模式頁面(有關詳細信息,請參見下文)。對于(yú)IntraWeb 16及之(zhī)前當前存在(zài)的(de)舊類型表單/頁面,浏覽器要(yào / yāo)求将更加靈活。
模式可能會支持包括Internet Explorer在(zài)内的(de)舊版浏覽器,但IWML可能隻支持:
- Chrome:43或更高。
- Firefox:45或更高。
- Internet Explorer:不(bù)支持 - IE是(shì)一個(gè)死産品,正在(zài)被Edge取代。
- 邊緣:13,但更可能是(shì)因爲(wéi / wèi)Edge本身仍然處于(yú)不(bù)穩定狀态。
- Mac浏覽器:待定
- 移動:待定,但可能需要(yào / yāo)移動Chrome,移動Firefox或其他(tā)。
目标
大(dà)爆炸
非常簡單地(dì / de)将IntraWeb方法再次放在(zài)Web開發的(de)前面,并提供任何開發語言或平台中任何其他(tā)框架中都不(bù)可用的(de)Web生産力和(hé / huò)功能。
在(zài)AJAX和(hé / huò)其他(tā)功能出(chū)現在(zài)主流之(zhī)前許多年,IntraWeb具有諸如umPartial等功能。相比之(zhī)下,IntraWeb 17将更進一步。
高度兼容
IntraWeb 17将需要(yào / yāo)進行重大(dà)更改,但我們理解允許現有代碼以(yǐ)最小的(de)更改工作的(de)重要(yào / yāo)性。在(zài)核心區域,将評估重大(dà)變更的(de)移植現有項目所需的(de)時(shí)間。
IntraWeb 17包含一個(gè)新的(de)頁面類型(現在(zài)稱爲(wéi / wèi)Page17)。仍将支持舊頁面類型(頁面16),允許現有表單按原樣使用。
并行開發
IntraWeb 16和(hé / huò)IntraWeb 17正在(zài)并行開發。
特征
IntraWeb 17目前包含許多新功能。随着開發的(de)進展,某些功能可能會分階段發布(即17.1,17.2等)或推送到(dào)未來(lái)的(de)IntraWeb版本,如IntraWeb 18。
IWML(IntraWeb标記語言)
IWML是(shì) IntraWeb 17 的(de)核心功能,它将帶來(lái)以(yǐ)前Web應用程序通常無法使用的(de)功能。學到(dào)更多
Server Manager
服務器管理器是(shì)一個(gè)新的(de)可選組件,可以(yǐ)使用所有部署模式(ISAPI,Apache等),它們将允許:
應用管理
- 動态加載和(hé / huò)卸載應用程序
- 收集和(hé / huò)查看有關用戶和(hé / huò)應用程序的(de)統計信息,例如會話列表,使用的(de)内存等。
- 實時(shí)更新 - 讓新用戶保持舊實例,而(ér)新用戶在(zài)更新版本的(de)應用程序上(shàng)運行。當舊實例中的(de)所有用戶都注銷時(shí),舊實例将被禁用。
- 能夠禁用應用程序并爲(wéi / wèi)用戶提供消息。
用戶管理
- 能夠發送管理員消息
- 查看用戶和(hé / huò)會話時(shí)間
- 能夠強制關閉個(gè)人(rén)或所有用戶會話
ACORN
甲通則 ? ompact ? bject ? eadable ?浮選
IWML使用ACORN。ACORN是(shì)一種可擴展的(de)規範,旨在(zài)實現靈活性,緊湊性,易讀性,易于(yú)解析和(hé / huò)易于(yú)流式傳輸。ACORN是(shì)在(zài)對XML的(de)極度幹擾和(hé / huò)偏移(經常使用移位擊鍵)感到(dào)失望之(zhī)後設計的(de),并且嚴重限制以(yǐ)及較小(與XML相比)但仍然存在(zài)JSON的(de)幹擾和(hé / huò)偏移。
ACORN是(shì)一種EOL分隔規範,使解析變得更加容易。
我們打算記錄并打開任何人(rén)免費使用的(de)ACORN。
IWCL
IWCL指的(de)是(shì)IntraWeb組件庫。IWCL不(bù)是(shì)Delphi IntraWeb組件,而(ér)是(shì)在(zài)浏覽器中運行的(de)IntraWeb JavaScript庫。在(zài)IntraWeb 17中,現有的(de)JavaScript IWCL仍然是(shì)爲(wéi / wèi)了(le/liǎo)确保兼容性,但IWML使用基于(yú)TypeScript的(de)更新的(de)IWCL。
對話框
JavaScript對話框非常有限,并阻止其他(tā)選項卡。現有的(de)基于(yú)DOM的(de)對話框更好,但仍然有局限性和(hé / huò)副作用。IntraWeb 17将有一個(gè)自定義的(de)統一對話框架來(lái)解決這(zhè)些限制和(hé / huò)問題。
統一圖書館
目前,每種部署類型都具有唯一的(de)項目類型。ISAPI是(shì)一種項目類型,另一種是(shì)SA,依此類推。源文件可以(yǐ)共享,但這(zhè)會産生額外的(de)維護問題。作爲(wéi / wèi)服務器管理器所需更改的(de)一部分,将存在(zài)一個(gè)新的(de)通用項目類型,然後由ISAPI,Apache,ASP.NET的(de)填充程序動态加載(事實上(shàng),IntraWeb的(de)ASP.NET已經是(shì)一個(gè)加載IntraWeb庫的(de)填充程序)可以(yǐ)加載通用庫。StandAlone不(bù)需要(yào / yāo)填充程序,但也(yě)會加載此通用庫類型。
這(zhè)将在(zài)部署期間添加一個(gè)所需的(de)文件,但這(zhè)是(shì)一個(gè)小缺點值得它帶來(lái)的(de)好處。
響應 - 手機,平闆電腦,桌面
IWML的(de)新布局提供了(le/liǎo)響應式布局作爲(wéi / wèi)其性質的(de)一部分,并允許頁面輕松地(dì / de)從小型手機屏幕調整到(dào)大(dà)型桌面顯示器。
語氣
通過纖維或停滞的(de)線程。
TypeScript推理
有限的(de)自動Delphi到(dào)TypeScript的(de)翻譯。
WordPress集成
此功能仍在(zài)調查中,但可能的(de)功能包括:
- 能夠爲(wéi / wèi)WordPress頁面提供短代碼
- 能夠将整個(gè)頁面提供給WordPress
- 登錄和(hé / huò)用戶集成
- 能夠檢索WordPress内容并在(zài)IntraWeb頁面中顯示它
Facebook整合
能夠發布到(dào)Facebook,使用Facebook登錄等。
的(de)WebSockets
IWML可以(yǐ)更輕松地(dì / de)修改DOM(浏覽器中的(de)網頁),這(zhè)使得更容易執行實時(shí)更新,遠遠超出(chū)AJAX的(de)功能。問題的(de)第二部分是(shì)延遲,被最終用戶視爲(wéi / wèi)延遲或遲緩。
AJAX和(hé / huò)其他(tā)通信方法都需要(yào / yāo)通過HTTP。HTTP使用短期連接,因此将其用作實時(shí)通信通道(dào)是(shì)不(bù)可行的(de)。AJAX提交請求并等待響應,但如果服務器想要(yào / yāo)推送它必須等待客戶端檢入。這(zhè)些請求中的(de)每一個(gè)都建立一個(gè)新的(de)連接,即使在(zài)快速連接上(shàng)也(yě)可能需要(yào / yāo)幾分之(zhī)一秒 - 足夠讓用戶注意到(dào)響應滞後。由于(yú)處理無法緩存的(de)如此多的(de)連接請求的(de)簡單開銷,服務器上(shàng)的(de)大(dà)量負載也(yě)會減慢連接響應時(shí)間。
WebSockets 是(shì)一種允許通過HTTP進行持久TCP連接的(de)協議。WebSockets已經出(chū)現了(le/liǎo)一段時(shí)間,但是(shì)在(zài)浏覽器中不(bù)同程度的(de)支持阻礙了(le/liǎo)使用,但更重要(yào / yāo)的(de)是(shì),在(zài)Internet服務提供商或企業級别上(shàng)使用舊的(de)或配置錯誤的(de)代理,有效地(dì / de)禁用了(le/liǎo)許多用戶的(de)WebSockets。
截至2017年,WebSockets的(de)情況已大(dà)大(dà)改善,并期待繼續增加支持。WebSockets支持可能是(shì)IWML的(de)可選功能,但在(zài)使用時(shí),它将允許從浏覽器到(dào)服務器的(de)消息響應時(shí)間非常快,并且還允許服務器與浏覽器通信,而(ér)無需等待浏覽器啓動通信。
這(zhè)種類型的(de)低延遲通信通道(dào)可實現更高速的(de)事件,例如可用于(yú)直接在(zài)服務器上(shàng)處理來(lái)自浏覽器的(de)實時(shí)鍵盤輸入的(de)按鍵事件。它還可以(yǐ)實現鼠标移動跟蹤。這(zhè)隻是(shì)兩個(gè)簡單的(de)例子(zǐ)。
這(zhè)使得IntraWeb可以(yǐ)生成幾乎像桌面應用程序一樣的(de)應用程序,但沒有安全風險,沒有安裝,也(yě)沒有遠程桌面會話的(de)延遲。使用的(de)帶寬非常小,因爲(wéi / wèi)與遠程桌面會話不(bù)同,原始元數據正在(zài)被發送而(ér)不(bù)是(shì)一點一點地(dì / de)被删除,并且像遠程桌面解決方案必須一樣發送圖像。
官方網站:https://www.atozed.com/intraweb
歡迎加入Delphi知識局QQ群:32422310