離線下載與安裝 Docker Enterprise Edition 任意版本

離線下載與安裝 Docker Enterprise Edition 任意版本

一般而言,要安裝 Docker Enterprise Edition (以下稱 Docker EE) (或 Preview) 版本都只需要執行二行 PowerShell 指令,例如:

安裝 Docker EE 1

Install-Module DockerMsftProvider -Force
Install-Package Docker -ProviderName DockerMsftProvider -Force

安裝 Docker EE Preview:

Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview

看似簡單無比的任務,搞得我就搞得我一個頭二個大。原本以為 Install-Module 加上 -Proxy 參數就能解決的問題,但不斷出現的紅字錯誤訊息,只有灰頭土臉可以形容。請管理網路同事幫忙,得到一個壞消息,這個 Install-Module 指令就算加了 -Proxy 結果還是往 Firewall 走,也有試著用 netsh 改更底層 Proxy 設定,但依然無用。動 Firewall 事態不小,非到不得以,實在不想走這一條。

使用 PowerShell 安裝、更新與刪除 Docker Enterprise Edition (含Preview)

使用 PowerShell 安裝、更新與刪除 Docker Enterprise Edition (含Preview)

在 Windows Server Core 1709 測試過程,經常需要安裝、更新或刪除 Docker Enterprise Edition 的動作。因為文件分散在 Docker Docs 與 Microsoft Docs ,整理為以下筆記,方便自己查詢。你能發現,使用 PowerShell 的安裝與更新非常簡單,刪除步驟比較多,你能從上而下跟著筆記把 Docker 給刪除,在重新安裝起來。

ASP.NET Web API GZip/Deflat 資料遺失迷航記

ASP.NET Web API GZip/Deflat 資料遺失迷航記

前情提要:參考(1)(2),之前測試發現 ASP.NET Web API 有個查詢資料量不小(1.92 MB),並且會有同等級的上傳行為,在 ASP.NET Web API 加入 GZIP/Deflate (解)壓縮來改善效能,資料由 1.92 MB → 50 KB 壓縮率約 40 倍,這是用一點 CPU 來改善效能的好範例。

同事回報,在測試區當資料量提升至 3.3 MB(3338506 bytes) 後,程式有機會(隨機)出錯(Exception)。

先來看 HTTP POST 流程:

RestSharp (RawData: Over 3.3 MB) → GZIP → GZIP ByteArray (79515 bytes) → HTTP POST → ASP.NET Web API

這是個 VSTO 的 Excel 應用程式,在讀取 Web API 資料之後,原封不同進行上傳(HTTP POST)動作,由側錄取得離線 RawData 約 3.3 MB,經過 GZIP 壓縮後得到約 78 KB 的 Byte Array 資料,最後使用參考(2)程式碼送出:

request.AddParameter("application/json", content.ToArray(), ParameterType.RequestBody);
檔案大小

接收流程:

ASP.NET Web API → DecompressionHandler → RawData → Web API life cycle

Web API 收到請求後安排一個 Message Handler 進行解壓縮後取得 RawData 之後,按 Web API 生命流程往下進行。

程式穩定運作,經過許多分析與測試後,在終於在 Web API 側錄到錯誤發生時的資訊:

lose data

在 DecompressionHandler 取得的 GZIP ByteArray 大小為 77889,很明顯小於原始的 79515,把解壓縮的 RawData 資料 Dump 出來後確實資料短少被截斷了,造成後續 Web API 在進行 ModelBinding 時的不正常 Exception。

NGINX Proxy 與 Windows Authentication 整合

NGINX Proxy 與 Windows Authentication 整合

最近在整合 NGINXReverse Proxy 時碰到一些 Windows Authentication 整合的問題,花費不少時間,特此筆記之。

一般的 Web App 在 NGINX Reverse Proxy 作用下都能正常運作,但內部網站有多許使用 Windows Authentication 功能來進行 SSO,例如,在 ASP.NET MVC 或 ASP.NET Core 的 View Page,只需透過一行 @User.Identity.Name 即可觸發瀏覽器進行身分驗證功能,在網域運作環境下,是不可多得好物。當然,你找網路可以找到許多教你設 proxy_set_header 的文章或討論:

青菜SOAP與蘿蔔REST,請選擇?

青菜SOAP與蘿蔔REST,請選擇?

dzone.com 看到一篇比較 SOAPREST 的文章整理的覺得不錯,簡單翻譯做個筆記。

SOAPREST 都是 Web Service 通訊協定,在 REST 未風行之前,SOAP 長期以來都是 Web Service 服務介面的標準方法。不過,根據 Stormpath 的統計,目前已有超過 70% 的公開 API。

SOAPREST 主要差異

當你在 Internet 上公開一個 API,REST 通過獨立且一致的介面進行操作,用以訪問命名資源。而 SOAP 將應用程式邏輯的元件公開為服務,而不是資料,並且它通過不同的介面來操作。簡而言之,REST 訪問資料,SOAP 透過更標準化的訊息模式集來操作。在大多數情況下,可以使用 SOAPREST 來實現相同結果。