首页 / 知识
关于WCF:WCF-错误/异常与消息
2023-04-16 11:21:00

WCF - Faults / Exceptions versus Messages我们目前正在争论是否通过WCF通道抛出故障是否比传递指示状态或服务响应的消息更好。 故障具有WCF的内置支持,您可以在其中使用内置错误处理程序并做出相应的反应。但是,这会产生开销,因为.NET中的抛出异常可能会非常昂贵。 消息可以包含必要的信息,以确定您的服务调用发生了什么,而不会引发异常。但是,它确实需要几行重复的代码来分析消息并确定遵循其内容的操作。 我们竭尽全力创建了可在我们的服务中使用的通用消息对象,这就是我们想到的:
如果我所有的服务电话都返回了该项目,则我可以始终检查" Success "属性以确定是否一切顺利。然后,我在事件中有一条错误消息字符串,指示出了问题,如果需要,还有一个包含Dto的通用项。 必须将异常信息注销到中央日志记录服务,而不是从该服务传递回。 有什么想法吗?评论?有想法吗?有建议吗? 我的问题有待进一步澄清 我与故障合同有关的一个问题是交流业务规则。 例如,如果有人登录并且其帐户已被锁定,我该如何传达?他们的登录显然失败了,但是由于"帐户锁定"原因而失败。 我也是: A)使用布尔型,将错误消息锁定在消息帐户上 B)返回带有相关信息的AuthenticatedDTO
您正在将对象序列化和反序列化为XML,并通过一个慢速的网络发送它们。与之相比,抛出异常的开销可以忽略不计。 我通常坚持抛出异常,因为它们清楚地传达出问题,并且所有Web服务工具包都有处理它们的好方法。 在您的示例中,我将抛出UnauthorizedAccessException并显示消息"帐户已锁定"。 说明:默认情况下,.NET wcf服务将异常转换为FaultContracts,但是您可以更改此行为。 MSDN:指定和处理合同和服务中的错误 如果您想像调用任何其他方法一样考虑调用服务,则可能有助于将事情弄清楚。想象一下,如果您调用的每个方法都返回一个状态,而您要检查该方法是对还是错。这样会很乏味。
这是结构化错误处理系统的强项之一,就是您可以将实际逻辑与错误处理分开。您不必继续检查,如果没有引发异常,您就知道它是成功的。
同时,通过返回结果,您将更多的责任放在客户身上。您可能很清楚要检查结果对象中的错误,但是John Doe进来并开始调用您的服务,而忽略了任何错误,因为没有引发异常。这是异常处理的另一大优势,是异常发生并需要注意时,它们可以给我们一个很好的耳光。 我会认真考虑使用FaultContract和FaultException对象来解决此问题。这将使您可以将有意义的错误消息传递回客户端,但仅当出现故障情况时才可以。 不幸的是,我目前正在参加培训课程,因此无法写出完整的答案,但是幸运的是,我正在学习WCF应用程序中的异常管理。我将在今晚发布更多信息。 (对不起,这是一个微不足道的答案) |
最新内容
相关内容
linux命令错误的是?
linux命令错误的是?,系统,信息,异常,密码,工具,地址,网络,实时,状态,数据,Linux系统中输入命令,输出结果有误是怎么回事?出现以上提示,很多原因linux显示错误命令?
linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚拟机里怎么开始linux系统,打startx命令提示错误1、第一种:这个问题linux退出错误命令的?
linux退出错误命令的?,系统,电脑,环境,命令,位置,管理,工具,设备,终端,进程,Linux命令格式错误出现大于号怎么退出1、ctrl+c,终止当前运行命令linux没有该命令错误?
linux没有该命令错误?,系统,第一,环境,命令,分析,软件,异常,文件,目录,空格,不知道为什么在linux命令行下输入一些命令怎么都显示没有找到?1、linux基本命令指示?
linux基本命令指示?,工作,系统,基础,地址,信息,命令,标准,工具,目录,软件,linux运维常用命令1、Curl命令用法 curl语法和参数选项 # curl [oplinux网络故障命令?
linux网络故障命令?,网络,地址,系统,信息,状态,命令,环境,服务,电脑,流程,浅谈Linux网络故障的解决办法第一步:配置虚拟机网络,配置文件。/etc/slinux中的通道命令?
linux中的通道命令?,地址,系统,单位,信息,电脑,工作,设备,网络,权威,命令,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的linux命令错误代码?
linux命令错误代码?,系统,密码,电脑,网络,手机,网址,软件,代码,设备,老板,Linux管理常见错误1、检查权限:使用文件浏览器和终端,检查文件的访问linux多级通道命令?
linux多级通道命令?,工作,系统,地址,情况,信息,命令,管理,目录,基础,标准,linux常用命令及用法linux常用命令: pwd命令 该命令的英文解释为prlinux命令忽略错误?
linux命令忽略错误?,系统,地址,工作,信息,设备,命令,设计,灵活,观察,标准,linux命令问题,在使用ls命令时,能不能不让输出错误信息--pid=进程号linux更换通道命令?
linux更换通道命令?,基础,管理,网络,工作,系统,服务,地址,信息,命令,数据,登录Linux服务器后如何更换节点?命令行是什么?准确应该是从本地字符17个新手常见Python运行时错误
17个新手常见Python运行时错误,代码,错误,培训,变量,函数,局部,操作,定义,列表,实际,当初学Python时,想要弄懂Python的错误信息的含义可能有点