|
客戶對產品質量非常滿意,因此在項目完成后又給我們另外一個訂單,即部署客戶程序到Windows智能手機設備上。但是我們項目團隊成員以前都沒有這種開發經驗。我們的計劃是通過最小限度的修改現有程序代碼,使其可以運行在Windo智能手機上。
移動設備Web應用工具箱(WebApplicationToolkitforMobileDevices)
我們選擇了微軟移動設備Web應用開發工具箱作為解決方案。使用這個免費的工具,可以輕松將基于MVC框架的Web應用擴展到移動設備上。
下載地址:
http://code.msdn.microsoft.com/WebAppToolkitMobile/Release/ProjectReleases.ASPx?ReleaseId=3914
該移動應用開發工具箱所需的環境要求是:
1、安裝微軟.NETFramework3.5SP1。
2、VisualStudio2008專業版或更高版本。你也可以下載免費的微軟VisualWebDeveloper2008Express版。
3、如果你的操作系統是WindowsXP,則需要安裝同步軟件MicrosoftActiveSync,以實現開發環境和設備模擬器之間的同步。
4、ASP.NETMVC框架,該框架也是免費的,你可以從MSDN或CodePlex上下載。
5、WindowsMobileSDK6.0或更高版本。默認情況下,該SDK沒有模擬器映像文件,你可從以下地址下載:
http://www.microsoft.com/downloads/details.ASPx?FamilyID=1A7A6B52-F89E-4354-84CE-5D19C204498A&displaylang=en
在安裝了Web應用開發工具箱后,它將在你指定的位置創建一個名為WebAppToolkitMobile的文件夾。打開WebAppToolkitMobile/VisualStudioTemplates文件夾,雙擊MobileWebApplication.vsi文件,將在VS2008中創建一個新MobileApplication模板項目。打開你的VS2008,并從“我的模板”分類中選擇MobileWebApplication項目模板,并將你的項目命名為“TestMobileWebApplication”。另外根據向導要求增加一個單元測試項目。
看下解決方案瀏覽器,它將有三個不同的項目。第一個項目名為“MobileCapableViewEngie”,它是一個類庫型項目,其輸出為一個主項目引用的程序集(.dll文件)。在運行時中,這個程序集將根據瀏覽器和設備類型來決定展現哪一個視圖。
舉例來說,如果你想在你的ASP.NET應用中顯示一個員工列表,而且你也希望為手機應用瀏覽器創建一個相同的列表,那么你需要創建兩個不同的視圖。其中一個視圖供IE瀏覽器使用,而另一個則是為手機網絡瀏覽器所準備。你還可以為手機瀏覽器創建定制化的視圖,因為手機和PDA顯示屏可能非常小。在多數情況下,開發者將為手機應用創建定制化的視圖。MobileCapableViewEngine類的ViewEngineResult函數確定運行時展現哪一個視圖。
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { ViewEngineResult result = null; HttpRequestBase request = controllerContext.HttpContext.Request; if (request.Browser.IsMobileDevice) { string mobileViewName = string.Empty; mobileViewName = string.Format( CultureInfo.InvariantCulture, "Mobile/{0}/{1}", this.RetrieveDeviceFolderName(request.Browser.Browser), viewName); result = this.ResolveView(controllerContext, mobileViewName, masterName, useCache); if (result == null || result.View == null) { mobileViewName = string.Format( CultureInfo.InvariantCulture, "Mobile/{0}", viewName); result = this.ResolveView(controllerContext, mobileViewName, masterName, useCache); } } if (result == null || result.View == null) { result = this.ResolveView(controllerContext, viewName, masterName, useCache); } return result; } protected virtual ViewEngineResult ResolveView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { return base.FindView(controllerContext, viewName, masterName, useCache); }
NET技術:現有ASP.NET MVC框架應用巧妙移植到手機,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。