我的任务是制作一个具有'性感'**外观的桌面应用程序。我打算用WPF来实现这一目标。其中一个要求是,桌面应用程序稍后将扩展为ASP.NET MVC Web应用程序,然后是移动(可能是Android第一个)应用程序,同时保持相同的外观。
**在这种情况下,'性感'意味着滑动菜单,以及一般的现代外观和感觉
考虑到这一点,如果我想重用组件(和/或)样式,开始桌面UI设计时最好的方法是什么?
E.g。在创建桌面应用程序时,我将使用XAML作为UI,但考虑到应该看起来与桌面相同的应用程序的Web版本,我应该/可以使用HTML / CSS吗?即使这么想也是荒谬的吗?
答案 0 :(得分:3)
你会得到1000个问题的答案,但是,我认为这是不太可能的。我将尝试解释原因(仅考虑用户界面)。
对我而言,重点不在于您可以重用,而是应该重用的内容。
桌面应用程序,Web应用程序和移动应用程序是不同的。不同的目标,不同的用户界面,不同的标准。你使用你喜欢的文字处理器的方式适用于桌面应用程序(菜单,功能区,上下文菜单和其他任何东西),但它不是正确的外观&对Web应用程序的感觉。在导航的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框架的移动版本)来优化应用程序,但这不是一个(如此)的大工作。
答案 1 :(得分:2)
在我看来,“一次到处写”的概念是无法获得的乌托邦。 一般而言,更具体地说,如果您希望用户获得最佳体验。
一方面,您可以确定使用适用于所有桌面平台的嵌入式Web浏览器来下载HTML / CSS路线,可能是Windows或Mac。拥有熟练的设计师和良好的用户体验编程技能,您可以获得出色的成果。 对于所有主流移动操作系统,iOS,Android和Windows Phone,其中某些部分可能也会以PhoneGap / jQuery Mobile / Kendo UI Mobile解决方案的形式重新用作移动版本。 潜在的缺点是应用程序不会在任何一个平台上看起来像本机应用程序。 Xamarin Mono Touch或Mono for Android也适用于look at。
另一方面,您可以将或您的应用程序逻辑放在Web上的ASP.NET Web API解决方案后面,通过Azure ACS或OAuth进行授权(如果需要)。在WPF中为桌面开发本机应用程序,为Android开发Java,您甚至可以重用一些用于Windows Phone的XAML。
就个人而言,后一种解决方案最适合我的纯粹主义者,但正如你所提到的,如果品牌和外观&感觉非常重要(以原生外观为代价),第一种选择可能更适合您的需求。
像往常一样,“这取决于”,因为答案仍然很强烈。
答案 2 :(得分:-1)
JavaScript正在运行以解决上述所有问题。使用JavaScript,创建桌面应用程序(Electron),移动应用程序(reactnative),Web也是React更好的技术