使用OData执行远程域服务方法

时间:2014-03-07 12:28:49

标签: domain-driven-design odata

据我所知,OData更倾向于消费数据,即以只读方式。我想问一下是否打算使用OData来调用远程函数,例如域服务的方法。

在查看OData 4.0 spec, chapter 4.3 "Addressing Entities"时,确实有 actionCall entityFunctionCall 等术语。但到目前为止,这当然也只适用于“服务” “,我猜。

我想做http://example.org/service/BankAccountDomainService/ApproveBankAccount(abcde-123456)这样的事情......这有意义吗?

2 个答案:

答案 0 :(得分:0)

OData是用于创建和使用数据API的标准化协议。 OData建立在像HTTP这样的核心协议和REST等普遍接受的方法之上。结果是公开全功能数据API的统一方式。

除了提供绑定到实体的功能和操作外,OData还提供服务级别的功能和操作。

请参考以下网址获取示例: https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ODataActionsSample/

但它基于OData v3,很快就会有OData v4的样本。

答案 1 :(得分:0)

如果我理解你是正确的,你想调用一个未绑定的动作,称为“动作导入”,因为你的动作“ApproveBankAccount”没有限制在任何类型.... 根据Odata协议,后续URL应为“POST”:“帐户”应包含在Payload中。

网址:http://example.org/service/BankAccountDomainService/ApproveBankAccount()

有效载荷:{abcde-123456}

或者,您也可以在实体类型“BankAccount”上设计有界操作“批准”,发布的网址应为:

http://example.org/service/BankAccountDomainService/BankAccount(abcde-12345)/NameSpace.Approve()