65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 HTML5 和 DXTREME 构建跨平台应用

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (3投票s)

2013年2月27日

CPOL

7分钟阅读

viewsIcon

25346

使用 HTML5 和 DXTREME 构建跨平台应用

开发一个支持多个平台(Apple、Android、Microsoft)的应用程序的最佳方式是什么?

和许多开发人员一样,我最近也面临着这个确切的问题。事实证明,有两种选择可以实现这一点:1) 构建 HTML5 Web 应用程序和一堆 Shell 应用程序,每个平台一个;或 2) 为每个平台构建原生应用程序。由于我没有所有平台的专业知识,也没有时间和金钱去掌握所有这些平台,所以我决定研究第一个选项。我很幸运地听说 DevExpress 正在开发一个名为 DXTREME 的新跨平台开发框架。DXTREME 旨在帮助您使用 Web 开发人员非常熟悉的 HTML、JavaScript、CSS 和 XAML(仅适用于 Win8)等技术为 Android、Apple 和 Windows 8 构建应用程序。它包含一套库、控件和其他资产,抽象化了为所有这些不同平台构建应用程序的复杂性。它直接与 Visual Studio 集成,并带有一个项目模板,您可以使用它来构建应用程序。

它建立在两种不同的技术栈上:HTML5 和 XAML。

HTML5 技术栈用于使用 HTML、JavaScript 和 CSS 构建 Android、Apple 和 Windows 8 应用程序。它允许您创建在不同平台之间共享外观和多点触控功能的应用程序,但也与 Apple App Store、Google Play Store 和 Windows Store 兼容。

XAML 技术栈适用于已经熟悉 WPF 或 Silverlight 的开发人员,用于构建原生 Windows 8 应用程序。

我将带您了解我使用 DXTREME 创建基本应用程序的经验。希望它能让您了解首次使用 DXTREME 的人需要多长的上手时间。

启动多渠道应用程序项目

对于第一次练习,我选择了多渠道应用程序模板,您将使用它来使用 HTML、JavaScript 和 CSS 创建跨平台移动应用程序。

事实证明,您基本上是在使用模型-视图-视图模型 (MVVM) 模式构建一个单页 Web 应用程序 (SPA)。ViewModel 使用 Knockout,整个应用程序通过 Apache Cordova 连接在一起,允许您发布到 Apple App Store 或 Google Play。

选择多渠道应用程序模板后,会生成一个包含 4 个项目的解决方案,一个用于桌面版,一个用于移动版,一个用于 Win8,一个用于共享

它可以直接编译。

========== 生成:4 个成功,0 个失败,0 个最新,0 个跳过 ==========

选中桌面应用程序后,我按 F5 看看会发生什么。它打开了这个示例应用程序。

 

回到 Visual Studio,我选择移动项目并按 F5 在模拟器中打开它。

它加载了 DXTREME 中包含的 iPhone 应用程序模拟器。它看起来是测试应用程序屏幕尺寸的一种不错的方式,但它只是一个 HTML 模拟器,不应作为最终测试体验——您需要实际的模拟器或设备来进行测试。

DevExpress 也通过其 Courier 移动应用程序解决了这个问题,该应用程序可在 Apple App Store 中用于 iOS,在 Google Play Store 中用于 Android。Courier 允许您通过扫描二维码(他们提供)来测试您的移动 Web 应用程序。它将在您的 iPhone 或 Android 设备上加载在您的本地机器上运行的 Web 应用程序。

回到 Visual Studio,我选择 Win8 应用程序,正如预期,它打开了 Windows 8 应用程序。

项目中有哪些内容?

让我们回到 Visual Studio,稍微深入了解一下项目。在桌面项目中,您会看到对共享项目的项目引用。不需要其他 DLL。这很好。

还有一些特定于设备的 CSS

和一些 JavaScript。

我四处查看,在项目的根目录下找到一个名为 app.js 的文件。打开它,我发现了这段代码片段,它使用 DXTREME 框架实例化了一个 `HtmlApplication` 对象。

$(function() {
     Application2.app = new DevExpress.framework.html.HtmlApplication({
       ns: Application2,
       viewPortNode: document.getElementById("viewPort"),
       defaultLayout: Application2.config.defaultLayout,
       navigation: Application2.config.navigation
     });
     Application2.app.router.register(":view/:id", { view: "About", id: undefined });
});

其他项目也大同小异。通用逻辑在应用程序之间共享,但您可以深入研究各个文件以调整或增强平台或设备特定的功能。

我注意到一个很酷的事情是,他们为他们的视图实现了一个自定义编辑器。它允许您在 Visual Studio 中预览视图。这很好。

从文档中学习 DXTREME

您可以在这里找到 HTML 文档:http://help.devexpress.com/HTML/#!Overview,在这里找到 Windows 8 文档:http://help.devexpress.com/#XAML/CustomDocument12019

HTML5 文档看起来不错。有一个简单的演练,看起来很像 knockout 的那个,它很好地解释了构建 DXTREME 应用程序的要素。

DXTREME 还包含几个示例应用程序,可帮助您入门并提供模板和 DevExpress 控件如何协同工作的示例。这是启动 DXTREME 时启动的应用程序。它有指向演示和示例应用程序的指针。

让我们看一下 CRM HTML JS 应用程序,看看它告诉我们如何构建 DXTREME 应用程序。CRM 应用程序包含 5 个项目

一切都一目了然。大部分内容看起来与多渠道项目模板相似,只是这个没有 Win8 项目(有单独的演示)并且包含一个服务项目。

让我们深入研究一下解决方案。ViewModels 位于共享项目中。

看起来像这样……一个基本的 Knockout ViewModel。

[ShipperViewModel.js]

(function() {
     DXCRM.ShipperViewModel = function(data) {
       this.ShipperID = ko.observable();
       this.CompanyName = ko.observable();
       this.Phone = ko.observable();
       if(data)
       this.fromJS(data);
     };
})();

它们在应用程序视图中使用

clip_image017[4]

这是 Shippers.js 作为示例。

[Shippers.js]

DXCRM.Shippers = function(params) {
     return {
       dataSource: new DevExpress.data.SimpleDataSource({
       store: DXCRM.db.Shippers,
       map: function(item) {
         return new DXCRM.ShipperViewModel(item);
       }
     })};
};

这些相同的 ViewModel 正在 WinJS 项目中使用。这太棒了。我可以看到基于 HTML 的项目之间正在进行代码重用。

演示应用程序通过 DXTREME 项目向导使用 Microsoft NorthWind 示例数据库自动生成。显然,您可以使用自己的数据,但这是在您试验时将数据引入应用程序的好方法。

然后我专注于 Win8 应用程序的单独 XAML 解决方案。它看起来像一个使用 DXTREME 控件的标准 Win8 应用程序。

部署

所以,现在您已经开发了应用程序,您需要将其打包并准备好将其交付给 Microsoft、Apple 和 Google。

所以,假设我构建了 CRM 应用程序,我想部署它。有两个解决方案,一个用于 Win8,一个用于其他所有平台。让我们尝试部署后者。

我转到解决方案中的第一个项目,即“桌面”项目。右键单击它,会给我一个“构建原生包”选项

clip_image018[4]

这将启动此对话框

clip_image020[4]

像大多数 .NET 开发人员一样,假设我从未发布过 Android 或 iOS 应用程序。我不知道如何处理这个屏幕。然后我漫步到 DXTREME 帮助文档,因为我记得之前看到过关于部署的内容。我在这里找到了“原生包”部分:http://help.devexpress.com/HTML/#!Overview/Application/Native%20Packages

事实证明,我需要注册 Apple 和 Google 开发者计划,并可以从他们那里获得我的证书文件。DXTREME 提供了 Apple 和 Google 计划的链接,以及生成证书的 XCA 链接。

在多平台部署之前,您需要一些特定于平台的知识。由于 Apple、Google 和 Microsoft 都有自己的商店、注册要求、证书等,因此您必须花一些时间学习这些。DXTREME 简化了大部分跨平台编码体验,但没有一键式解决方案来完成部署。

最终想法

花了几小时使用 DXTREME 后,它看起来是朝着跨平台应用程序开发方向迈出的良好一步。能够利用我已知的技术,并且 DXTREME 控件能够根据平台自适应地渲染,这真是太棒了。我花了一些时间研究学习 iOS 和 Android 开发需要付出什么,作为一名 .NET 开发人员,我肯定宁愿花时间学习 DXTREME。我期待着更深入地研究 DXTREME,并期待着在未来的版本中看到它的发展。

Jon

材料披露声明:我获得了酬金和免费的 DXTREME 订阅,希望我能在我的博客上提及它。无论如何,我只推荐我个人使用并认为我的读者会喜欢的产品或服务。我根据联邦贸易委员会的 16 CFR,第 255 部分:“关于广告中使用代言和推荐的指南”进行披露。

© . All rights reserved.