2010-11-24 49 views
0

编码器,我正在设计/实现(是的,都在同一时间)我自己的CMS的原型。我使用Asp.net,WCF和silverlight。到目前为止,我有我的项目如下模式:Asp.net + Silverlight + WCF和n层架构

表示层[Silverlight的& Asp.net/html]> WCF>商业逻辑>数据库

我的模型的目标是使它容易程度在未来的应用。可以从任何可以使用我的WCF服务的应用程序访问应用程序。

不幸的是,我在实现我的模型时遇到一些困难。在我看来,如果我有我的解决方案三个项目:

解决方案:

  • -Asp.net [演示层]
  • -Silverlight [演示层]
  • -WCF [WCF和业务逻辑]

然后,我将不得不在我的表示层和我的WCF层重复很多类。

这里是一个场景:假设我在我的WCF中有一个Post类,这是我的BL的一个实现。在创建服务引用的客户端实例之后,我可以使用诸如client.AddPostAsync(post参数)之类的行添加一个来自我的PL的新帖子。但是,如果想通过调用WCF方法来检索我的PL中的Post对象,那么我将不得不在我的PL中实现一个Post类,这与我的WCF中的Post类完全相同!

因此,从长远来看,我将结束与无论是在我的WCF层和我的PL类很多重复。我觉得有些东西我不明白,或者我在模型中弄乱了某些东西?请帮忙!

+2

当您将服务引用添加到您的表示层时,它会为您生成所有数据合同。您不必再次定义它们。如果我错过了一些东西,你可以给你的WCF方法的完整方法原型? – Andrew 2010-11-24 06:32:31

回答

0

事实上你没有从在Silverlight WCF服务复制类(与DataContract属性),它们将被简单地自动创建当你创建一个服务引用到WCF服务。

Howether他们会很简单basicly商店数据的字段类,所以我能理解你可能想在Silverlight创建一些功能重复,如果你需要它们背后的一些逻辑。我在我的项目中使用相同的模型,也有这个问题。

我想你应该计划你的建筑提前知道这一点,使这些WCF继承的类越来越看起来像DataTransferObject模式类,以避免大规模的集体重复。

+0

我注意到的一件事是,我只能在client_GetPostsCompleted(..)方法中设置事件处理ex)之后调用类。它是否正确? – ealshabaan 2010-11-24 14:52:43