我需要帮助来决定Silverlight / Silverlight浏览器外/ wpf之间


10

我正处于重新编写项目的初始计划阶段,并且要在silverlight / silverlight oob / wpf之间进行选择。TL; DR结尾。

这是一个处理潜在客户/客户/约会日历的LOB应用程序。不太复杂。我正在其他地方独立研究这些选项,但我想四处询问。一些粗略的初始要求/可预见的问题是:

我必须能够使用命令行参数(sip电话)在系统上调用exe。

使SL成为问题

用户群是分布式的,我想尽可能地限制通过网络的流量,并避免一些讨厌的并发问题

我可以看到这是使用WPF的问题

软件部署/更新必须非常简单。一些用户是非技术性的(请参阅:70岁,第一次使用计算机)

现在,我们要替换的ClickOnce应用程序并不是一个大问题,而且我可以控制使用它的计算机。但是,对于用户来说,甚至不必单击clickonce“安装”按钮就更简单了。我不知道Silverlight OOB是如何处理的。

该公司计划在12个月内进行一次艰难的扩展,因此硬件部署应该快速/轻松。这个想法是在新的位置建立互联网连接,插入一些计算机,并且不需要专门的IT人员或服务器即可工作。

使SL更具吸引力

与其他服务(财务软件,asterix服务器)的集成不是近期目标,但成为系统的一部分则是最终目标。如果将单个服务设置为与那些辅助服务集成,而不必通过有线传输所有数据,则此操作将变得更加简单/高效。

使SL更具吸引力

进行多个“版本”转换是不可能的。我不知道维护Silverlight + Silverlight oob版本是什么感觉(如果有任何问题)

可能使WPF成为更好的选择。

TL; DR:从我的角度出发,silverlight应用程序最适合90%的用户,而其他10%的用户则无法使用它,因为他们需要运行exe。Silverlight OOB可能是一个快乐的中间地带,但是我目前不知道它的执行模型是什么样的(是否还有服务器端代码的概念?如果是这样,那可能是理想的选择),但我不知道了解部署/更新的工作原理。


为什么首先要替换ClickOnce应用程序?ClickOnce可以在启动应用程序时自动检查并下载可用更新。我看过replayer.codeplex.com
Marcel,

Answers:


6

好-有趣的问题。您忘了提到从SL4起可以拥有Silverlight完全信任应用程序,因此,如果您考虑使用WPF,则可以考虑使用WPF。它需要安装(ClickOnce),但您似乎正在远离它。

我还没有对OOB做任何事情,但是我很确定在浏览器和浏览器外都可以使用相同的二进制文件,因为它是项目设置,而不是单独的构建目标。

“启用从浏览器中运行的应用程序”

在Silverlight项目的Silverlight选项卡上。

因此,那里没有单独的维护问题。

您可以在承载Silverlight应用程序的Web应用程序中构建大量代码,并使用WCF RIA Services进行通信-同样,您还必须使用.NET 4和SL 4才能获得此版本的1.0。.NET 3.5和SL 4仅支持WCF RIA服务beta。这将减少a)下载的大小和b)需要在客户端上执行但会增加网络流量的代码量。

在该分数上,您可以将Silverlight代码拆分为多个程序集,并使用Prism之类的程序将其设置为按需加载。这意味着用户仅下载他们实际使用的应用程序的那些部分。您可以通过以下方法进一步减少下载量:

“通过使用应用程序库缓存来减少XAP大小”

选项。

如果您有一个“ extmap”文件与任何外部dll(第三方或.NET)一起使用,则意味着它们被捆绑成一个zip文件并单独下载以在您项目中的所有xap文件中共享。这样可以将单个xap文件保持在最小大小,并确保您在客户端计算机上只有这些其他dll的一个副本。


1
+1:感谢您的输入@ChrisF。我只是希望我认识您IRL,以便我可以选择您的大脑。
史蒂文·埃弗斯

2

您的分析非常好。

我要提到的唯一另一件事是,在Silverlight应用程序中并非所有框架都可用。该限制可能会使您选择WPF,但是您需要查看该限制如何应用于您的应用程序需求。


除了需要通过exe + args来调用SIP电话外,该应用程序大部分都是粗糙的应用程序,因此我认为我不会错过任何缺少的框架部分。
史蒂文·埃弗斯

2

几个简单的事情:

部署和“服务器端代码”:Silverlight应用程序是简单,简单的客户端应用程序。不要仅仅因为它是通过浏览器提供的事实而使您感到困惑-当您运行浏览器内SL应用程序时,您正在以压缩包的形式下载该应用程序的程序集,将其解压缩并使用插件运行它们。Silverlight本身没有“服务器端代码”的概念-如果您希望代码在远程服务器上运行,请编写WCF服务。

更新应用程序:这是OOB应用程序的常见情况,并且SL具有内置支持。Google周围有CheckAndDownloadUpdateAsync。

编辑:忘了提及-安装应用程序是在应用程序内部完成的。默认情况下,可安装的SL应用程序将具有上下文菜单操作来安装它。但是,也可以响应用户单击按钮以编程方式完成安装。还可以通过编程方式检测安装状态,因此,我所看到的一些仅打算运行OOB的SL应用程序首先要检测它们是否已安装。如果是这样,请运行该应用程序。如果没有,请显示一个带有安装该应用程序的按钮的初始屏幕。

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.