我开始设计一个WCF服务总线,目前规模较小,但随着业务的增长会不断扩大,因此我担心一些增长问题,同时也尽量避免过度设计。这是一个电子商务平台。问题在于我对该把什么放在哪里有太多疑虑了。我将举一个场景来说明我的所有问题。
我们有一个电子商务网站,销售产品并最终交付产品。为此,我们有一个PlaceOrder服务,其中包括其他参数,期望Address对象。在这种情况下(我们的网站下订单),Address对象由City、Street和ZipCode组成。
我们还与使用我们平台仅销售产品的合作伙伴合作。他们负责交付。为此,我们有一个PlaceOrderForPartner服务,其中包括其他对象,期望Address对象。然而,在这种情况下(合作伙伴下订单),Address对象由不同的信息组成,这些信息仅与合作伙伴下订单有关。
在这种情况下,我有几个问题:
1)如何在我的解决方案中组织这些DataContracts对象的名称空间和文件夹?我考虑每个上下文(合作伙伴、客户等)都有一个文件夹,以保留服务和DataContracts。
因此,我会有
- MySolution.sln - Partner(文件夹) - PartnetService.svc - DataContracts(文件夹) - Address - Customer(文件夹) - Customer.svc - DataContracts(文件夹) - Address
使用这种方式,我将有一个名称空间来放置所有特定于上下文的数据合同。
2)服务设计怎么样?我应该为每个可能下订单的人创建一个服务,并在其中创建一个PlaceOrder方法,如下所示:
Partner.svc/PlaceOrder Customer.svc/PlaceOrder 还是创建一个Order服务,包括PlaceOrderForPartner和PlaceInternalOrder,如下所示:
Order.svc/PlaceOrderForPartner Order.svc/PlaceOrderForCustomer 3)假设我选择了最后一个问题的第一个选项,那么我应该怎么处理在合作伙伴和客户中都进行的与订单相关的操作?
4)应该将DataContracts和Service定义放在同一程序集中吗?每个都需要吗?所有内容都包括服务实现?
5)如何为操作命名输入和输出消息?应该使用实体本身还是采用OperationNameRequest和OperationNameResponse模板?
总之,我的主要问题是:如何“组织”涉及服务创建的DataContracts和服务?
谢谢您提前对此的任何想法!
我们有一个电子商务网站,销售产品并最终交付产品。为此,我们有一个PlaceOrder服务,其中包括其他参数,期望Address对象。在这种情况下(我们的网站下订单),Address对象由City、Street和ZipCode组成。
我们还与使用我们平台仅销售产品的合作伙伴合作。他们负责交付。为此,我们有一个PlaceOrderForPartner服务,其中包括其他对象,期望Address对象。然而,在这种情况下(合作伙伴下订单),Address对象由不同的信息组成,这些信息仅与合作伙伴下订单有关。
在这种情况下,我有几个问题:
1)如何在我的解决方案中组织这些DataContracts对象的名称空间和文件夹?我考虑每个上下文(合作伙伴、客户等)都有一个文件夹,以保留服务和DataContracts。
因此,我会有
- MySolution.sln - Partner(文件夹) - PartnetService.svc - DataContracts(文件夹) - Address - Customer(文件夹) - Customer.svc - DataContracts(文件夹) - Address
使用这种方式,我将有一个名称空间来放置所有特定于上下文的数据合同。
2)服务设计怎么样?我应该为每个可能下订单的人创建一个服务,并在其中创建一个PlaceOrder方法,如下所示:
Partner.svc/PlaceOrder Customer.svc/PlaceOrder 还是创建一个Order服务,包括PlaceOrderForPartner和PlaceInternalOrder,如下所示:
Order.svc/PlaceOrderForPartner Order.svc/PlaceOrderForCustomer 3)假设我选择了最后一个问题的第一个选项,那么我应该怎么处理在合作伙伴和客户中都进行的与订单相关的操作?
4)应该将DataContracts和Service定义放在同一程序集中吗?每个都需要吗?所有内容都包括服务实现?
5)如何为操作命名输入和输出消息?应该使用实体本身还是采用OperationNameRequest和OperationNameResponse模板?
总之,我的主要问题是:如何“组织”涉及服务创建的DataContracts和服务?
谢谢您提前对此的任何想法!