2019/10/23

DBX Error: Driver could not be properly initialized in SQL SERVER


"DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path."

測試專案時並沒有遇到這類的問題,但在WebBroker專案下會出現這樣的 Error。

除了安裝 sqlncli.msi 是必須的之外,由於 DataSnap / WebBroker :
  1. 早期的MSSQL driver使用COM
  2. 框架使用到 Thread

所以【CoInitialize / CoUninitialize】的呼叫也是必要的。

但這錯誤訊息完全無法看出端倪,故記錄在此。


題外話,新版的 MSSQL 為了跨平台,也開始使用ODBC連接,沒了COM,自然也就不用 CoInitialize / CoUninitialize,ODBC for DBX也許就可以拿來用了呢!(笑)


See also

2019/10/09

TIdHTTPWebBrokerBridge and HTTPS

為了提高網路傳輸的安全性,許多前端套件都開始強制要求使用HTTPS連線才能操作。

然而這在Delphi DataSnap / WebBroker server Debug很是困難,因為預設沒有 HTTPS。

自XE2版後,DataSnap精靈也可以看到HTTPS的選項。

但下一頁的憑證要求應該讓不少人傻眼吧。

文件裡寫的資料不多,很多OpenSSL的小技巧需要留意。

實作的程式碼就是 Indy HTTP SERVER + SSL,第一次看到實作碼時還不自覺地笑噴。





江湖一點訣啊!





結語

經實驗證明可以使用,但因為舊版 Indy 不支援 TLS1.1 以上加密等級,所以Browser會加上【弱加密】警告標語,請留意 Indy 使用版本。


See also :

2019/10/02

TIdHTTPWebBrokerBridge效能和驗證(Authorization)

圖/取自網路


TIdHTTPWebBrokerBridge 目前會用到的地方大概只有 Stand-Alone 場合,更偏向於 Debug 應用。

看到 Marco 寫的 Thread Pooling 文章,不太能夠理解只是Debug為什麼還需要這麼大的效能。

Thread Pooling

Marco原文是這樣說的:
Regarding threading, creating one for each incoming request is Indy’s IdHTTPServer default configuration, but you can tune it adding code to the server main form, which creates and manages the Web server component.
 大意上是說每個Client都會建立一條Thread,所以用了Thread Pooling後可以預先把Thread開好,就不用花時間在每次連接的Thread建立時間。

另一個好處是:限制Client數上限(MaxConnections),總比Server崩潰要好一點。

使用它不吃虧,就記錄一下要怎麼用吧!

2019/09/23

Auto set up the TDBXParameters DataType

圖/VManninen@flickr


好消息! dbExpress driver 增加對 Linux 平台的支援!

緣起


本以為 dbExpress 不再更新後就要比 BDE 提早領便當,成了史上最悲劇的官方資料庫存取技術代表。

然而在 Devart 的巧手下,2019年又讓 dbExpress 再一次跨好跨滿跨平台。❤❤❤

聽到這個消息超開心的,2002 Borland 時期 Kylix的未竟之夢,總算在 2019 由 Idera / Embarcadero 圓夢完成,真是太感動了!

感動之餘,也想到 DataSnap 轉到 Linux 主機上,是否應該作些準備?

前面提到的【DevExtreme DataGrid Demo with DataSnap Server】章節,已經知道前端要採用與 Delphi 無綠的 JavaScript 應用,而前端最常用的 TClientDataSet / TFdMemTable 也就不會再使用,面對 JavaScript,最終是要包成 JSON。

既然不會再使用 Delphi 前端元件,那資料庫來源在不妨礙開發為前提下能多底層就底層。


有想法,就來試試看!

2019/09/20

DevExtreme DataGrid Demo with DataSnap Server - The Front End

資料來源:網路


前面提到 DevExtreme DataGrid Demo with DataSnap Server 1 + 2,已經知道 DevExtreme DataGrid 是如何向後端伺服器取得資料,其它的『新增』、『更新』、『刪除』要如何實作呢?

在實作之前,要先知道 DataGrid 是如何動作的。

2019/09/11

DevExtreme DataGrid Demo with DataSnap Server 2/2

DataSnap 是 Delphi Enterprise 中極好用的 framework 之一!

隨著行動平台的使用人數提高,漸漸也就有了跨平台的需求。

商城上架費太貴、各平台開發的眉眉角角太多。



說白了就是想一套產品通吃各平台。

能滿足所有條件的只有 Web 了!

其實 Web 的水更深,箇中奧妙待日後細說。(笑)


上回提到 DataSnap REST Server 可以提取跨網站資料。

這篇有幾個目標:

2019/09/10

DevExtreme DataGrid Demo with DataSnap Server 1/2

DataSnap 是 Delphi Enterprise 中極好用的 framework 之一!


使用 Delphi 開發時大多遇到的都是資料庫應用,而其中 3rd party 最常用的就是 DevExpress 的 cxGrid 元件,導致在開發 Web 平台時也需要無痛移轉,使用者就是愛 cxGrid,所以在平台移轉上困難重重。

而 DevExpress 的明日之星【ExpressWeb Framework】卻早已停止開發! (已哭)

取而代之的是 ASPx 套件和 純 HTML5 的 DevExtreme framework。(喔氣氣氣氣氣氣!)

ASP.NET 套件試用好一陣子,不僅僅要熟悉 Dx 元件,再加上 ASP.NET C# 技術知識,別忘了還有前端的 HTML / CSS / JavaScript 的知識要學習,一個人的工作量也太大了。



在絕望之餘,才發現 Delphi 新版的 DataSnap 已經內建了 JavaScript framework,使用上也不算太困難,就差在前端 HTML 必須自行開發。

所謂的 JavaScript framework,意謂著前端的功能也必須使用 JavaScript 進行開發,當然也是有優缺點: