C# 将ASP.NET应用程序转换为Silverlight应用程序

C# 将ASP.NET应用程序转换为Silverlight应用程序,c#,asp.net,silverlight,silverlight-3.0,C#,Asp.net,Silverlight,Silverlight 3.0,我正在用C#和Visual Studio 2008 SP1开发一个三层ASP.NET应用程序。我正在使用网络表单 我想将该应用程序转换为Silverlight应用程序。也许我可以重用很多ASP.NET层的代码 您觉得怎么样?假设您拥有典型的表示层、业务逻辑层和数据层,并且假设您已将代码认真地划分为这些层,您应该能够用Silverlight界面替换Web表单,并保持BL和DAL不变 然而,真正的项目往往有点混乱,这使得这种转换更加困难。如果您使用的是SqlDataSource,您可能会遇到问题。这

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

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


您觉得怎么样?

假设您拥有典型的表示层、业务逻辑层和数据层,并且假设您已将代码认真地划分为这些层,您应该能够用Silverlight界面替换Web表单,并保持BL和DAL不变


然而,真正的项目往往有点混乱,这使得这种转换更加困难。如果您使用的是SqlDataSource,您可能会遇到问题。

这些都是好的方面@Andy,下面是他所说的:

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

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


不过,您的新UI很可能与ASP.NET版本具有完全不同的体系结构。您将能够在UI、代码和数据之间实现更清晰的分离。我引以为豪的一些ASP.NET代码与同等的silverlight代码相比,看起来非常糟糕。准备好将旧代码切碎,并从后面的直接代码中删除这些业务规则:)

如果您的目标只是复制ASP.NET提供的UI行为,那么是的,假设分区良好,您可以重用大量代码。你会问为什么你想这么做


另一方面,如果目标是为用户提供更丰富的交互体验,那么您可能会发现,即使是设计良好的业务层,其行为方式也不符合这种截然不同的UI的需要

我正在使用实体框架访问SQLServer2008数据库。为什么你说如果我使用SqlDataSource会有问题?Facades绝对是个好主意,你甚至可以在WCF端有另一个层(类),例如UIApplicationServices,它与业务层接口,但不采用任何特定的UI。然后WCF服务facades与UIApplicationServices对话,以向UI提供服务(无论是ASP.Net、Silverlight、WinForms等)。使用UIApplicationServices之类的服务最酷的地方是,您可以直接从webform调用(例如,在第一页加载时填充下拉列表),然后使用AJAX使用其他操作。