歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 嵌入式 Linux 智能設備應用中 web 支持的實現

嵌入式 Linux 智能設備應用中 web 支持的實現

日期:2017/2/28 16:21:09   编辑:Linux教程

由兩篇文章組成的系列文章主要闡述如何在嵌入式 Linux 智能設備的應用程序中增加 Web 支持。第 1 部分,我們將會介紹嵌入式 Linux 智能設備開發的現狀、Qt 和 WebKit 的概念。並以廣告機和手持點菜機等應用為例,敘述在嵌入式 Linux 平台以及 Qt,WebKit 等技術的幫助下,如何在終端應用程序中添加網頁浏覽的功能,如何用 Web 技術取代傳統 UI 技術,以及如何在智能設備上實現從 C/S 到 B/S 的開發模式的轉換。

嵌入式 Linux 智能設備開發的現狀

近幾年,嵌入式 Linux 在智能設備中的應用發展的非常迅速。可以預見,嵌入式智能設備和我們的生活將會越來越密不可分。

Linux 在嵌入式系統中的應用可以分為兩大類:面向服務類和面向應用類。典型的面向服務類系統有交換機、路由器、監控設備等;典型的面向應用類的系統有手機、PDA、機頂盒等。本文主要討論面向應用類,特別是指帶有網絡和 UI 的應用系統。

在嵌入式 Linux 上進行帶 UI 的應用程序開發是一件非常復雜的事情,主要涉及以下幾個方面:

UI 系統

Linux 本身的 UI 系統並不統一,嵌入式版本上的 UI 系統更是五花八門,而且與其 PC 版本相比也有一些適應性的改變。而有些產品的開發甚至不使用 UI 系統,通過直接往 framebuffer 貼圖的方式來實現 UI。而且與 PC 相比,嵌入式系統的性能問題,也讓嵌入式的 UI 系統在表現上做出很多妥協。這些都使得開發難度增加,帶來更多的不兼容問題。這些都使嵌入式 Linux 上的應用開發和移植變得更加困難,另外也使培養一名合格的嵌入式工程師的成本變的比較高。

廠商支持

對於一個嵌入式平台,其主芯片的生產商對這個平台影響巨大。一般來說,生產商會提供對某個或者某些 UI 系統的支持,但是他們不可能支持所有的系統。所以,選定一個嵌入式平台就意味著開發團隊需要切換到這個平台所能支持的 UI 平台上。這個團隊之前做的應用就需要移植到新的 UI 平台,而這個移植是非常麻煩的。

浏覽器

嵌入式 Linux 的網絡接口一般都支持 posix 的標准,但是嵌入式設備的浏覽器則與 UI 系統一樣是五花八門的。在應用的推動下,嵌入式 Linux 平台上的浏覽器在近年發展也非常迅速。他們基於不同的 UI 平台進行開發(也有一些直接操作 framebuffer),對 Web 標准的支持和兼容性各不相同。比較簡單的浏覽器只能支持 HTML 標簽,優秀的產品則能在兼容性上做到與 PC 平台上的浏覽器幾乎同樣的水平。

服務器技術

很多嵌入式應用需要與服務器進行連接,點菜機就是一個典型的應用。手持智能設備端需要將用戶的操作寫入遠程的服務器,然後遠程的信息管理系統進行進一步的處理。這種類型的應用對於 PC 平台來說就是一個非常簡單的數據庫應用系統,數據庫、遠程調用、並發、中間件等技術已經應用了多年,而且還有眾多成熟的企業應用的框架,可以靈活而快速的搭建出一個系統。但是這些在嵌入式平台都是不存在的,這意味著開發人員還需要用相當於 PC 平台十幾年前的水平來進行開發,為了讓嵌入式系統和服務器的數據庫進行對接,開發人員還需要在服務器端編寫一個專門的程序來充當橋梁的作用。筆者見過在不少項目裡還需要直接控制 socket 來和服務器進行數據交換,這些對於 PC 平台都是不可想象的。另外開發一個支持多個客戶端並發的穩定服務器程序並不是一件容易的事情,這些問題都會影響整個嵌入式開發過程的成本和質量。

如果一個公司希望在某個嵌入式 Linux 平台上開發一個包含了 Web 浏覽的應用,而他自己之前並不擁有一個完善的平台的話,其開發團隊首先需要選定一個 UI 系統,然後尋找一家做浏覽器的公司,與其合作,再想辦法將浏覽器移植到自己的平台上。如果是需要在自己的應用程序中嵌入一個浏覽網頁的窗體,那麼問題就會更加復雜,因為還涉及到與選定的浏覽器進行代碼或者模塊級別集成的問題。

Qt 和 WebKit 簡介

Qt 是一個跨平台的 C++ 圖形用戶界面應用程序框架,對 Windows、Linux、Mac OS X、Unix、Free BSD 等主要的操作系統均有支持。Qt 不僅包含了圖形界面庫,還集成了 Network、File、IO、Database、2D/3D、XML 等模塊,基本涵蓋了一個應用程序所需要的所有功能,這些讓 Qt 成為最有影響力的跨平台框架,Linux 平台上的 KDE 就是基於 Qt 開發的。Qt Embedded 則是 Qt 針對嵌入式平台的版本,在嵌入式平台的 UI 市場占有很大的份額。

Qt 可以解決上一節所討論的很多問題,因為其優異的跨平台性能,開發人員甚至可以在 PC 上進行開發調試,然後直接將代碼放到交叉編譯環境中生成嵌入式版本,這樣的移植基本不需要改動代碼。

WebKit 是一個開源的浏覽器引擎,目前 Safari,Chrome 等浏覽器均使用了 WebKit 作為核心。Qt 從 4.5 版本開始,集成了 WebKit 作為 Qt 的平台組件,用戶可以像使用其他組件一樣將 WebKit 引擎集成到自己的應用程序中,以提供 Web 的支持。

Copyright © Linux教程網 All Rights Reserved