【问题标题】:Convert an ASP.NET application to a Silverlight application将 ASP.NET 应用程序转换为 Silverlight 应用程序
【发布时间】:2026-01-15 17:05:01
【问题描述】:

我正在使用 C# 和 Visual Studio 2008 SP1 开发一个三层 ASP.NET 应用程序。我正在使用 WebForms。

我想将该应用程序转换为 Silverlight 应用程序。也许我可以重用很多 ASP.NET 层的代码。

你怎么看?

【问题讨论】:

    标签: c# asp.net silverlight silverlight-3.0


    【解决方案1】:

    假设您有典型的表示层、业务逻辑层和数据层,并且假设您已将代码认真地分离到这些层中,您应该能够用 Silverlight 界面替换您的 Web 表单,并保留您的 BL 和 DAL完好无损。

    然而,实际项目往往有些混乱,这使得这种过渡更加困难。如果您使用的是 SqlDataSource,您可能会遇到问题。

    【讨论】:

    • 我正在使用实体框架来访问 SQL Server 2008 数据库。为什么你说我用SqlDataSource会出问题?
    【解决方案2】:

    这些是@Andy 的一些优点,并扩展他所说的话:

    我现在正在做同样的事情。因为我有一个相当全面的业务层,所以我已经能够做很多工作(价值几周),而在那段时间我只需要向该业务层添加一个功能。这很重要,因为它减少了所需的测试量。它还使任何剩余的测试变得更容易,因为更容易将旧版本应用程序的输出与新版本进行比较。

    真正有助于实现这一目标的一种模式是外观模式。我构建了一个位于业务层之上的 WCF 层,通过使用外观模式,我可以返回更适合新 Silverlight 接口的结果,而不会干扰业务层。

    您的新 UI 很可能具有与 ASP.NET 版本截然不同的体系结构。您将能够在 UI、代码和数据之间实现更清晰的分离。一些我引以为豪的 ASP.NET 代码在等效的 silverlight 代码旁边看起来非常糟糕。准备好砍掉你的旧代码,并从后面的直接代码中消除那些业务规则:)

    【讨论】:

    • Facades 绝对是个好主意,你甚至可以在 WCF 端有另一个层(类),例如UIApplicationServices 与业务层接口,但不假设任何特定的 UI。然后 WCF 服务门面与 UIApplicationServices 对话以向 UI 提供服务(无论是 ASP.Net、Silverlight、WinForms 等)。使用 UIApplicationServices 之类的东西很酷的一点是,您可以直接从 webform 调用(例如,在第一页加载时填充下拉列表),然后使用 AJAX 使用其他操作。
    【解决方案3】:

    如果您的目标只是复制由 ASP.NET 提供的 UI 行为,那么是的,假设良好的分区您可以重用相当多的代码。不过你会问为什么要这样做。

    另一方面,如果目标是为用户提供更丰富的交互体验,那么您很可能会发现,即使是设计良好的业务层也不会像这种完全不同的 UI 所需要的那样运行.

    【讨论】: