【问题标题】:How to approach desktop application development with web and mobile apps in mind?如何在考虑到 Web 和移动应用程序的情况下进行桌面应用程序开发?
【发布时间】:2012-04-17 01:36:57
【问题描述】:

我的任务是制作一个具有“性感”** 外观和感觉的桌面应用程序。我打算使用 WPF 来实现这一点。其中一个要求是桌面应用程序稍后将扩展为 ASP.NET MVC Web 应用程序,然后是移动(可能首先是 Android)应用程序,同时保持相同的外观和感觉。

**在这种情况下,“性感”是指滑动菜单,以及普遍现代的外观和感觉

考虑到这一点,如果我想重用组件(和/或)样式,在开始桌面 UI 设计时采用什么最佳方法?

例如在创建桌面应用程序时,我会为 UI 使用 XAML,但考虑到应用程序的 Web 版本应该看起来与桌面相同,我应该/可以使用 HTML/CSS 代替吗?这么想是不是很可笑?

【问题讨论】:

    标签: c# wpf user-interface desktop-application


    【解决方案1】:

    这个问题你会得到 1000 个答案,但是是的,我认为这不太可能。我将尝试解释原因(仅考虑用户界面)。

    为什么

    对我来说,重点不是您可以重用什么,而是您应该重用什么。

    桌面应用程序、网络应用程序和移动应用程序是不同的。不同的目标、不同的用户界面、不同的标准。例如,您使用最喜欢的文字处理器的方式适用于桌面应用程序(菜单、功能区、上下文菜单和其他任何东西),但它不适合 Web 应用程序的外观和感觉。在您导航的网络应用程序中,可能您没有很多对话框,用户可以在页面之间来回移动。现在想象一下同样的移动应用程序!它必须设计成可以用手指使用,按钮必须很大,而且根本不应该有对话框(而且我已经过度简化了主题)。

    一个应用程序甚至不应该与这些平台相似,每个平台都有自己的特点和指南。如果您不关注它们,即使您的用户界面非常性感,您的用户也不会对您的应用程序感到满意。如果您想为网络编写一个好的应用程序,那么请确保它与桌面版本不同(有时,但这取决于应用程序的类型,完全不同),而移动版本将是甚至更多不同(即使不考虑语言和开发环境)。
    你想象一个桌面版的 StackOverflow 网站吗?你认为它的外观和行为应该相同吗?我猜你的回答会是“不”,即使我们都很欣赏 SO 对网络的作用。

    看看这个:

    即使没有适用于网络的标准指南,也请查看这篇文章(并想象将这些技巧用于桌面应用程序):

    您可以看到多少个联系点?此外,对于一组受限的应用程序,您可能会稍微融合一点 Web 的 UI 和桌面的 UI(移动应用程序在使用上总是有很大的不同),但这取决于您的用户类型有他们的背景和经验。

    什么

    如果您使用 WPF 编写应用程序,则可以重用部分代码来构建适用于 Web 的 Silverlight 应用程序。我相信您不会重用所有内容,因为对于现实世界的应用程序,它们的差异太大了。

    对于 Android(甚至考虑为 Mono 编写),您根本无法重复使用它们(好吧,这将是一个参考,但您必须重写)。当然,如果您使用 Windows Phone,您的 XAML 将被部分重用,甚至您的代码也将被重用。

    使用 HTML/CSS 的想法不错,您可以用 HTML5/CSS3/JavaScript 编写一个桌面应用程序,它可以在任何地方运行(带有 Windows 8 的桌面、Web 和移动设备)。好的,至少做了一些修改。

    不要忘记可以在移动设备上使用 Web 应用程序。您可能需要使用适当的 CSS 来优化应用程序(并且可能使用您最喜欢的 JavaScript 框架的移动版本),但这并不是一项(那么)大工作。

    【讨论】:

      【解决方案2】:

      在我看来,“一次编写,到处运行”的概念是一个无法实现的乌托邦。 笼统地说,更具体地说,如果您希望用户获得最佳体验。

      一方面,您可以肯定地走 HTML/CSS 路线,使用适用于所有桌面平台(可能是 Windows 或 Mac)的嵌入式 Web 浏览器。凭借熟练的设计师和良好的 UX 编程技能,您可能可以获得出色的结果。 其中的某些部分可能也可以作为PhoneGap/jQuery Mobile/Kendo UI Mobile 解决方案形式的移动版本重新使用,适用于所有主要的移动操作系统、iOS、Android 和 Windows Phone。 潜在的缺点是该应用程序在任何一个平台上都不会被视为本机应用程序。 Xamarin Mono TouchMono for Android 也可以是 look at

      另一方面,您可以将您的应用程序逻辑放在 Web 上的 ASP.NET Web API 解决方案后面,通过 Azure ACS 或 OAuth 进行授权(如果需要)。在 WPF 中为桌面开发原生应用程序,在 Java 中为 Android 开发本机应用程序,您甚至可以为 Windows Phone 重用其中的一些 XAML。

      就我个人而言,后一种解决方案最适合我的纯粹主义者,但正如您所提到的,如果品牌和外观和感觉非常重要(加上原生外观的成本),那么第一种选择可能更适合您的需求。

      像往常一样,“这取决于”作为答案仍然很强烈。

      【讨论】:

        【解决方案3】:

        JavaScript 正在运行所有上述问题。使用 JavaScript ,创建桌面应用程序(Electron),移动应用程序(reactnative),Web 也是 React 是更好的技术

        【讨论】:

        • 感谢您的回答(尽管已经将近 4 年了!) - 实际上我最近一直在使用 Cordova,它似乎是我需要的“灵丹妙药”。我希望我在 4 年前采用这种方法!
        猜你喜欢
        • 2015-10-14
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 2011-06-03
        • 1970-01-01
        相关资源
        最近更新 更多