HTML5技术

Asp.net 面向接口可扩展框架之消息队列组件 - xiangji(6)

字号+ 作者:H5之家 来源:H5之家 2016-05-24 10:00 我要评论( )

MSMQ格式化(序列化和反序列化) FormatterTEntity : IMessageFormatter, ICloneable{ Formatter(){Capacity = 1024 ;} #region 配置Capacity { get ; set ; } 序列化工具 ISerializeTEntity, Stream Serializer { ge

MSMQ格式化(序列化和反序列化) Formatter<TEntity> : IMessageFormatter, ICloneable { Formatter() { Capacity = 1024; } #region 配置 Capacity { get; set; } 序列化工具 ISerialize<TEntity, Stream> Serializer { get; set; } 反序列化工具 IDeserialize<Stream, TEntity> Deserializer { get; set; } #endregion #region IMessageFormatter CanRead(Message message) { return message.BodyStream != null && message.BodyStream.Length > 0; } Read(Message message) { if (message == null) return null; IDeserialize<Stream, TEntity> instance = Deserializer ?? GlobalServices.Instance.CreateDeserializer<Stream, TEntity>(); TEntity entity = default(TEntity); try { Transform.TryDeserialize<Stream, TEntity>(instance, message.BodyStream, ref entity); } catch { } return entity; } Write(Message message, object obj) { TEntity entity = default(TEntity); if (!Transform.TryConvert<object, TEntity>(obj, ref entity)) return; Stream stream = new System.IO.MemoryStream(Capacity); ISerialize<TEntity, Stream> instance = Serializer ?? GlobalServices.Instance.CreateSerializer<TEntity, Stream>(); try { Transform.TrySerialize<TEntity, Stream>(instance, entity, ref stream); } catch { } message.BodyStream = stream; } #region ICloneable Clone() { return this; } #endregion #endregion }

MSMQ格式化

 

 

消息队列这个组件我开发测试了比较长的时间,也是项目开发关键。以后还要整合为框架的基础服务,这样用起来就更加方便和简单。

分布式消息队列一直都是高大上的东西,很多分布式架构都是以分布式消息队列为基石来构架。

我有一句话经常说,”好钢要用在刀刃上,好东西不能滥用“。分布式消息队列也是,我们用分布式任务解决计算密集型问题还是资源密集型问题。如果都不是,可不可以尝试更多的内存(进程内)消息队列,说不定惊喜多多啊。

我也力争让分布式消息队列和内存(进程内)消息队列编码上几乎没有区别,这样”两种“消息队列就可以很方便的切换。

网上有很多优秀开源消息队列,用法各异,我打算封装为一致的api(只是配置不一样),来把消息队列发扬广大。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如何在 ASP.NET Core 中发送邮件 - Savorboard

    如何在 ASP.NET Core 中发送邮件 - Savorboard

    2017-05-02 08:02

  • 十二个 ASP.NET Core 例子 - Savorboard

    十二个 ASP.NET Core 例子 - Savorboard

    2017-04-27 16:01

  • ASP.NET MVC5请求管道和生命周期 - 雪飞鸿

    ASP.NET MVC5请求管道和生命周期 - 雪飞鸿

    2017-04-24 08:04

  • 调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注 - QISHUANG

    调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加

    2017-04-18 10:02

网友点评