Azure 服务总线序列化类型

2024-03-13

随着我们转向面向服务的体系结构,我们已开始研究使用 Windows Azure 服务总线来替代当前的队列。

大部分文档都很清楚;但是我很难确定哪种类型的序列化BrokeredMessage当提供主体时使用。

例如,假设我实例化了一个BrokeredMessage对象如下:

ICommand sendMessageCommand = new SendMessageCommand
{
    Title = "A new message title",
    Body = "A new message body"
};

BrokeredMessage brokeredMessage = new BrokeredMessage(sendMessageCommand);

queueClient.Send(brokeredMessage); 

SendMessageCommand是一个简单的 DTO,标记为[Serializable]属性;在我们的旧队列中,这是二进制序列化的,因此可以更快地存储并保留其元数据。这对我们来说很重要,因为我们使用队列来发送命令此处概述的模式 https://cuttingedge.it/blogs/steven/pivot/entry.php?id=91接收工作者角色使用泛型和动态类型的混合来反序列化命令。

然而根据THIS https://msdn.microsoft.com/en-us/library/windowsazure/hh694235.aspx文章正文传递给了构造函数BrokeredMessage是“二进制 XML 序列化”。我的假设是,这是标准 XML 序列化,然后通过二进制格式化程序传递,对吗?

更进一步;这是否意味着如果我使用默认值BrokeredMessage消息体功能;我必须确保所有对象都是 XML 可序列化的,包括出现的所有问题? (私有字段丢失,没有用于使用泛型反序列化的元数据,xml序列化属性)

最后;如果是这种情况;有没有一个简单的方法可以解决这个问题?我正在考虑进行我们自己的二进制序列化,然后存储byte[]在某处房产中BrokeredMessage.


根据文档 http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-topics/:

应用程序可以通过传递任何内容来设置消息正文 可序列化对象传递给 BrokeredMessage 的构造函数,并且 然后将使用适当的 DataContractSerializer 来序列化 目的。或者,可以提供 System.IO.Stream。

您正在使用的构造函数有本文档 http://msdn.microsoft.com/en-us/library/windowsazure/hh322644.aspx:

从给定的 BrokeredMessage 类初始化一个新实例 对象通过使用 DataContractSerializer 和二进制 XmlDictionaryWriter。

这非常适合定义为 DataContracts 的消息,如所解释的在本文中 http://www.cloudcasts.net/devguide/Default.aspx?id=12029.

或者,您可以使用代理,如中所述这个答案 https://stackoverflow.com/a/15452274/376366.

您还可以提供你自己的序列化器 http://msdn.microsoft.com/en-us/library/windowsazure/hh330723.aspx or a stream http://msdn.microsoft.com/en-us/library/windowsazure/hh330764.aspx.

另一种方法是进行自己的序列化,并使用字节数组或字符串作为提供给构造函数的可序列化对象(而不是在消息属性中)。这是实现互操作性的充分方法,因为您可以使用序列化格式,例如 JSON 或protobuf http://udooz.net/blog/2012/08/azure-servicebus-message-payload-protobuf-serialization/。微软自己的Windows Azure 应用程序性能最佳实践 http://www.windowsazure.com/en-us/develop/net/best-practices/performance/建议在影响性能时使用自定义或第三方序列化。

我使用 JSON 序列化和动态对象获得了良好的结果。

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

Azure 服务总线序列化类型 的相关文章

  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • 如何在 Matlab 中计算 3D 网格的投影

    我正在尝试使用 matlab 从不同视图计算 3d 网格的 2d 投影 我现在使用的解决方案是绘制 3D 网格 旋转它并制作屏幕截图 我想知道是否有任何 matlab 内部函数或任何其他解决方案允许我在给定一组顶点和三角形的情况下计算投影而
  • 为什么仅针对 POST 请求,Firebase 上托管的 NextJs 应用会收到“502 Gateway”错误?

    我开始使用 NextJs 框架构建 API 我希望将其托管在 Firebase 上 托管和功能 只要我只发送 GET 请求 一切就正常 当我发送 POST 请求时 我收到一个 502错误的网关 error 复制起来非常简单 您只需下载并部署
  • 从 ostream 获取 char* 而不进行复制

    我有一个ostream并且数据已写入其中 现在我想要该数据的形式char大批 有没有办法在不复制所有字节的情况下获取字符缓冲区及其大小 我的意思是 我知道我可以使用ostringstream并打电话str c str 但会产生一个临时副本
  • 在 SQL 中对包含数字的字符串列进行排序?

    我正在尝试对字符串列进行排序 包含数字 SELECT name FROM mytable ORDER BY name ASC name a 1 a 12 a 2 a 3 你看Mysql的自然排序算法是这样放置的a 12 after a 1
  • 从驱动器号获取驱动器型号

    我想从驱动器号中获取型号名称 例如Crucial CT256MX100SSD1是我的驱动器型号C 可以使用简单的 WMI 查询来检索模型 var hdd new ManagementObjectSearcher SELECT FROM Wi
  • 在 Ubuntu 20.04 上为 pandas 构建轮子需要 20 多分钟,但在 18.04 上不需要

    我有一个 ERPNext 的安装脚本 可以在 Ubuntu 18 04 上正常运行 当我在 20 04 上运行相同的脚本时 我不得不等待 20 多分钟才能完成 而在 18 04 上则需要大约 30 秒 我的脚本包括这两行 env bin p
  • 如何让 vim 使用正确的缩进格式化项目符号列表

    在 vim 中 我可以设置 textwidth 选项 然后将新文本格式化为换行 我还可以使用 gq 命令显式换行文本 然而 项目符号列表的行为对我来说有点出乎意料 vim 文档讨论了使用带有连字符的项目符号列表 当我尝试这样做时 它开始正常
  • router-outlet 不是已知元素

    以下代码有效 app module ts import NgModule from angular core import HttpModule from angular http import AppComponent from app
  • 如何更改此 R 图中的字体系列? [复制]

    这个问题在这里已经有答案了 我正在尝试将轴和图例的字体更改为衬线但添加family serif 没有为传奇工作 我该怎么做呢 plot sort n cdf pch 3 cex 0 5 xlab Order ylab Cn family s
  • pandas 中 groupby 中的排名

    我有一个典型的 面板数据 在计量经济学术语中 不是 pandas 面板对象 数据框有一个Date列和一个ID列 以及包含某些值的其他列 对于每个日期 我需要根据 V1 对 ID 进行横断面排名 分为 10 组 十分位数 并创建一个名为的新列
  • Python:定义特定类型对象的列表

    我想继承一个列表来生成myList类 仅接受一种特定类型的对象 例如整数 我相信装饰者可以优雅地做到这一点 使用怎么样arrays http docs python org library array html 该模块定义了一个对象类型 它
  • XLib:获取光标图像

    有没有办法使用 Xlib 检索当前光标位图 我检查过X光标人 http www xfree86 org 4 3 0 Xcursor 3 html但我没有看到任何方法可以做到这一点 使用 GetCursorImage SelectCursor
  • matlab中的支持向量机

    您能否举一个在 matlab 中使用支持向量机 SVM 进行 4 类分类的示例 例如 atribute 1 atribute 2 atribute 3 atribute 4 class 1 2 3 4 0 1 2 3 5 0 0 2 6 4
  • 如何在 Android 中使用文本视图显示颠倒的文本?

    如何在 Android 中使用文本视图显示颠倒的文本 就我而言 我有一个 2 人游戏 他们彼此面对面玩 我想向第二个面向他们的玩家展示测试 这是我在 AaronMs 建议后实施的解决方案 执行重写的类 bab foo UpsideDownT
  • Firebase 服务器时间戳将 iOS 翻倍

    ServerValue timestamp 回报 AnyHashable Any 如何将其转换为Double 这样我就可以创建一个带有时间戳的日期 这并不是 Firebase 时间戳的工作原理 它实际上所做的是将时间戳写入节点 但在写入之后
  • 如何验证 ZF2 中的复选框

    我已经阅读了许多针对 Zend Framework 缺乏默认复选框验证的解决方法 我最近开始使用 ZF2 但文档有点缺乏 有人可以演示如何使用 Zend 表单和验证机制验证复选框以确保其被选中吗 我正在为我的表单使用数组配置 使用 ZF 网
  • 安全组出口规则仅允许 ECR 请求

    当使用 ECR 存储用于 ECS 的容器映像时 EC2 实例 或 Fargate 服务 必须具有允许 通过公共互联网 访问特定于账户的存储库 URI 的安全组 许多组织都有严格的 IP 白名单规则 通常不允许为所有 IP 启用出站端口 44
  • 从命令行在 Hadoop 中检测压缩编解码器

    有没有简单的方法可以找出 Hadoop 中用于压缩文件的编解码器 我是否需要编写 Java 程序 或者将文件添加到 Hive 以便我可以使用describe formatted table 一种方法是在本地下载文件 使用hdfs dfs g
  • 具有接口的枚举类成员无法在内部找到方法

    我遇到了一个奇怪的问题 我不确定这是编译器问题还是我对接口枚举的理解 我正在使用 IntelliJ IDEA 12 构建一个 Android 项目 并且我有一个这样的类 public class ClassWithEnum private
  • Azure 服务总线序列化类型

    随着我们转向面向服务的体系结构 我们已开始研究使用 Windows Azure 服务总线来替代当前的队列 大部分文档都很清楚 但是我很难确定哪种类型的序列化BrokeredMessage当提供主体时使用 例如 假设我实例化了一个Broker