以可以翻转的方式构建 WPF ( Silverlight )应用程序是否可行(和一些指导)从Web到桌面来回?
也许某些背景是有序的。
我是非营利组织的唯一开发人员。我只开发具有很长生命周期的内部应用程序,不断修改和更改业务规则或要求。 例如,我的第一个项目是将现有的 ASP.net ( 2.0 )应用转换为 winform 应用允许在现场断开连接使用。
现在,如果我只知道我所知道的(或者我认为我知道),我可能不需要问这个,但是,我离题了。
我最近在Twin Cities Code Camp中介绍了Silverlight 3和XAML的世界,其中一位演示者使用了一些从Silverlight到WPF可互换的UI代码。
现在,关于蝙蝠,我知道Silverlight是一个子集,并不完全可以互换。从来没有,它让我思考。如果我使用WPF并从winform重新编写我们的核心应用程序,那么事实上,我可以使用 XBAP 并允许我的应用程序(几乎没有更改)基于Web和/或桌面上相同的用户界面和业务层?
作为旁注,我们所有应用中有75%是以某种方式,形状或形式变体的 CRUD 应用,并以中央SQL Server作为数据存储。
我发现以下文章也有助于让车轮转动HERE
我非常感谢这些回复,并且我将深入研究Silverlight的Out Of Browser功能。
我原来的问题试图询问的是如何让我的用户界面尽可能“轻浮”。据我所知,Out Of Browser可以允许一站式商店应用,但是以某种方式帮助我使用XAML,允许我为Web和桌面应用重用相同的UI?
在切线上;任何人都可以在Silverlight和某种类型的复制上提供任何内容吗?
答案 0 :(得分:6)
听起来您最好的选择是在Silverlight中开发应用程序并使用Out Of Browser(OOB)功能。 OOB功能允许您在桌面上安装Silverlight应用程序,以便它可以在脱机模式下运行。您可以使用包含业务应用程序模板的.NET RIA Services,以便您快速创建CRUD类型的应用程序。
对于此方法,您需要在sql数据库前面有一个Web服务层。但是,无论如何都应该存在。
对于离线模式下的数据,您可以使用独立存储(如注释中提到的Nate)。以下是该主题的一些链接:
在我当前的项目中,我们将查找表作为集合缓存在独立存储中以用于脱机模式。当用户上线时,我们刷新该数据。对于事务数据(如订单),我们不会缓存它们,但我们允许用户离线创建新的数据,然后在它们重新联机时将它们添加到系统中。它现在对我们很有用。
答案 1 :(得分:4)
你应该真正看看浏览器的Silverlight应用程序。看到这篇博文: http://wildermuth.com/2009/03/18/Enabling_Out-of-Browser_Support_in_Silverlight_3
看起来这可能正是您所寻找的。 p>
注意:浏览器外的Silverlight应用程序仍然像浏览器中的Silverlight应用程序一样完全沙箱化,而WPF应用程序完全信任并且可以完全访问用户的计算机。此外,浏览器外的Silverlight应用程序支持“断开连接”使用,并提供API以确定网络可用性。
答案 2 :(得分:2)
一个occaisonlly连接的Silverlight应用程序将成为一个熊写。耐用存储的全部功能都是隔离存储。
与XBAP相同。
您是否需要跨平台支持您的应用程序?
为什么不直接使用ClickOnce WPF应用程序,并将其设置为能够在实时连接与服务层和断开模式之间切换?
可以完成多目标WPF和SL,但这并不容易。查看Prism项目,其中包含指南和VS插件,以支持多目标。