4

构建WPF ( Silverlight ) 应用程序以使其可以从 Web 到桌面来回翻转的方式 (以及一些指导)有多可行?

也许某些上下文是有序的。

我是一家非营利组织的孤独开发者。我只开发生命周期很长的内部应用程序,并且不断修改和更改业务规则或要求。 例如,我在这里的第一个项目是将现有的ASP.net ( 2.0 ) 应用程序转换为winform应用程序,以允许在现场断开连接使用。

现在,如果我当时只知道我所知道的(或认为我知道的)现在我可能不需要问这个,但是,我离题了。

我最近在 Twin Cities Code Camp 上了解了 Silverlight 3 和 XAML 世界,其中一位演讲者正在使用一些 UI 代码,从 Silverlight 到 WPF 可互换使用。

现在,马上,我知道 Silverlight 是一个子集,不能完全互换。无论如何,它让我思考。如果我使用 WPF 并从 winform 重新编写我们的核心应用程序,那实际上是否可以让我使用XBAP并允许我的应用程序在几乎没有更改的情况下成为基于 Web 和/或具有相同 UI 和业务层的桌面?

  • 我需要考虑哪些因素才能实现这种灵活性?
  • 任何人都可以提供任何指导资源?

附带说明一下,我们所有的应用程序中有 75% 以某种方式、形状或形式是CRUD应用程序的变体,其中中央 SQL Server 作为数据存储。

我发现以下文章也有助于转动车轮,这里


编辑

我非常感谢您的回复,并且我肯定会更深入地研究 Silverlight 的 Out Of Browser 功能。

我最初的问题试图问的是我将如何使我的 UI 尽可能“可翻转”。我知道 Out Of Browser 可能允许一站式商店应用程序,但除了使用 XAML 之外,在某种程度上,允许我为 Web 和桌面应用程序重用相同的 UI 吗?

在切线上;任何人都可以在 Silverlight 和某种类型的复制上提供任何东西吗?

4

3 回答 3

6

听起来最好的选择是在 Silverlight 中开发应用程序并利用浏览器外 (OOB) 功能。OOB 功能允许您在桌面上安装 Silverlight 应用程序,以便它可以在脱机模式下运行。您可以使用包含业务应用程序模板的.NET RIA 服务,让您可以非常快速地创建 CRUD 类型的应用程序。

对于这种方法,您需要在您的 sql 数据库前面有一个 Web 服务层。但是,无论如何,它都应该存在。

对于离线模式下的数据,您可以使用独立存储(正如 Nate 在评论中提到的那样)。以下是有关该主题的一些链接:

在我当前的项目中,我们将查找表缓存为隔离存储中的集合以用于离线模式。当用户上线时,我们会刷新该数据。对于交易数据(如订单),我们不缓存它们,但我们允许用户离线创建新数据,然后在他们重新在线时将它们添加到系统中。它现在对我们运作良好。

于 2009-11-05T19:58:27.923 回答
4

你真的应该看看浏览器之外的 Silverlight 应用程序。请参阅此博客文章: http ://wildermuth.com/2009/03/18/Enabling_Out-of-Browser_Support_in_Silverlight_3

看起来这可能正是您正在寻找的。

注意:浏览器外的 Silverlight 应用程序仍然像浏览器内的 Silverlight 应用程序一样完全沙盒化,这与 WPF 应用程序不同,它是完全信任的并且可以完全访问用户的计算机。此外,浏览器外的 Silverlight 应用程序确实支持“断开连接”使用并提供 API 来确定网络可用性。

于 2009-11-05T19:57:35.967 回答
2

偶尔连接的 Silverlight 应用程序将难以编写。持久存储所拥有的只是隔离存储。

与 XBAP 相同。

您的应用程序需要跨平台支持吗?

为什么不只做一个 ClickOnce WPF 应用程序,并将其设置为能够在与服务层的实时连接和断开连接模式之间切换?

多目标WPF和SL可以做到,但并不容易。查看Prism项目,其中包括指导和支持多目标的 VS 插件。

于 2009-11-05T21:36:26.390 回答