【问题标题】:General advice on returning success messages in WCF WebMethods在 WCF WebMethods 中返回成功消息的一般建议
【发布时间】:2012-12-18 17:51:29
【问题描述】:

我只是在寻找一些关于这个的一般建议。我的 WCF WebMethod 需要跨使用不同软件的应用程序工作,例如ASP.NET --> Java,例如。

我知道在方法失败的情况下,我可以利用FaultException(Of MyError) 生成 SOAP 故障,但是,发送成功消息的最佳方式通常是什么?

以下面的接口为例,它定义了将用户保存到数据库中的功能:

<ServiceContract()>
Public Interface IService1

    <OperationContract()>
    Sub SaveUserIntoDataBase(ByVal u As MyAppUser)

End Interface

<DataContract()>
Public Class MyAppUser

    <DataMember()>
    Public Property FirstName() As String

    <DataMember()>
    Public Property Surname() As String

End Class

如果我需要发送用户已成功保存的反馈,这通常会如何完成?是否存在与 FaultException 等效的“成功”,还是建议只返回布尔值或字符串?

我想应该总是返回一个值?

【问题讨论】:

    标签: wcf


    【解决方案1】:

    如果服务调用的执行没有失败,则没有任何与异常等效的成功结果。

    一种选择是创建一些自定义类型,例如枚举,并根据来自底层源的不同结果返回这些类型。

    每个调用的返回类型可能不同或根据用户需求定制。在您的情况下,返回布尔值比某些字符串值更好。此外,您使用的是“Sub”,所以如果它是一个函数,那么这可能是一种情况。

    您也可以在这里进行一些讨论: Whats the best practice for returning a Boolean and string value

    【讨论】:

    • 优秀的链接。我在下面的回复中更新了我的反馈。
    【解决方案2】:

    不需要成功消息。如果操作没有失败,那就是成功了。

    使用 FaultException 指示失败。

    【讨论】:

    • 谢谢。如果操作成功(甚至由 WCF 框架自动返回),是否会返回任何内容?例如,如何阻止消费软件无限期地等待某种形式的反馈?
    • 超时会阻止这种情况。即使在操作不返回任何内容的情况下,也会返回一条消息。
    • 想一想,失败和错误是完全不同的两件事,比如尝试插入一个已经存在的用户需要返回失败消息而不是FaultException。因此,根据上面提供的链接,反馈类最好将成功/失败显示为布尔值和解释性消息。谢谢。
    • 如果正常情况是用户不存在,FaultException 可以很好地表示用户已经存在。
    • 如果调用者需要附加信息,则将该详细信息放入FaultDetail 对象并返回FaultException&lt;FaultDetail&gt;
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2018-04-24
    • 2017-09-28
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多