我有一个 wcf 服务,它在单个端点地址上公开了大量的服务方法。到目前为止,所有服务方法都在单个服务合同类中实现。这个服务契约类实现了几个服务契约接口。现在我想将服务契约方法的实现拆分成几个类,以避免契约类变得很大。我使用带有 ServiceHost 的自托管方案。ServiceHost 只采用实现服务方法的单一类型的类型,因此似乎所有内容都必须在此类中实现。当然,这些方法的实质可以分解为几个类。但是有没有办法将方法分成几个类?
问问题
1550 次
3 回答
5
您可以将服务实现为分部类,这样您就可以将实现拆分为多个文件。
如果要求保留一个端点和一个接口,那么就没有其他方法可以拆分它——您创建的一个类必须实现所有接口。
我建议保持服务实现尽可能简单,并且只让每个方法都是一个单行方法,将操作委托给实际实现,然后可以将其拆分为多个类。也许每次手术都做一个有意义?这是我以前成功使用的模式。
于 2010-09-08T20:53:44.360 回答
0
您可以根据需要创建任意数量的服务合约,每个合约背后都有自己的逻辑。
正如您所希望的那样,这种方法的好处是逻辑上将相关功能组合在一起。
缺点是调用客户端现在必须知道调用函数时要使用哪个服务。
于 2010-09-08T21:00:14.790 回答
0
这是限制服务中操作数量的好方法。据我了解您目前的情况,您有实现多个服务合同的单一服务实现。这意味着您的服务上已经有多个端点 - 每个端点都公开一个合同。在这种情况下,您的客户已经准备好为每个需要的合同创建单独的代理。
现在您想将您的服务实现类划分为多个服务实现。每个服务实现都将实现一个(或较小的一组)服务合同。这将需要修改您的托管应用程序 - 您需要为每个服务实现单独的 ServiceHost。您还需要为每个服务实现单独配置和唯一地址。
客户端可以使用新服务重新创建,但我认为也应该可以简单地更改端点的地址,它应该可以工作。
于 2010-09-09T07:49:48.167 回答