2009-11-30 65 views
0

我们正在开始使用Entity Framework v1构建公共实体模型。目标是将各种常见操作公开为可供多个不同客户端使用的服务。我们遇到的问题是重复使用多个服务中的类型。例如:WCF - 在多个服务中使用相同类型

服务1(在http://example/service1/service.svc)返回一个List

服务2(在http://example/service2/service.svc)返回其具有参照产品对象评论对象。

我想在我的客户端应用程序(通常是Silverlight)中引用这两项服务,但要求两种服务的产品类型相同。我如何去做这件事?

+0

我有六个未被接受的问题。 3应该真的是社区wiki。我现在改变了这些。其他3个人之间总共有4个答案,其中没有一个看起来是正确的。我不会接受一个不正确的答案。这个问题在这些元提到SO帖子 http://meta.stackexchange.com/questions/17579/showing-the-accept-rate-discourages-asking-hard-questions http://meta.stackexchange.com/questions/16712/will-the-accept-rate-score-encourage-unwanted-behavior – 2009-11-30 20:27:12

回答

1

听起来像一个通用的接口/数据合同库是需要的。

它将包含您的服务应返回的IProduct/IProductDataContract。

然后这将在所有三个共享。只要符合数据契约/接口,具体的实现就可以归结为每个服务。

+0

这看起来像很多工作,似乎打败了很多构建到VS中的代理生成的东西的目的。在很多情况下,这似乎是矫枉过正。但是,根据这两篇文章,创建类的客户端副本似乎是采取的方法 http://compiledexperience.com/blog/posts/Resuing-types-in-Silverlight-Service-References http: //inquisitorjax.blogspot.com/2008/07/silverlight-2-sharing-code-between.html – 2009-12-04 05:00:52

+0

由于每次拨打电话时都会创建一个ChannelFactory,所以VS中的通用代理生成并不是最快的。是的,这是更多的工作。从我的角度来看,我认为我喜欢界面驱动的方法(即单独的lib),因为它允许我删除系统中WCF的依赖性/可见性。如果我所有的客户端应用程序都知道他们正在查询一个工厂,那么他们永远不会知道WCF正在做什么。只允许更换存根和模拟对象,甚至更容易替换服务层通信。 – MattC 2009-12-04 11:22:22

相关问题