从 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 ? 的相关文章

随机推荐

  • 在 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 同时等待下一个到达 我想这就像分页 但我只想对