将 Windows 7 桌面应用程序转换为 Windows 8 和 Azure
将 Windows 7 桌面应用程序转换为 Windows 8 和 Azure。
介绍
将传统的 Windows 桌面应用程序转换为可以销售到 Windows 8 应用商店的、基于云的智能客户端应用程序,需要涉及哪些内容?本文将探讨将现有桌面应用程序移植到云中的挑战和机遇。
背景
几年前,我使用 WPF 创建了一个适用于 Windows 7 的桌面应用程序,名为 Infovark Personal Edition。它是一个个人信息管理工具,允许您使用类似 wiki 的界面创建项目。Infovark 可以导入和同步来自文件系统的文件,以及来自 Outlook 的邮件、便笺和联系人,以保持项目最新。可以将其视为 Xobni 和 Evernote 的结合体,由两个人在地下室开发的。
虽然 Infovark Personal Edition 在单个计算机上的单个用户使用效果很好,但我们收到了大量关于将应用程序迁移到云端的反馈,这样用户就可以从任何地方访问他们的项目。
我们将利用这篇文章来探索和记录我们从富 WPF 客户端应用程序到与 Azure 通信的智能客户端的转换过程。
目标
这是一个概念验证。我的目标是利用有限的资源和时间,找出转换是否可行。如果我能将后端数据存储层移至 Azure,并创建一个允许我们执行 Infovark Personal Edition 的一些基本操作的网站,我将认为这次转换是成功的。
作为第二阶段,如果我有时间,我将构建一个 Windows 8 精简客户端,它可以使用 Azure Web 服务对该数据存储执行 CRUD 操作。
我们现在不会担心对现有 Infovark Personal Edition 产品进行全面的功能转换。例如,由于安全限制,现有应用程序的一些高级爬取和同步行为无法在 Windows 8 应用商店应用程序中复制。我仅仅想证明我们可以将数据和部分业务逻辑迁移到云端。
同样,我不会花太多时间在用户界面上。如果原型有效,Infovark, Inc. 将会构建一个真正的产品版本,并投入时间和资源进行设计和可用性。
技术
当前应用程序使用以下技术构建:- C#
- WPF
- Firebird SQL
- Lucene.NET
我们的第一步是确定可以从现有应用程序中保留哪些部分,哪些部分需要创建或重建。
网站和 Web 服务
我们将从需要评估的新技术开始。我们将使用 ASP.NET MVC4 为我们的应用程序构建一个简单的 Web 界面。稍后,我们将创建一些基本的 CRUD Web 服务来支持 Windows 8 客户端应用程序。
数据访问层
现有应用程序的数据访问层是自制的。它不使用 Entity Framework 或 Linq-to-SQL。我希望能够保留其中的大部分代码。
我们需要将 Firebird SQL 替换为 Azure 上的 SQL Server。Firebird 是一个很棒的、符合 ANSI SQL 标准的单文件数据库引擎。其 SQL 语法与 Microsoft 使用的 T-SQL 大致兼容,因此可能只需要更改连接字符串。
数据访问层使用 Lucene.NET 进行全文索引和搜索。我预计将继续使用 Lucene.NET,但将其运行在云端。
业务逻辑
对于这个原型,我们只关心基本的 CRUD 操作和搜索。我们将移除现有桌面版 Infovark Personal Edition 应用程序的大部分“智能”。
客户端技术
假设我们已将应用程序的核心部分迁移到 Azure,在转换过程的第二部分,我们将创建一个与 Azure 托管的 Web 服务通信的 Windows 8 智能客户端,有望实现一些感觉“原生”于 Windows 操作系统的丰富交互。
我不确定在 Windows 8 中应该使用什么客户端表示技术。我应该坚持使用 WPF 吗?我应该使用 HTML 5 吗?如果您有建议,请留下评论。
风险
这是一个在短时间内完成的大型项目。我不知道我是否能够实现最初设定的所有目标,但我会尽力而为。(我还有一份全职工作,并且希望保住它!)
桌面应用程序和 Web 应用程序彼此之间差异很大,所以我不知道我将能够多么轻松地将它们从一种类型翻译到另一种类型。我们可能会发现,扔掉所有现有代码并从头开始更有意义。没关系;这正是概念验证的意义所在。
我以前从未用过 Azure,也从未用 ASP.NET MVC 构建过网站。两者都存在学习曲线。
我想作为一家小型软件初创公司的联合创始人,我应该关心公开原型设计。但我认为,从开发者社区获得的任何帮助、建议或评论都只会帮助我们的产品变得更好。
回报
这是一次学习经历,因此主要的回报将是接触 Microsoft 技术栈中的新工具和技术。它也可能为 Infovark, Inc. 的进一步产品开发奠定基础。
还有一个正在进行的 Windows Azure 开发者挑战赛… 除了吹嘘的权利,奖励之一是 Surface 平板电脑。我非常希望能赢得一台,以便进一步探索 Windows 8 客户端开发。
挑战 1:入门
我已经注册了 Windows Azure 的 90 天免费试用。注册过程很简单。我将开始发布我的想法和印象,因为我开始使用它。
历史
- 2013 年 5 月 2 日 — 初稿 — 项目的愿景和范围。