C# 如何在开发桌面应用程序时考虑web和移动应用程序?

C# 如何在开发桌面应用程序时考虑web和移动应用程序?,c#,wpf,user-interface,desktop-application,C#,Wpf,User Interface,Desktop Application,我的任务是制作一个具有“性感”外观的桌面应用程序。我打算使用WPF来实现这一点。其中一个要求是桌面应用程序稍后将扩展为ASP.NET MVC web应用程序,然后是移动应用程序(可能首先是Android),同时保持相同的外观 **在这种情况下,“性感”意味着滑动菜单,以及总体上现代的外观和感觉 考虑到这一点,如果我想重用组件(和/或)样式,那么在开始桌面UI设计时,最好的方法是什么 例如,在创建桌面应用程序时,我会使用XAML作为UI,但考虑到应用程序的web版本应该与桌面相同,我是否应该/可以

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

**在这种情况下,“性感”意味着滑动菜单,以及总体上现代的外观和感觉

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


例如,在创建桌面应用程序时,我会使用XAML作为UI,但考虑到应用程序的web版本应该与桌面相同,我是否应该/可以使用HTML/CSS?甚至这样想都是荒谬的吗?

在我看来,“一次编写,随处可见”的概念是一个无法实现的乌托邦。 无论是一般意义上的,还是更具体地说,如果您希望用户拥有尽可能最好的体验

一方面,您可以肯定地沿着HTML/CSS路线前进,在所有桌面平台上使用嵌入式web浏览器,可能是Windows或Mac。有了熟练的设计师和良好的用户体验编程技能,您可能会取得优异的效果。 其中的一些部分可能还可以作为一个移动版本,以//解决方案的形式重新用于所有主要的移动操作系统、iOS、Android和Windows Phone。 潜在的缺点是,在这两种平台上,应用程序看起来都不是本地应用程序。Xamarin或Xamarin也可能是一种值得信赖的东西

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

就个人而言,后一种解决方案最适合我的纯粹主义者,但正如您所提到的,如果品牌和外观非常重要(以本地外观为代价),那么第一种方案可能更适合您的需要


像往常一样,“视情况而定”,因为答案仍然很强。

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

为什么? 对我来说,重点不是你能重用什么,而是你应该重用什么

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

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

看看这个:

即使没有针对web的标准指南,也可以看看这篇文章(想象一下在桌面应用程序中使用这些技巧):

你能看到多少联络点?此外,对于受限的应用程序集,您可能会将web用户界面和桌面用户界面(移动应用程序在使用中总是太不一样)稍微聚合一点,但这取决于您的用户类型以及他们的背景和经验

什么 如果使用WPF编写应用程序,则可以重用部分代码来为web构建Silverlight应用程序。我确信您不会重用所有东西,因为对于真实世界的应用程序,它们之间的差异太大了

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

使用HTML/CSS的想法还不错,你可以用HTML5/CSS3/JavaScript编写一个桌面应用程序,它可以在任何地方运行(桌面上有Windows8、web和手机)。好的,至少稍作修改


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

JavaScript正在针对上述所有问题运行。使用JavaScript,创建桌面应用程序(Electron)、移动应用程序(reactnative),网络也反应更好的技术

谢谢你的回答(虽然差不多4年后!)-我最近一直在与Cordova合作,这似乎是我需要的“灵丹妙药”。我希望我在4年前就采取这种方法!!