从 WCF 中分块获取大 List

2023-11-24

我正在尝试从 WCF 服务获取实体列表,我遇到的问题是网络上存在一些严重的延迟,因此数据需要相当长的时间才能到达我的客户端。我的想法是找到一种方法来获取前 1000 个,然后将它们推送到 UI,同时等待下一个到达。

我想这就像分页,但我只想对 WCF 层中的全套进行分页,而不是一次从数据库获取一页

Cheers


WCF 在将消息传递给更高级别之前会查看整个消息。因此,您的数据需要完整到达,而通常的 WCF 合同将不起作用。

但是,您可以使用使用 WCF 进行流式传输。这允许逐渐从流中读取有效负载并将其传递到更高级别。为了让它工作,你需要:

  • 启用流媒体(在link我提供)
  • 更改服务合同以提供流
  • 在服务器端,开始序列化实体并写入流,可能以 100 个块的形式写入。尽管使用我们的 DataContractSerializer 非常简单,但您需要自己序列化实体。
  • 您需要在这 100 个实体之间提供一个分隔符,以便您的流程可以发现当前 100 个实体的完成位置。一种可能的选择是 1 KB 的字节零。
  • 在客户端,将函数实现为异步。继续从缓冲区中的流中读取(例如 4KB),直到到达分隔符。一旦命中,反序列化并引发异步事件。

这会更复杂该 WCF 开箱即用,但可以满足您的需求。

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

从 WCF 中分块获取大 List ? 的相关文章

  • 无法使用 rtools40 和 R 4.0 构建 RDCOMClient

    不久前 我创建了 RDCOMClient 包的一个分支 以使其与 R 3 6 一起工作 https github com dkyleward RDCOMClient https github com dkyleward RDCOMClien
  • 不同文件中的相同静态变量[重复]

    这个问题在这里已经有答案了 HI 欢迎大家回答这个问题 Q1 如果 File1 c 包含 static int a File2 c 包含 static int a 如果这两个文件是同一项目的一部分 如果是的话 编译会抛出任何错误吗 如果它不
  • 为什么我需要显式编写“auto”关键字?

    我正在从 C 98 转向 C 11 并且已经熟悉了auto关键词 我想知道为什么我们需要明确声明auto编译器是否能够自动推导类型 我知道 C 是一种强类型语言 这是一条规则 但如果不显式声明变量就不可能实现相同的结果auto 放弃显式的a
  • JQuery、ASCX 和 webmethods 似乎不起作用

    我有一个级联下拉列表 其中 3 个 类型 类别和子类别 首先类型负载 然后选择类型 类别负载以及选择类别 子类别负载 我还有 2 个按钮 添加类别 和 添加子类别 单击这些按钮后 我调用 JQuery 模态表单来添加它们 我在代码后面使用
  • ScrollableControl 在整个控件周围绘制边框

    我正在构建基于的自定义用户控件ScrollableControl 现在我正在尝试在控件周围添加边框 类似于 DataGridView 的边框 我可以使用以下方法绘制边框 e Graphics TranslateTransform AutoS
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • ld: 无法对非 PE 输出文件执行 PE 操作错误

    我是操作系统编程的新手 我正在读一本书 其中给出了一个简单的内核示例 如下所示 main char video memory 0xb8000 video memory X 为了编译这个名为 kernel c 的文件 我在 Windows 7
  • 我们可以向 ServicePointManager.SecurityProtocol 添加四个协议吗?

    我想支持从 ssl3 到 tls 1 2 的所有安全协议 但是在网上搜索时我发现代码为 ServicePointManager SecurityProtocol SecurityProtocolType Ssl3 SecurityProto
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 是否有普遍接受的 GMP 替代方案来实现任意精度? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在寻找 BigInt 库的过程中 我发现了这篇文章 Microsoft Windows 上的 C 或
  • 使用 System.Windows.Forms.Timer.Start()/Stop() 与 Enabled = true/false

    假设我们在 Net 应用程序中使用 System Windows Forms Timer 在计时器上使用 Start 和 Stop 方法与使用 Enabled 属性之间有什么有意义的区别吗 例如 如果我们希望在进行某些处理时暂停计时器 我们
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • GCC编译非常慢(文件大)

    我正在尝试编译一个大的 C 文件 专门用于 MATLAB mexing C 文件大约 20 MB 可用来自 GCC 错误跟踪器 https gcc gnu org bugzilla attachment cgi id 36632如果你想玩一
  • System.IO.IOException:进程无法访问文件“.txt”,因为它正在被另一个进程使用

    我正在使用下一个代码来记录 Web 应用程序的错误 using StreamWriter myStream new StreamWriter sLogFilePath true myStream WriteLine string Forma
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 在 LaTeX 中创建新环境时出现问题

    我正在尝试在 LaTeX 中实现这个新环境 newenvironment javacode 2 begin lstlisting language java label 1 caption 2 end lstlisting 然后像这样使用它
  • 自动映射器:将 List 映射到 List

    我怎样才能映射一个List
  • 并行查询工作线程陷入死锁

    我运行 SQL Server Trace 来跟踪一些死锁问题 这条评论让我深受打击Parallel query worker thread was involved in a deadlock作为僵局的一个原因 Q1 这是否意味着同一个查询
  • Rails:wkhtmltopdf RuntimeError(wkhtmltopdf 的位置未知)

    我正在使用 Ubuntu 11 04 在 Ruby on Rails 中开发一个应用程序 在应用程序中我需要生成pdf文档 所以我正在使用 wicked pdf 和 wkhtmltopdf binary gems 在我的系统的开发环境中一切
  • Node.js 加密中的 HMAC 与 Google Apps 脚本 (GAS)

    你能解释一下使用 Node JS 的加密模块和 Google Apps 脚本创建 HmacSha512 签名之间的区别吗 代码 1 Node JS var secret my secret var message message var c
  • Django 喜欢按钮

    我一直在尝试为我的应用程序的每个板上的宠物图片创建一个 点赞 按钮 但我不知道如何创建一个按钮 因为它包含一个整数 通常 我对我创建的功能有一个想法和理解 当用户点击 喜欢 按钮时 点赞按钮会加1 并显示在图片附近 这是我的图片模块 cla
  • 玩2.1 Json序列化traits?

    我有这个 package models import play api libs json import play api libs functional syntax object ModelWrites implicit val tmo
  • CRM 2011 工作流程“无效指针”错误

    我在 CRM 2011 中有一个自定义工作流程 它是针对自定义实体记录手动触发的 当选择单个记录进行处理时 工作流始终会成功 但是 当选择多条记录时 至少有一条会失败 即使使用相同的数据 每次尝试提供的错误似乎也有所不同 到目前为止我遇到的
  • Javascript toLocaleTimeString() 在最新版本的 Chrome 中返回 ASCII 226 而不是空格

    我们使用 Javascript 函数 toLocaleTimeString 来解析日期 时间 最新版本的 Chrome 在秒和 AM PM 部分之间突然返回 ASCII 226 Edge 没有任何问题 旧版本的 Chrome 也没有任何问题
  • VueRouter 默认子路由不带尾部斜杠

    VueRouter 总是在子路由的路径之前添加尾部斜杠 假设我有一个这样的路由配置 const routes path home components default HomeBase children path component Hom
  • 使用 OpenCV Python 检测并可视化两个图像之间的差异

    我有两张图片 希望能清楚地表明差异所在 我想为这两个图像添加颜色 以便用户可以在一两秒内清楚地发现所有差异 例如 这里有两张有一些差异的图像 leftImage jpg rightImage jpg 我目前使差异变得明显的方法是创建一个蒙版
  • 如何对 BindingList 进行排序?

    我有数千个 MyClass 对象存储在BindingList
  • 标准差 NumPy 函数的内存消耗

    我目前正在使用 GDAL 的 Python 绑定来处理相当大的栅格数据集 gt 4 GB 由于将它们立即加载到内存中对我来说不是可行的解决方案 因此我将它们读入较小的块并逐段进行计算 为了避免为每个块读取进行新的分配 我正在使用buf ob
  • 如何在iOS应用程序项目中正确嵌入第3方.dylib文件以供App Store发布?

    我正在使用支持 H264 的 PJSIP 库构建一个 iOS 应用程序 构建 H264 时 我得到 1 个 a 文件和 2 个 dylib 文件 我尝试通过添加为 嵌入式库 以及创建一个单独的框架然后将其添加到 嵌入式库 来在我的项目中使用
  • 使用非连续行号的数据子集

    我有一个 30 行 100 列 X 的数据框 我想创建一个新的数据框 Y 其中包含较大数据框中的特定行 例如 我希望数据框 Y 包含第 1 行到第 5 行 第 10 行到第 14 行以及第 20 行 我知道我可以使用代码 Y lt X 1
  • 使用 g++ 的符号可见性

    我在 Linux Mac 下编译了一个隐藏了符号的 C 库 我用过 attribute visibility hidden 对于我所有的课程并使用选项进行编译 c O2 fPIC MMD MP MF Mac下 使用Mac 依赖项 工作完成得
  • 检测已安装的 Excel 版本(和 Service Pack)

    我需要能够从我正在开发的一些 NET 代码中检测我的计算机中安装的 Excel 版本 我目前正在使用应用程序版本为此 但它没有给我有关服务包的信息 我宁愿避免这样的事情 http www mvps org access api api006
  • 添加代码块而不执行它

    In knitr 是否有任何选项允许插入代码而不执行 我只希望代码以与其他代码相同的样式出现在文档中knitr代码块 我对 Rnw 文档中的 LaTeX 选项特别感兴趣 就像 Ramnath 评论的那样 这可以通过使用来实现eval FAL
  • Facebook 的 5000 个帖子 API 限制

    我对 Facebook 限制 API 调用的方式有疑问 到本文底部 http developers facebook com blog post 478 脸书 说 除了上面列出的每个表和连接的文档中提到的限制之外 了解我们在运行可见性检查之
  • 从 WCF 中分块获取大 List

    我正在尝试从 WCF 服务获取实体列表 我遇到的问题是网络上存在一些严重的延迟 因此数据需要相当长的时间才能到达我的客户端 我的想法是找到一种方法来获取前 1000 个 然后将它们推送到 UI 同时等待下一个到达 我想这就像分页 但我只想对