0

我有一个 Web 服务,它通过异步方法在服务器上触发一些长时间的操作。每个操作有 3 种方法:

  • 其中一个开始操作并立即返回一个票号。
  • 其中一个是从客户端连续调用的;它接收票号并返回一个布尔值,说明操作是否完成。
  • 只有在操作完成后才调用其中的最后一个;它接收票号并返回操作结果。

我不知道如何调用这个方法。我考虑调用这样的方法:

  • OperationName_Start
  • OperationName_IsReady
  • OperationName_GetResult

但我担心我可能会重新发明轮子。这种使用模式是否有任何众所周知的命名约定?

4

2 回答 2

1

很遗憾,您第一次无法得到答案。我强烈建议阅读这个SOA 原则链接,以更好地理解 Web 服务命名的原则和重要性。

重要的是要记住从消费者的角度来命名,最大限度地提高可消费性和可重用性。记住,当您调用服务时,您正在对一个对象执行和操作,即您应该有一个动词和一个名词,这也很有用。还要记住,Web 服务与面向对象语言中的函数非常相似,因此考虑一下 Web 服务函数的代码是什么样子会很有帮助。

考虑以下场景会很有帮助:

  • 如果我更改 Web 服务调用的系统会发生什么?
  • 是否有另一种情况可以调用此服务?
  • 服务应该有多精细?这些决定对绩效有何影响?

在不了解您要实现的业务背景的情况下,我们将假设提交和电子支付的基本示例。

在这种情况下,您可能有:

  • ElectronicPayment_SendPayment(注意:使用“发送”保持业务上下文,而不是技术上下文;发送可以通过电子邮件、邮寄、网络服务。从您的“开始”示例中,您要开始什么;这里,服务的目的是明显)
  • ElectronicPayment_CheckStatus(注意:这是从消费者的角度来看。检查处理状态很可能是一项通用服务,可以按照以下方式分离CheckProcessingStatus (TicketNumber tN)
  • ElectronicPayment_RetrieveReciept(注:请求/响应模式与语义链接。收据和支付的业务上下文保持)

命名是高度上下文相关的,以上内容并不完美,但希望它可以帮助你自己和其他偶然发现这一点的人。

于 2013-08-26T06:28:51.990 回答
0

由于缺乏答案,我认为在这个问题上显然没有一个广泛使用的标准,所以我可以自己推出。

我选择坚持:

  • OperationName_Start
  • OperationName_IsReady
  • OperationName_GetResult
于 2013-07-25T14:59:26.857 回答