WCF - 在服务中抛出故障异常的开销

2024-05-26

我发布了一个question https://stackoverflow.com/questions/81306/wcf-faults-exceptions-versus-messages关于使用消息与故障异常在服务之间传达业务规则。

我的印象是,通过网络抛出此异常会带来开销,但考虑到这只是一条被序列化和反序列化的消息,它们实际上是同一个。

但这让我思考一般抛出异常或更具体地抛出FaultExceptions。

现在在我的服务范围内,如果我使用

throw new FaultException

传达简单的业务规则,例如“您的帐户尚未激活”, 现在这会带来什么开销? 它与在 .NET 中抛出常规异常的开销相同吗?或者 WCF 服务是否通过使用错误契约更有效地处理这些问题。

所以在我的用户示例中,这是编写我的服务方法的最佳/首选方式

option a

public void AuthenticateUser()
{
    throw new FaultException("Your account has not been activated");
}

option b

public AutheticateDto AutheticateUser()
{
     return new AutheticateDto() { 
          Success = false,
          Message = "Your account has not been activated"};
}

嗯...一般来说,您不应该针对预期条件或任何您想要的情况抛出异常。expect定期发生。它们比正常方法慢得多。例如,如果您预计文件打开失败,请不要向调用者抛出该异常,传回失败代码,或提供“CanOpenFile”方法来进行测试。

诚然,消息文本本身并不多,但会抛出并处理真正的异常(由于 IIS,可能更昂贵),然后当反序列化错误时,在客户端上再次抛出真正的异常。所以,双打。

老实说,如果呼叫量很小,那么您可能不会受到任何明显的影响,但这无论如何不是一个好主意。谁想将业务逻辑放在 catch 块中:)

Microsoft:例外和性能以及替代方案 http://msdn.microsoft.com/en-us/library/ms229009.aspx

Developer Fusion:性能,举例 http://www.developerfusion.co.uk/show/5250/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF - 在服务中抛出故障异常的开销 的相关文章

  • WCF 服务契约将被 XML 和 Json 序列化

    我如何创建要加入的服务合同XmlSerializer 格式也WebMessageFormat Json在 WCF RESTful 服务中 我需要的是从 ASP Net 1 1 的代码后面调用 CallADSWebMethod 操作契约 该契
  • 事件处理程序中的“对 SetCurrentCellAddressCore 的可重入调用” - 仅当单元格行索引和列索引相等时

    我正在制作一个 WinForms 应用程序 其中包含一个使用DataGridView处理简单的数据操作 确保准确输入 同时减少混乱 阅读 不使用DataGridViewComboBoxColumn 我有几个事件处理程序可以暂时将DataGr
  • .NET 4.5 和 .NET 4.5.1 是否默认启用 TLS 1.1 和 TLS 1.2?

    在我们的 Windows 2012 Server R2 上 我们需要禁用 TLS 1 0 不过 我们正在运行 NET 4 5 Wcf 服务 我们发现 如果禁用 TLS 1 0 WCF 服务将不再运行 因为我们收到错误 现有连接被远程主机强制
  • 尽管脚本是“纯”Python,但 .py 和 .ipy 文件的 IPython 行为不同(自定义异常处理程序挂钩停止工作)

    我编写了一个异常处理程序 旨在记录所有未捕获的异常 在调用普通 python 异常挂钩之前的代码中 Python 和 iPython 执行此操作的方法略有不同 我发现 iPython 这样做的方法仅在从交互式会话中运行时有效 或者当 使用
  • JavaScript 中是否存在不可捕获的异常?

    任何 javascript 运行时 浏览器 Node 等 是否会抛出无法捕获的异常 在 javascript 环境中遇到的所有异常是否都可以在 try catch 语句中捕获 If by 例外情况您的意思是任何破坏脚本的异常条件 那么它们都
  • 如何使用 Python 正确传播错误消息

    我对正确的 Python 错误处理有点陌生 并且我很难找到处理多种方法链中的错误的最佳方法 我有3种方法 a b c a正在打电话b and b正在打电话c 如何从方法中传播错误c回到方法a所以我可以例如将其存储在某处或在 API 响应期间
  • 使用 Rx 简化异步 Silverlight Web 服务请求

    我已经使用 Rx 为我的 WCF Web 服务编写了一个简化的 Silverlight 客户端库 但是我注意到有时我会丢失已完成的事件 public IObservable
  • 如何加快编辑距离计算速度

    我正在尝试运行模拟来测试平均值编辑距离 http en wikipedia org wiki Levenshtein distance之间随机 二进制字符串 我的程序是用 python 编写的 但我正在使用这个C扩展 https githu
  • 我在 android 上使用 java 时遇到异常 (java.lang.NoClassDefFoundError),为什么?

    这是我运行的线路 AudioInputStream clip1 AudioSystem getAudioInputStream new File wavFile1 这是我得到的异常 来自 LogCat 错误 AndroidRuntime 3
  • javascript中的快捷方式融合优化

    我听说 lodash 和其他 javascript 库使用一种称为 快捷融合 的技术进行优化 但在任何地方都找不到该技术的详细解释 任何人都可以提供链接或举例解释 快捷方式融合 的含义吗 对于一个非常简短且不清楚的解释 https wiki
  • 关于捕获异常的良好实践

    我正在用 C 11 编写一个小程序 并且第一次真正使用异常 我有一个关于如何有效捕获异常的问题 经过一番谷歌搜索后我仍然没有答案 这是问题 通过 const 左值引用捕获异常还是通过 const 右值引用捕获异常 哪个更有效 或推荐 在代码
  • Java 中的异常捕获

    Java 中有一些预定义的异常 如果抛出这些异常 就会报告发生了严重的事情 你最好改进你的代码 而不是在 catch 块中捕获它们 如果我理解正确的话 但我仍然发现许多程序中有以下内容 catch IOException e catch F
  • 通过 https 负载均衡器的 WCF http 服务

    我有一个可以通过 http 端点访问的 WCF Web 服务 现在 该服务应通过 https 与负载均衡器一起发布 客户端是通过 svcutil exe 在 Net 中创建的 但 Java 客户端也需要 WSDL 我的理解是 Web 服务在
  • JavaScript:document.getElementById 性能缓慢?

    我反复使用document getElementById很多关于commonCSS 元素 如果我创建一个global array存储我所有的document getElementById元素而不是每次重新获取元素 示例 而不是 docume
  • java中永远不会出现的异常

    我为点和向量编写一个类 我想用它们来计算向量的点和范数 这些是点类和向量类 public class Point public float x y public class MyVector public Point start end 我
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 尽管受信任的根 CA,WCF 错误“X.509 证书链构建失败”

    我收到了中提到的错误这个问题 https stackoverflow com questions 4256520 wcf error the x 509 certificate cn localhost chain building fai
  • WCF 服务引用从 WSDL 生成 void 方法

    这是我第一次尝试使用 WCF 所以我猜我做错了什么 我正在尝试访问 WSDL 定义的肥皂服务http confluence atlassian com rpc soap axis confluenceservice v1 wsdl http
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到

随机推荐

  • 使用 awk 解析日志文件

    我尝试使用以下代码解析日志文件 if line match then awk 2 vFiler echo vFiler 解释 有一些行以这样的模式开头 或 vol 后跟名称 我想找到所有以 或 vol 并将后面的字符串设置为等于变量 但我真
  • .htaccess 中 PDF 和图像文件的规范标题链接

    我正在尝试为我的网站上的许多 PDF 和图像文件设置 Canonical 链接 文件夹结构示例 index php docs file pdf folder1 file pdf folder2 file1 pdf file2 pdf img
  • 如何在 Android 中实现 React Native UI 组件方法

    我很清楚 对于react native本机模块 我们可以使用 ReactMethod导出一个方法并从 JSX 调用它 但是我们如何在 React Native 原生 UI 组件中做同样的事情呢 在文档中我只看到 ReactProp被提及 如
  • Excel 公式或 VBA:在具有 2 列条件的单独表中查找匹配的地址 - 无辅助列

    我需要公式结构方面的帮助 我有2张桌子 我想找到 a 列和 b 列相等的匹配项并获取表 2 中的地址 它们将是唯一的条目 例如 项目信息表 A B C 1 Name Company Project 2 Chris Evans Apple I
  • “服务 X 的应用程序端点为零”,除非我在代码中添加端点 - 为什么?

    我跟着这篇 MSDN 文章 http msdn microsoft com en us library ms733069 aspx完全创建托管在托管 NT 服务中的 WCF 服务 当我在服务控制台中单击 开始 时 我会在事件查看器中看到以下
  • 什么是冒烟测试?它对我有什么作用?

    我以为我理解烟雾服务器用于持续集成来衡量项目的性能和测试覆盖率 这基本上是正确的吗 对程序进行冒烟测试意味着什么 它是否仅仅意味着持续应用烟雾服务器上定义的测试 以便能够查明特定时间范围内的性能下降情况 这另一个问题 https stack
  • 调整 JTable 大小以适合行数

    我有一个JTable它将动态填充 我希望表始终调整大小以适应行数 我不需要任何滚动 因为表格位于面板中 并且需要打印面板的内容 我试过这个 Dimension d itemsTable getPreferredSize scrollPane
  • 如何使用 YUI Compressor.Net MSBuild 任务 2.3.0.0

    我尝试在网上搜索此问题的解决方案 但似乎很不清楚 听起来人们正在看到这一点 但解决方案似乎对我不起作用 我已从 NuGet 下载并安装 YUICompressor NET MSBuild 2 3 0 0 到我的项目中 我创建了一个 MSBu
  • “struct hack”在技术上是未定义的行为吗?

    我要问的是众所周知的 结构的最后一个成员具有可变长度 技巧 事情是这样的 struct T int len char s 1 struct T p malloc sizeof struct T 100 p gt len 100 strcpy
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • 应用示例,使用Android备份服务

    您知道任何 Android 应用程序 开源 如果可能的话 它使用安卓备份服务 http developer android com guide topics data backup html 我需要有关如何在实际应用程序中使用备份服务的示例
  • Objective C 中最好的多线程方法?

    我正在开发一个 iPad 应用程序 目前正在努力寻找多线程的最佳方法 让我用一个简化的例子来说明这一点 我有一个包含 2 个子视图的视图 一个目录选择器和一个包含所选目录中所有图像缩略图的图库 由于 下载 和生成这些缩略图可能需要相当长的时
  • 如何使用 jquery live 停止事件冒泡?

    我试图停止一些事件 但 stopPropagation 不适用于 实时 所以我不知道该怎么做 我在他们的网站上找到了这个 现场活动不会在 传统方式 不能 使用 stopPropagation 停止或 停止立即传播 例如 以两次点击事件为例
  • 标准数学函数在不同 CPU 上的再现性

    我正在做一个需要大量数学计算的项目 打开新的测试机后 我注意到很多测试都失败了 但同样重要的是要注意 测试在我的开发机器以及其他开发人员的某些机器上也失败了 经过跟踪值并与旧机器的值进行比较后 我发现一些功能 此时我只发现cosine ma
  • 如何使用三个JS导出然后导入场景?

    我有一个用三个 JS 和大量 Javascript 代码构建的复杂 3D 场景 我需要将此场景导出为一个文件 然后通过简单的 ThreeJS 场景播放器在我的网站上使用它 我尝试过 ObjectExporter 和 SceneExporte
  • Angular 2 无线电列表中的模型不会更新

    我正在尝试构建一个 Angular 2 组件 它显示带有无线电的选项列表 它工作正常 但它answer组件的字段 绑定在内部 ng model answer 选择其中一个选项时不会更新 我做错了什么还是这不是创建单选选项列表的方法 div
  • Inno Setup:有条件地删除用户主文件夹中的非空目录

    我正在通过 Inno Setup 为我的 Windows 应用程序创建安装程序 应用程序本身将一些配置数据写入用户主文件夹及其自己的子目录中 现在 在卸载过程中 我希望允许用户选择一个选项来删除该文件夹 该文件夹最初不是由 Inno Set
  • Google PageSpeed Insights API 无法正常工作 [PHP]

    我是 PHP 的初学者 所以也许有人可以帮助解决这个问题 我的网络应用程序显示 Google PageInsights API 错误 这是代码 我尝试将版本更改为 v2 但仍然不起作用 public function getPageSpee
  • 如何识别远程参与者?

    我有一个远程参与者 客户端 它正在向另一个远程参与者 服务器 注册 然后注销 使用关闭挂钩 然而 虽然服务器接收到注销 但实际sender财产是一个不同的 Channel 对象 所以在我的服务器日志中我有 Registered new cl
  • WCF - 在服务中抛出故障异常的开销

    我发布了一个question https stackoverflow com questions 81306 wcf faults exceptions versus messages关于使用消息与故障异常在服务之间传达业务规则 我的印象是