.NET程式內嵌Chromium瀏覽器|相容XP系統|越過IE8界限|痛快使用Vue (1)
背景
為一個大型集團客戶開發一套系統,為了便於升級維護使用了B/S結構。
BUT,客戶要求客戶端能讀寫射頻卡、操作印表機列印票據,還好,可以寫個C# winform程式通過webbrowser控制元件內嵌網頁,同時也支援JS和C#程式碼互相呼叫。操作硬體讀寫卡、列印的功能交給C#就是了。
BUT,客戶電腦竟然還有少量的XP…頓時無語,雖然是XP比例少,奈何人家體量大,咱們也沒法要求客戶把XP系統都換了。
欲哭無淚啊,要知道XP系統IE版本最高到8,而webbrowser是IE內建的瀏覽器控制元件,那也就是說只能使用IE8特性,IE8這種遠古巨獸對現在的前端技術支援簡直就是渣渣渣。
調查
沒辦法,客戶就是上帝,先看看能不能在IE8框架內解決問題吧。
首先IE8不支援HTML5,頭疼,好在通過html5shiv可以實現相容IE8。
第二,IE8 支援的 CSS3 新特性很少,不到30%。這意味著一些漂亮的前端css部分可能GG了,另外相容性也是個大問題了,幾乎所有頁面都得在IE8裡面測試下實際效果,而IE8的測試效率簡直渣渣渣
第三,心裡有中不詳的預感,看下vue吧,登入Vue官網,看到下面一條訊息,感覺不會再愛了。
Vue 不支援 IE8 及以下版本,因為 Vue 使用了 IE8 無法模擬的 ECMAScript 5 特性。但它支援所有相容 ECMAScript 5 的瀏覽器。
第四,絕望中去查了下react和angular,都已經放棄了對IE8的支援。
OK,我也放棄。
webbrowser的替代方案
網上查了查,可以在.net平臺使用的瀏覽器嵌入控制元件方案有幾種
首先是WebKit .net,版本舊的相當可以,查閱了N多部落格,踩了N多坑,最後也沒在XP上跑起來,就算跑起來了也不敢用,N年前的東西了以後能不能活還不一定。
然後是GeckoFX,這傢伙是FireFox的gecko核心機制的,但是網上資料很少,又踩了N多坑,最後跑都沒有跑起來,直接GG。
最後找到了CefSharp,好傢伙一看有github,最近幾天還在更新,頓時心內一定,就是它了。
CefSharp介紹
CefSharp是可以在.net應用內嵌的Chromium核心控制元件,支援VB、C#等CLR語言,支援winform、wpf等平臺。
通俗的說,就是開發的.net程式可以通過CefSharp內嵌一個網頁。
不錯不錯,那就開始使用吧。
準備工作
首先安裝個xp系統測試用,win7、win10上能跑起來絕對說明不了xp下可用。
然後xp系統得安裝. net framework4.0,經過我多次失敗的驗證,好像.net4.0以下使用CefSharp一直報錯,搞不懂啊。當然XP系統是可以安裝. net framework4.0的,附地址:.net4.0地址
然後還得安裝VC++2013執行庫,這個是CefSharp執行的基礎,忍忍吧,XP能裝上就算不錯了。提供地址: vc++2013執行庫下載。
然後得有Visual Studio開發.net程式,此處我用的VS2013。
然後下載CefSharp得用NuGet工具,此處提供下載地址:NuGet下載地址。下載後雙擊安裝即可,注意版本。安裝後VS2013工具選單下會多出NuGet包管理器
子選單。
工欲善其事必先利其器,這些準備工作都到位了,就可以開始大幹一場了。