如何在现有项目的Silverlight中使用业务对象

时间:2011-02-16 13:18:17

标签: c# silverlight

我们拥有一个非常大的解决方案,其中包含自定义数据访问和业务逻辑层。目前,我们有一个Windows窗体UI以及一个aspx Web界面。

我们现在希望用Silverlight项目替换aspx前端。我们首先要使用现有的业务逻辑层(业务对象),随后调用我们的自定义数据层来检索和更新数据。这些都是.net 3.5类库项目。

是否可以使用这些项目?或者我是否需要使用像EF4这样的东西来重写数据访问层?使用RIA服务访问这些对象是一种解决方案吗?

如果有任何想法如何实现这一目标或有这方面的经验,请告诉我。

3 个答案:

答案 0 :(得分:1)

最大的问题是,您是否将UI设计移植到Silverlight(在可能的情况下可能会有点小问题)或者您是否正在重新设计UI?

如果重新设计,那么就忘记了旧的业务对象。无论喜欢与否,旧的业务对象将面向旧的UI,尤其是其行为。基于EF4的新模型将是这里的传统方法。

如果您正在以相同的方式移植UI,但使用Silverlight旋转,那么可能能够通过WCF重用某些业务对象。然而,它也同样令人怀疑。

答案 1 :(得分:0)

SL应用程序只能引用SL classLibrary或具有Web /服务引用程序。

在您的情况下,我将创建一个WCF服务库以用作桥接器,我将从该层公开我的业务实体。

由于您不必将实体定义移动到WCF类库中的partial关键字,您可以在DataContracts中再次将它们再次定义为部分...

...当然要了解细节,这取决于你的实体的完成方式,如果你有共同的类或接口等等,但你肯定可以做你需要的而不需要完全重写你的实体......

答案 2 :(得分:0)

达维德有一个观点。您可以将它们公开为datacontracts并让它们在客户端上生成。

如果您需要额外的客户端逻辑或属性,那么您可以做的是将库中的类添加为新SL库中的链接。然后,只要它们与服务器上的命名空间相同(您可以通过在SL库上设置默认命名空间来强制执行此操作),svcutil将在生成代理时检测它们并将使用它们。

将它们定义为部分,然后使它们可以在两侧具有独特的逻辑或属性。