如何为Windows 8构建企业桌面应用程序


15

我认为我对Windows 8消费者应用程序开发的期望有所了解。在WinRT之上创建一个新的基于Metro的UI,通过Marketplace将其部署到您的客户中,每个人都将赢得胜利。似乎很简单。不幸的是,我不从事这项业务。

我为大型企业开发内部业务线应用程序。当前,我们使用诸如WPF和Silverlight之类的.NET技术来创建可通过Web或ClickOnce轻松部署给我们用户的丰富UI。这些应用程序可以轻松支持WinXP和Win7,并且我们的开发人员可以使用XAML,这是一种非常可靠的UI技术。

WPF和Silverlight似乎在这一点上有可疑的期货,因此继续投资于这些股票有点令人担忧。但是Metro UI似乎不适用于企业应用程序,并且WinRT API在企业应用程序需要做的“典型”事情上有很大的局限性。

我应该如何设计当前已部署到WinXP和Win7的基于XAML的应用程序,以便它们在Win8上可支持并可以发展?

出于这个问题的目的,假设ASP.NET之上的HTML5提供的功能不足以适合我要创建的应用程序。我知道我可以在某些应用程序中使用HTML5,但我试图弄清楚在不够的情况下应该怎么做。

编辑1: 这是对@Emmad Kareem的评论的回应。我同意Silverlight / WPF在短期内(2-5年)是可行的。但是,我们生产的应用程序的使用寿命可能非常长(10-20年以上)。因此,给定技术的长期生存能力是我们关注的问题。另外,我们担心,如果社区认为“ Silverlight / WPF开发”中的技术“过时”,那么找到对它们感兴趣的开发人员将越来越困难。我只是想了解我的选择,睁开眼睛做出决定。


必须参加会议,但我为您提供了答案:)
Michael Brown

2
为什么要更改已经熟悉的WPF / Silverlight?您的声明“ WPF和Silverlight的未来前景不佳”,那么,Microsoft不会在一夜之间放弃这项技术。如果您现在拥有足够的功能,它是否会继续增长并不是真正的问题。简而言之,您必须有充分的技术理由来考虑使用全新的体系结构。人们的恐惧是人们失去了对另一种技术的经验。我不能怪他们。
2011年

3
您希望单个技术堆栈能够持续10年以上吗?为什么不关注良好的体系结构和设计原则,以使您的系统随着时间的推移而发展以使用适当的技术?看看Visual Studio-它自1995年以来一直存在,并且随着时间的推移而发展。例如,Visual Studio 2010添加了一个主要的UI刷新,其中包括使用WPF和其他体系结构更改来添加可扩展性点。您无法控制明年哪些技术或范例将会变得重要,而在您所要寻找的时间范围内就更少了。
Thomas Owens

5
是什么让您认为您将在20年后运行Windows?
JonnyBoats 2011年

1
@JonnyBoats:因为我们20年前就开始运行它?还是因为他们的主要竞争对手基于更的系统?无法预测特定技术的崩溃或生存。
Matthieu

Answers:


15

我如何学会停止担心和热爱MS-Stack

您仍然可以在Windows 8上运行VB6应用程序不论好坏,逆向兼容一直是MS生态系统的趋势。您不必担心WPF / Silveright等技术的生存,甚至不必担心Winforms的生存。

另一方面,您必须接受一个长期项目,永远不会拥有最新,最可爱的技术。

实际上,关于技术选择,您应该问自己的问题是:

  • 我的团队是否足够满意该技术以提高生产力?
  • 我的团队乐于使用该技术吗?
  • 我可以为此技术招募人员吗?

这是对这些问题的答案的组合,应该会引导您做出选择,而不是主要出于营销原因而形成的趋势。

有关不断变化的技术主题的更多信息,您应该阅读Joel Spolsky的“ Fire And Motion”

那些陷入困境的公司就是那些花太多时间阅读茶叶以找出微软未来方向的公司。人们担心.NET并决定重写.NET的整个体系结构,因为他们认为自己必须这样做。Microsoft正在向您射击,这只是掩盖之火,因此他们可以前进而您不能前进,因为Bubby是游戏的玩法。您要支持冰雹风暴吗?肥皂?RDF?您是否支持它是因为客户需要它,还是因为有人在朝您开枪而您感觉必须做出回应?大公司的销售团队了解掩护。

那是近十年前写的。

建筑与技术

体系结构和技术是要做的两个独立的事情和选择:

您可以将服务,资源,第三方控件,ORM等与所有这些技术一起使用,也可以与下一个技术一起使用,也可以不使用。

您可以使用所有这些技术以多种方式扭曲和弯曲MVC:是否绑定?代码是否在视图后面?控制器与否?每次或仅在需要时使用ViewModel吗?即使在一项特定技术的范围内,实现设计模式的方法也有很多。

如果没有对项目和团队的深入了解,将您逼入其中之一将是不现实的。它只会基于个人喜好,最终会出现“我的技术比你的技术更好”的摊牌。

可以诚实和客观地建议的唯一方法是,使用可以应用的最佳实践来创建经受时间考验的体系结构,也许,实际上,它可能会被移植或至少在未来的未知技术中重复使用。 。而且,可升级性/可移植性甚至不应该是体系结构的主要目的。

您的体系结构和所选技术的主要目的是向您的老板/客户提供满足其实际需求的产品。

自1979以来,MVC(以及它的弟弟MVVM)在OOP语言领域及以后逐渐被证明是健壮体系结构的基础。但是,在10年的项目中选择应使用的特定技术仍然是您的决定。


我完全同意这个答案。您永远无法确定。但是有多种技术可以满足您提出的问题,我仍然必须在其中选择。
RationalGeek

@jkohlhepp:添加了有关架构和技术的段落。我的观点是,不可能客观地推荐一种技术而不是另一种技术或一种体系结构。
Matthieu

您的立场是,没有比较架构/技术的客观依据吗?这不是建筑学科的全部目的吗?我同意,这完全取决于我老板的要求。这些要求之一就是要以最低的成本获得最长的使用寿命,因此是这个问题。
RationalGeek

@jkohlhepp:恕我直言,软件体系结构学科就像医学。您会找到针对特定疾病的正确治疗方法的经验。有时有不同的方法可以这样做,尝试用相同的方法以相同的方式治愈每个人可能很危险。如果您有一支由WPF和Silverlight组成的高效的,经验丰富的程序员团队,请坚持使用并保留您现有的体系结构。如果您必须更改它,则不要仅因为有新的做事方法(已经由Microsoft销售)来更改它,而您已经在高效地进行这些工作。
Matthieu

我可以加入那个Matthieu。感谢您的周到答复。
RationalGeek

1

我将在有关MVVM的书中谈到的一件事是如何利用该模式创建可重用的核心应用程序。您应该为目标平台(Web,Silverlight,电话,WPF或WinRT)创建本机UI。但在大多数情况下,您可以将驱动该UI的逻辑封装在ViewModel之后。

您访问的任何服务都应包装在一个界面(立面模式)的后面,该界面在平台之间或多或少具有可移植性。该接口应在前面映射到您的客户端API,并在后面转换为包装服务的API。

此策略可帮助您创建一个坚实的核心框架,该框架仅需要在其上分层放置新的UI。可以将其视为您的视图模型是肌肉,您的服务就是骨骼(和器官)的骨架。WPF / Silverlight / WinRT形成皮肤。

实际上,我在书中很早就指出的一件事是MVVM并不像看起来的那么新。Dolphin Smalltalk具有类似的模式,他们称之为MMVC(两个M是应用程序模型和域模型)。我们今天使用的ViewModel只是MMVC的Application Model和Controller的组合。实际上,许多开发人员发现有时将ViewModel分成两个组件是很有意义的(该控制器用于导航和编排多个VM,以便VM可以幸福地保持对其他组件的意识)。


我完全同意分层应用程序的不同部分。我也完全同意,您应该使UI尽可能的笨拙,因为UI技术往往会大量变动。但是,即使在创建了这些层之后,您仍然会猜测从长远来看哪种技术会更好/更便宜。
RationalGeek

如果我不得不猜测...虽然HTML5成为当今的新风尚,但Microsoft将继续支持XAML,因为它们可以控制XAML。他们从Java中汲取了教训(当Sun对其进行诉讼时,他们最初计划将Java作为主要的.NET语言使用),HTML支持是可以达到的。根据扎实的原则(具有丰富的可移植对象模型支持的声明性UI)构建应用程序可以帮助您度过难关。我什至有使用Javascript做MVVM的示例(请查看敲除js)。
迈克尔·布朗

0

您说XAML是可靠的,但随后说WPF的前景令人怀疑。除非我缺少某些东西,否则WPF使用XAML,而且我看不到两者是分开的。关于WPF是否可能使用某些其他基本技术,或者关于Microsoft,甚至可能考虑构建一种构建UI的新方法,我是否缺少一些消息?除此之外,我怀疑WPF到哪里去了,但这不是MS第一次废弃我们的代码。

如果您需要一个丰富的UI应用程序并且HTML5不会削减它,并且您是组织致力于Windows OS,我认为WPF是最好的选择,因为它是目前为止最新/最强大的工具,当然是在Winforms上...


我从MS那里听到的方向表明,WPF的长期前景不大。但是他们还没有宣布任何消息。我希望他们会像使用LINQ To SQL一样将其置于“维护模式”。
RationalGeek

WPF在Windows 8中被弃用(因为您会突然转回到“桌面模式”,并脱离沉浸式Metro体验)。但是,您可以使用XAML构建Metro应用程序。它们是完全独立的技术。
Domenic

嗯,没有不赞成之处,因为桌面仍然是体验的关键部分。至于“完全独立的技术”-真的吗?WPF与Silverlight确实已经非常接近主题的变体(例如,相对于工作流程使用XAML ...)
Murph

0

我对此的看法是,您不应过多地关注应用程序的实现细节。如果从更大的角度看,则可以隔离技术依赖性。通过isolatin对xaml / wpf / silverlight的依赖,您可以确保可以用下一代技术替换ui组件/技术,从而即使在20年的时间里也可以保证连续性。这也将有助于解耦系统组件,从而避免必须执行此类替换的影响。(在此我假设,为了提供连续性,可以修改解决方案以使其在下一代平台上运行是可以的)

提供与这些技术依赖关系隔离的另一种方法是启用虚拟化。如果您以能够在虚拟机中运行它们的方式来设计应用程序,那么您将能够在20年后完成!


从某种意义上说,我可以理解这一观点。但是,我确实需要在某个时候选择一种UI技术,并且根据该选择,它迟早需要进行替换/更新。我想做出一个选择,以最大程度地延长使用寿命。
RationalGeek

根据生命周期网站提供的信息,Silverlight5将在2021年10月之前得到支持support.microsoft.com/lifecycle/?p1=16278因此,无论路线图发生什么,它仍然是一个不错的选择。
Carlo Kuip
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.