【发布时间】:2023-04-03 18:47:01
【问题描述】:
例如,如果您有客户、订单和产品。您是否为每个业务实体创建单独的服务?
您应该为其中的每一个都创建一个服务合同,这有点合乎逻辑。但是,由于您必须明确指定您的服务将实施的合同……这会迫使您为每个服务合同创建单独的服务,不是吗?
您能告诉我您将如何处理这个问题吗?不知何故,为永远的商业实体提供服务感觉很笨拙……:-(
提前,非常感谢和问候。
【问题讨论】:
标签: wcf web-services
例如,如果您有客户、订单和产品。您是否为每个业务实体创建单独的服务?
您应该为其中的每一个都创建一个服务合同,这有点合乎逻辑。但是,由于您必须明确指定您的服务将实施的合同……这会迫使您为每个服务合同创建单独的服务,不是吗?
您能告诉我您将如何处理这个问题吗?不知何故,为永远的商业实体提供服务感觉很笨拙……:-(
提前,非常感谢和问候。
【问题讨论】:
标签: wcf web-services
服务作用于业务实体,但不是业务实体。
因此,客户、订单和产品将是数据合同,而不是服务合同。
您对这些数据合约执行的操作构成了您的服务合约,而您在实体上公开的操作可能是也可能不是该实体可以做的所有事情。
如果我想您可能会问,每个实体都有共同的功能(例如 CRUD 操作),那么是的,您应该为每个实体(CustomerCRUDService、OrderCRUDService 等)上的 CRUD 服务设置一个单独的服务联系人,因为 Web服务不支持方法签名的重载。
(来自cmets)
有几种方法。
1) 复合服务契约:例如,我有一个实现 WSTransfer 的服务——这实际上由两个服务契约组成,IWSTransferResource 和 IWSTransferFactory。反过来,我有一个 IWSTransfer 服务合同,它只实现那些单独的合同 - 公共接口 IWSTransfer :IWSTransferResource,IWSTransferFactory
2) 但是您甚至不必那么复杂,WCF 中的实现可以实现多个服务合同 - MyServiceImpl : IMyContract1, IMyContract2。然而,每个合约都需要一个单独的端点,因为端点用于服务合约,而不是实现类。
【讨论】: