Edo*_*Edo 21 application-integration web-services
我的困境基本上是如何在两个应用程序之间共享枚举.
用户通过Web上的前端应用程序上载文档.此应用程序调用后端应用程序的Web服务并将文档传递给它.后端应用程序保存文档并在Document表中插入一行.
文档类型(7种可能的文档类型:Invoice,Contract等)作为参数传递给Web服务的UploadDocument方法.问题是,该参数的类型(和可能的值)应该是什么?
由于您需要在两个应用程序中对这些值进行硬编码,我认为使用描述性字符串(Invoice,Contract,WorkOrder,SignedWorkOrder)是可以的.
是否可能是在第一个应用程序中创建DocumentTypes枚举的更好方法,并在第二个应用程序中重现它,然后将相应的整数值传递给它们之间的Web服务?
我建议不要在它们之间传递一个整数,只是出于可读性和调试的目的.假设您正在浏览日志,并且您看到DocumentType = 4的一堆500错误.现在你必须查找哪个DocumentType是4.或者如果其中一个应用程序引用了另一个不存在的数字,可能是由于版本不匹配.
这是一个更多的代码,它使大脑的静态类型部分有点原始,但在HTTP之上的协议中,所接受的智慧是在不透明的枚举上使用清晰的字符串.
我仍然会在内部使用枚举,但希望消费者只传递名称,而不是数值本身.
只是一些愚蠢的例子来说明:
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)
我只能谈论 .net,但如果您有 ASP.net Web 服务,您应该能够直接向其添加枚举。
然后,当您在客户端应用程序中使用“添加 Web 引用”时,生成的类应包含该枚举
但这是我的想法,我很确定我过去曾经这样做过,但我不能肯定地说。
归档时间: |
|
查看次数: |
15579 次 |
最近记录: |