C# 如何从web方法返回多个结果?

C# 如何从web方法返回多个结果?,c#,.net,web-services,C#,.net,Web Services,我开发winforms应用程序。我的一个表单接受用户输入并调用web服务将输入添加到DB中。输入必须是唯一的,但是我无法知道它在客户端是否是唯一的。我将输入发送到WS,WS负责将其添加到DB或通知客户机输入已经存在 正确的方法是什么 我是否应该对WS进行两次调用,一次是为了知道它是否唯一,另一次是为了插入DB?我感觉到同步问题+跨越边界的两次往返 是否应成功返回枚举、ValueNotUnique和ValueInserteds 或者抛出一个异常?这听起来不利于性能,而且我不喜欢对我已经知道可能不起

我开发winforms应用程序。我的一个表单接受用户输入并调用web服务将输入添加到DB中。输入必须是唯一的,但是我无法知道它在客户端是否是唯一的。我将输入发送到WS,WS负责将其添加到DB或通知客户机输入已经存在

正确的方法是什么

我是否应该对WS进行两次调用,一次是为了知道它是否唯一,另一次是为了插入DB?我感觉到同步问题+跨越边界的两次往返

是否应成功返回枚举、ValueNotUnique和ValueInserteds

或者抛出一个异常?这听起来不利于性能,而且我不喜欢对我已经知道可能不起作用的事情使用异常


这堆乱七八糟的东西有好的设计吗?感谢您的帮助,提前感谢

您的web方法可以返回具有多个属性的自定义类。Web服务不需要只返回原语或原子类型。将自定义类标记为可序列化,并确保所有属性也可序列化,等等


可选地,如果考虑到没有插入错误并在调用应用程序中捕获异常的情况,可以抛出异常。

< P>我可能会这样做:

  • 定义结果值的枚举;值已存在、值已插入等
  • 定义一个返回对象类型,该类型将包括
    • 操作的结果,作为该枚举类型
    • 如果该值已经存在-可能类似于ID或某些数据
    • 如果成功插入该值,则新ID
所以你会:

public enum OpResult
{
   ValueInserted,
   ValueAlreadyExists
}
和结果类型:

public class ResponseType
{
    public OpResult Result { get; set; }
    public int UniqueID { get; set; }
}
通过这种方法,您可以轻松地

  • 扩展枚举并为您的操作添加更多可能的结果
  • 扩展响应类型,并在需要时添加更多信息

我会用以下方法:

您将请求发送到服务器。在这里,您可以检查值是否正确。如果正确,则进行插入并将有效结果发送回客户。如果不正确,则返回错误消息。

自定义类也称为类。已同意。这里使用“定制”向海报说明,所述类是由海报/开发人员定义的,而不是由框架提供的。