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崩潰要好一點。

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