如何将枚举值传递给Web服务

Edo*_*Edo 21 application-integration web-services

我的困境基本上是如何在两个应用程序之间共享枚举.

用户通过Web上的前端应用程序上载文档.此应用程序调用后端应用程序的Web服务并将文档传递给它.后端应用程序保存文档并在Document表中插入一行.

文档类型(7种可能的文档类型:Invoice,Contract等)作为参数传递给Web服务的UploadDocument方法.问题是,该参数的类型(和可能的值)应该是什么?

由于您需要在两个应用程序中对这些值进行硬编码,我认为使用描述性字符串(Invoice,Contract,WorkOrder,SignedWorkOrder)是可以的.

是否可能是在第一个应用程序中创建DocumentTypes枚举的更好方法,并在第二个应用程序中重现它,然后将相应的整数值传递给它们之间的Web服务?

Pet*_*rns 5

我建议不要在它们之间传递一个整数,只是出于可读性和调试的目的.假设您正在浏览日志,并且您看到DocumentType = 4的一堆500错误.现在你必须查找哪个DocumentType是4.或者如果其中一个应用程序引用了另一个不存在的数字,可能是由于版本不匹配.

这是一个更多的代码,它使大脑的静态类型部分有点原始,但在HTTP之上的协议中,所接受的智慧是在不透明的枚举上使用清晰的字符串.


lub*_*sko 5

我仍然会在内部使用枚举,但希望消费者只传递名称,而不是数值本身.

只是一些愚蠢的例子来说明:

public enum DocumentType
{
  Invoice,
  Contract,
  WorkOrder,
  SignedWorkOrder
}

[WebMethod]
public void UploadDocument(string type, byte[] data)
{
  DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*tum 3

我只能谈论 .net,但如果您有 ASP.net Web 服务,您应该能够直接向其添加枚举。

然后,当您在客户端应用程序中使用“添加 Web 引用”时,生成的类应包含该枚举

但这是我的想法,我很确定我过去曾经这样做过,但我不能肯定地说。