VS2010 添加服务引用相对于直接 ClientBase<> 的优点

2023-12-07

我注意到,当在 VS2010 中使用“添加服务引用”时,会创建大量文件。其中一个文件是 Reference.cs,它为服务合同创建一个 ClientBase。

因此,我想知道 VS 创建的大量额外文件是否有任何优势,或者我可以自己使用 ClientBase 并跳过“添加服务引用”选项。

我应该指出,就我而言,双方都在我的控制之下。


从我的角度来看,以下是对不同方法的优缺点的概述:

使用 Visual Studio 生成的服务代理

Pros

  • 只需最少的努力即可开始
  • 每当服务合同发生变化时能够快速更新代理
  • 无需维护自定义代码

Cons

  • 使消费者难以使用任何流行的 .NET 隔离框架进行单元测试,例如犀牛模拟 or Moq,由于通过以下方式与 WCF 基础设施高度耦合客户端库 class
  • 创建不必要的额外文件

使用 WCF 通道 API

Pros

  • 得益于任何隔离框架提供的解耦,具有高可测试性IChannelFactory界面
  • 更好地控制服务的调用方式

Cons

  • 需要一些初步努力才能开始
  • 一些需要维护的自定义代码

总结一下使用代理提供更少的摩擦使用WCF服务时同时放弃一些控制和可测试性. Using Channel API 需要更多代码以换取一个更高程度的灵活性,这会很方便,特别是当您想要将组件与它们通信的 WCF 服务分开进行单元测试时。

相关资源:

  • 如何以编程方式将客户端连接到 WCF 服务
  • 在 WCF 中使用通道工厂与代理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2010 添加服务引用相对于直接 ClientBase<> 的优点 的相关文章

  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 从 asp.net mvc ajax 调用 wcf

    我有两个应用程序 第一个是 WCF 服务 第二个是 asp net MVC 3 应用程序 在 WCF 应用程序中我有一个界面 ServiceContract public interface IService1 OperationContr
  • 使用 SOAP 调用 WCF 服务

    我正在尝试在不创建 WCF 客户端的情况下测试 WCF 服务 我有类似的代码 问题here https stackoverflow com a 1643025 1397017 我希望完全控制 SOAP 负载 因此我希望能够发出我自己的 We
  • 运行 MVC3 应用程序时出错

    我有 Visual Studio 2010 最近我在使用MVC2 由于某种原因我在我的计算机上安装了MVC3 一切都运转良好 直到今天 Now when I am creating new project I am getting belo
  • 堆内存问题

    有一个 WCF 自托管服务必须在 99 的时间内正常工作 有时我们会遇到这样的记忆问题 但问题发生后 服务一切正常 我们该如何处理这个问题 任何关于提供能够在不同情况下生存的强大服务的提示和要点都非常受欢迎 我不太确定问题出在哪里 但内存泄
  • Visual Studio 2010 库链接错误

    当我尝试在项目中使用 DCMTK MT 库时 出现以下链接错误 我确信这些错误与VS2010的ws2 32 lib wsock32 lib netapi32 lib有关 但我已经将这三个库添加到项目属性中 您可以看到库已被搜索 如下所示 这
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • Visual Studio 2010:如何重新映射 F2 来重命名文件而不是打开对象浏览器

    In Visual Studio 2010 Solution Explorer tree view how can I remap the F2 key to Rename the Selected File rather than ope
  • WCF 数据服务错误处理

    我创建了一个带有服务操作的WCF数据服务 我想生成一种业务异常 我尝试生成WebFaultException但我不知道当服务操作抛出此错误时如何在客户端捕获此错误 这是我模拟异常的服务操作 WebGet public void Genera
  • WCF - 将空元素转换为可为空的本机类型

    将 SOAP 字段元素留空会导致本机类型出现强制转换错误 遗憾的是 由于客户端限制 无法使用 xsi nil true 将 WCF 协定本机类型标记为 nullable 似乎不足以阻止将以下错误返回给客户端 字符串 不是有效的布尔值 在 S
  • Visual Studio 2010“找不到或打开 PDB 文件”

    我尝试在 Visual Studio 10 中调试程序 但遇到断点问题 我将与 dll 文件对应的 pdb 文件放在同一目录中 但是在检查模块时 我发现每个 DLL 文件都被签名为Cannot find or open the PDB fi
  • WPF C# 输入框

    我正在使用 C 构建 WPF 应用程序 我想弹出一个对话框提示用户输入他 她的名字 之后 我将跟踪该名称并将一些数据保存到 txt使用该名称的文件 例如 输入的名称是姓名 约翰 所以我有数据数据 1 2 3 然后我将 数据 保存在John
  • 从 WCF 服务返回接口

    我有一些 NET 远程处理代码 其中在某些服务器端类中实现的工厂方法返回具体对象的接口 也在同一台服务器上执行 NET 远程处理会自动创建代理 并允许我将接口传递给客户端 然后客户端可以直接调用它们 接口示例 public interfac
  • WCF 4.0 REST 上传 MS-Excel 文件

    我正在尝试通过 WCF REST 服务上传 MS Excel 文件 我使用了下面帖子中给出的解决方案 RESTful WCF服务图片上传问题 https stackoverflow com questions 664712 restful
  • Visual Studio 2010 中的 GTK#

    我一整天都在尝试让 GTK 在 Windows Server 2008 R2 x64 上的 Visual Studio 2010 中工作 以便我可以开始编写漂亮的跨平台 GUI 应用程序 但我对 C 有点陌生 我有一个世界的麻烦 我安装了最
  • 异步调用的任务限制?

    我有一个同步工作的 NET 4 5 WCF 客户端 我正在更新它以使用新的异步 等待功能来进行多个同时服务器调用以同时获取数据块 在结束之前 我担心同时运行的所有线程将使服务器饱和 更不用说明年升级到该角色时会终止我的 Azure 辅助角色
  • 接收VS2010扩展的路径?

    我为 VS2010 编写了一个小扩展 vsix 文件 其中 vsix 是一个二进制文件 由扩展调用 我尝试像这样打开文件 ProcessStartInfo startInfo new ProcessStartInfo FileName Bi
  • CRT 虚拟析构函数

    我今天遇到了由于我的 dll 和实际项目中的不同 CRT 设置 MTd MDd 导致的堆损坏 我发现奇怪的是 只有当我将 dll 中的析构函数设置为虚拟时 应用程序才会崩溃 有一个简单的解释吗 我知道我无法释放不在堆上的内存 但是当我将析构
  • 错误MSB8008:指定的平台工具集(v120)未安装或无效[重复]

    这个问题在这里已经有答案了 我下载了一个c 项目 我打开了 sln文件 我尝试构建该项目 我收到以下错误 error MSB8008 Specified platform toolset v120 is not installed or i
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置

随机推荐

  • 运行应用程序时的 IntelliJ MyClass.class(没有此类文件或目录)

    我正在尝试在 IntelliJ 上运行我的 Android 应用程序 我从现有源创建了一个项目 并且已正确附加 SDK 一切运行正常 但当我尝试运行时 它会记录消息 Error MyClass class No such file or d
  • 找到 C 列的最后一行(然后 A 列和 B 列有不同的行大小)?

    如何找到 C 列最后使用的单元格 示例 Sheet1 Col A 和 Col B 有 1200 行 而 Col C 只有 1 行 ColA ColB ColC 1 1 1 2 2 empty 1200 1200 empty 这是我不成功的测
  • ASP.net 有效渲染元标记

    HTML 隐藏代码 MetaDescription Attributes content ThisBlog MetaDescription 这呈现为 As per 这个答案它不需要有 ID 属性 并以 gt 我怎样才能让它以这种方式渲染 我
  • 数据范围订阅奇怪的行为

    我在玩 swift 的Data在下面的小代码中 var d Data count 10 d 5 3 let d2 d 5 lt 8 print d2 0 令我惊讶的是 这段代码抛出异常print 而下面的代码则不然 var d Data c
  • 无 UI 的 WiX 命令行选项“/quiet”会终止正在运行的进程

    我使用 Wix 为我的应用程序创建了一个没有 UI 的安装包 此处称为 XYZ 如果我在 XYZ exe 运行时双击 MSI 它会通知我某个进程正在锁定文件 我可以选择终止锁定进程 也可以中止安装 这很好 作为用户我可以决定做什么 但是当我
  • JComboBox 上的 JScrollPane

    我制作了一个组合框 但某些元素比我的框的宽度更宽 所以我尝试添加一个水平滚动窗格 而我唯一能看到的是一个内部带有组合框的滚动窗格 当然我做错了什么 这是我没有 jscrolpane 的代码 issuerdocumentJComboBox n
  • Powershell 2 和 .NET:针对极大的哈希表进行优化?

    我正在涉足 Powershell 对 NET 完全陌生 我正在运行一个以空哈希表开头的 PS 脚本 哈希表将增长到至少 15 000 到 20 000 个条目 哈希表的键是字符串形式的电子邮件地址 值是布尔值 我只需要跟踪我是否看到过电子邮
  • 在表单身份验证中获取当前的 MembershipUser

    我想获取当前的MembershipUser从我的页面 Membership GetUser 返回空值 不能用 HttpContext Current User Identity Name 因为它根据我的配置返回我的配置文件名称以获取用户名
  • 重新训练 MobileNet SSD V1 COCO 后,Tensorflow 的 pb 和 pbtxt 文件无法与 OpenCV 一起使用

    我已关注this按照所述使用 Tensorflow GPU 重新训练 MobileNet SSD V1 的教程 使用 GPU 训练后损失为 0 5 下面有关配置的更多信息 并得到了model ckpt 这是我用于训练的命令 python m
  • 如何在maven中添加JaCoCo

    我已经使用 JUnit 编写了一个单元测试用例 现在我想在我的构建工具中添加 JaCoCo 该工具正在移动 3 2 1 我是 Maven 的新手 在添加它时 我不得不怀疑我想将它添加到依赖项或插件中吗 两者都可用 如下
  • Python:函数文档

    有没有一种方法可以检查 python 本身内部的函数或方法的作用 类似于 Matlab 中的帮助函数 我想获得函数的定义 而不必谷歌它 是的 您可以致电help whatever 在Python交互式解释器中 gt gt gt help T
  • 动态调整滚动视图中标签的大小?

    假设您有如下设置 ScrollView size hint 1 0 5 Label size hint 1 None 最初 标签没有内容 文本 如果我理解正确的话 当创建对象时 标签的高度是None 当应用程序运行时 标签的text属性设置
  • MS Excel LINEST、TREND、LOGEST 和 GROWTH 函数中的缺失值

    我在 Excel 2003 中使用 GROWTH 或 LINEST TREND 或 LOGEST 所有这些都会造成同样的麻烦 函数 但是存在一个问题 如果某些数据丢失 该函数将拒绝给出结果 You can 在这里下载文件 有什么解决方法吗
  • 登录 Microsoft SQL Server 错误:18456

    我在尝试连接到 SQL Server 时收到此错误 微软 SQL 服务器错误 18456 谁能告诉我错误代码是什么意思 如果您尝试使用 SQL Server 身份验证 进行连接 那么您可能需要修改服务器身份验证 在 Microsoft SQ
  • 不知道为什么这个函数返回一个反转的数组

    我正在做一个 JavaScript 练习 但在理清其工作原理的逻辑时遇到了一些麻烦 它基本上有一个名为 mystery 的函数 它使用一堆非常简单的函数 并返回一个你给它的数组 但顺序相反 我在白板前坐了一个小时 试图找出其背后的逻辑 但没
  • Dynamic_cast(pb) 返回 null

    在C Primer 5th 19 2 1中关于dynamic cast 它说 对于dynamic cast
  • URI:Module 的未定义方法“escape”

    我是一个研究 Ruby on Rails 的菜鸟 我正在尝试将 ruby on Rails 应用程序集成到 Quickbooks 中 我正在按照以下步骤这个视频 当我尝试按 连接到 QuickBooks 按钮进行身份验证时 我陷入了困境 我
  • 消除字符向量中非唯一元素的歧义

    给定一个由非唯一的患者姓名首字母组成的向量 init c AA AB AB AB AC 寻找消歧义如下 init1 c AA AB01 AB02 AB03 AC 即 唯一的首字母应保持不变 非唯一的首字母应通过添加两位数来消除歧义 使用指示
  • 从 boost::labeled_graph 获取节点标签

    我想检索 BGL 的labeled graph 中标记节点的标签 但找不到执行此操作的方法 以下 MWE 演示了我正在寻找的内容 g O3 question cpp o question exe I std c 11 lprotobuf l
  • VS2010 添加服务引用相对于直接 ClientBase<> 的优点

    我注意到 当在 VS2010 中使用 添加服务引用 时 会创建大量文件 其中一个文件是 Reference cs 它为服务合同创建一个 ClientBase 因此 我想知道 VS 创建的大量额外文件是否有任何优势 或者我可以自己使用 Cli