我有一个wcf服务,可以在单个端点地址上公开大量的服务方法。到目前为止,所有服务方法都是在一个服务合同类中实现的。这个服务契约类实现了几个服务契约接口。现在我想将服务合同方法的实施分成几个阶段,以避免合同阶层不断增长。我使用ServiceHost的自托管方案。 ServiceHost只采用一种实现服务方法的单一类型,所以似乎所有的东西都必须在这个类中实现。当然,这些方法的肉可以分解成几个类。但是,还有一种方法可以将方法拆分为几个类?WCF在单个端点地址处的大型接口
回答
您可以将该服务实施为partial class,该服务可让您将实施分割为多个文件。
如果要求保持单个端点和单个接口,那么就没有其他方式将其分开 - 您创建的一个类必须实现所有接口。
我会建议保持服务实现尽可能简单,并且每个方法都是一个单行代码,将操作委托给实际实现,然后可以将其分解为多个类。也许每个操作都做一个也是有道理的?这是我以前用过的成功模式。
您可以根据需要创建任意数量的服务合同,每个服务合约都有自己的逻辑。
这种方法的好处在于,您似乎希望将逻辑上相关的功能组合在一起。
不利的一面是调用客户端现在必须知道调用函数时要使用哪个服务。
限制服务中操作的数量是一种很好的方法。正如我现在理解你的场景,你有单一的服务实现,它实现了几个服务合同。这意味着您的服务中已经有多个端点 - 每个端点都暴露单一合同。在这种情况下,您的客户已经准备好为每个需要的合同创建单独的代理。
现在你想在多个服务实现中划分你的服务实现类。每个服务实施将实施一个(或更小的一组)服务合同。这将需要修改您的托管应用程序 - 每个服务实现您都需要单独的ServiceHost。您还需要单独配置和每个服务实施的唯一地址。
客户端可以重新创建新的服务,但我认为它也应该可以简单地更改端点的地址,它应该工作。
谢谢您的回复。我目前正在计划和实施一个相当大的系统的数据交换接口。客户很可能总是使用可能运行于不同平台的整个界面。在这样的情况下,我认为客户端只需要一个端点地址是最简单的。我创建了几个服务契约接口,让一个“主接口”继承自所有服务契约接口。然后servcice合同类实现主接口。 – WalterOesch 2010-09-10 21:32:53
- 1. WCF端点地址
- 2. WCF端点的基地址
- 3. WCF端点地址问题
- 4. wcf端点相对地址
- 5. wcf具有单个地址的多个端点
- 6. VS 2010中的WCF端点地址
- 7. 读WCF服务端点地址
- 8. 关于WCF端点地址属性
- 9. WCF端点地址没有.svc扩展
- 10. 自动检测端点地址连接 - WCF C#
- 11. WCF:在客户端,获取端点IP地址
- 12. 处理与单个终端接口
- 13. WCF端点地址,默认情况下仍然可以指定一个地址
- 14. 在某个端口上查找传出连接的IP地址
- 15. 正在运行的WCF服务的URL /端点地址
- 16. 在运行时指定WCF端点的IP地址
- 17. 听一个*地址的端口11111
- 18. WCF客户端配置:集中端点地址
- 19. 入口点地址
- 20. 节点哪个端口/ ip地址听天蓝色的Ubuntu vm
- 21. 获取不带端口.net的地址,并将地址+端口构造到端点
- 22. WCF发现找到端点,但地址是本地主机
- 23. 当已经提供基地址时,WCF服务端点的相对地址
- 24. 如何获取WCF服务的侦听地址/端口?
- 25. 如何在使用wcf时使端点地址保持静态
- 26. 在运行时设置WCF端点地址?
- 27. 无论使用何种绑定,WCF都会暴露在所有基地址上的WCF相对端点地址
- 28. 确定是否WCF的net.tcp端点地址是有效的
- 29. SMTP地址和端口
- 30. 如何在WCF中获取客户端IP地址和UDP端口?
谢谢您的回复。我也考虑过部分课程,但在我看来,部分课程并不能帮助简化解决方案。我会按照您的建议去使用,每个操作使用一个班轮 – WalterOesch 2010-09-10 21:26:26