我开发了winforms app。我的一个表单接受用户输入并调用Web服务以将输入添加到DB中。输入必须是唯一的,但我无法知道它在客户端是否是唯一的。我将输入发送到WS,它负责将其添加到数据库或通知客户端输入已存在。
实施该方法的正确方法是什么?
我应该对WS进行两次调用,一次是知道它是唯一的还是要插入到数据库中的一次?我感觉到同步问题+跨越两次往返行程。
我应该返回枚举,ValueNotUnique和ValueInsertedSuccessfully吗?
或者抛出异常?这听起来不是性能明智的,而且我不喜欢使用我已经知道的可能不起作用的异常。
这个混乱有一个很好的设计吗?感谢提前感谢!
答案 0 :(得分:3)
我可能会这样做:
所以你有:
public enum OpResult
{
ValueInserted,
ValueAlreadyExists
}
和结果类型:
public class ResponseType
{
public OpResult Result { get; set; }
public int UniqueID { get; set; }
}
使用这种方法,您可以轻松
答案 1 :(得分:0)
您的网络方法可以返回具有多个属性的自定义类。 Web服务不需要仅返回原始类型或原子类型。标记自定义类Serializable并确保任何属性也可序列化等。
或者,如果您考虑未插入错误的情况并在调用应用程序中捕获异常,则可以抛出异常。
答案 2 :(得分:0)
我会按以下方式进行:
您将请求发送到服务器。在那里检查值是否正确。如果正确,您可以插入并将有效结果发回给您的客户。如果不正确,则会发回错误消息。