WCF:每个业务实体的单独服务

时间:2009-03-13 09:51:03

标签: wcf web-services

例如,如果您有客户,订单和产品。您是否为每个业务实体创建单独的服务?

您应该为每个人创建服务合同,这是合乎逻辑的。但是,由于您必须明确指定您的服务将实现的合同...这种强制您为每个服务合同创建单独的服务,不是吗?

你能告诉我你将如何处理这个问题吗?不知何故,为任何商业实体提供服务都感到尴尬......: - (

提前,非常感谢和问候。

1 个答案:

答案 0 :(得分:6)

服务对业务实体起作用,但不是业务实体。

因此,客户,订单和产品将是数据合同,而不是服务合同。

这是您对构成服务合同的数据合同执行的操作,您在实体上公开的操作可能与实体无关,也可能不是。

如果我认为您可能会问,每个实体都有共同的功能(例如CRUD操作),那么您应该在每个实体(CustomerCRUDService,OrderCRUDService等)上为CRUD服务建立单独的服务联系人,因为Web服务不支持方法签名的重载。

(来自评论)

有两种方法。

1)复合服务合同:例如,我有一个实现WSTransfer的服务 - 这实际上由两个服务契约IWSTransferResource和IWSTransferFactory组成。反过来,我有一个IWSTransfer服务合同,只是实现那些单独的合同 - 公共接口IWSTransfer:IWSTransferResource,IWSTransferFactory

2)但是你甚至不必复杂,WCF中的实现可以实现多个服务契约 - MyServiceImpl:IMyContract1,IMyContract2。但是,每个合同都需要一个单独的端点,因为端点用于服务合同,而不是实现类。