C#微信公众号开发之用户上下文WeixinContext和MessageContext_第1页
C#微信公众号开发之用户上下文WeixinContext和MessageContext_第2页
C#微信公众号开发之用户上下文WeixinContext和MessageContext_第3页
C#微信公众号开发之用户上下文WeixinContext和MessageContext_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C#微信公众号开发之用户上下文WeixinContext和MessageContext///summary

///获取MessageContext,如果不存在,使用requestMessage信息初始化一个,并返回原始实例

////summary

///returns/returns

publicTMGetMessageContext(IRequestMessageBaserequestMessage)

///summary

///获取MessageContext,如果不存在,使用requestMessage信息初始化一个,并返回原始实例

////summary

///returns/returns

publicTMGetMessageContext(IResponseMessageBaseresponseMessage)

///summary

///记录请求信息

////summary

///paramname="requestMessage"请求信息/param

publicvoidInsertMessage(IRequestMessageBaserequestMessage)

///summary

///记录响应信息

////summary

///paramname="responseMessage"响应信息/param

publicvoidInsertMessage(IResponseMessageBaseresponseMessage)

///summary

///获取最新一条请求数据,如果不存在,则返回Null

////summary

///paramname="userName"用户名(OpenId)/param

///returns/returns

publicIRequestMessageBaseGetLastRequestMessage(stringuserName)

///summary

///获取最新一条响应数据,如果不存在,则返回Null

////summary

///paramname="userName"用户名(OpenId)/param

///returns/returns

publicIResponseMessageBaseGetLastResponseMessage(stringuserName)

}

WeixinContext中有两个用于储存用户上下文的对象:MessageCollection及MessageQueue。

这两个对象中的元素集合是重合的,但是MessageQueue对元素进行了排序,以便及时处理掉顶部过期的上下文。

ExpireMinutes用于定义上下文时间有效期,默认为90分钟。可以在程序的任何地方设置设个参数,且立即生效。

PS:MessageQueue中删除过期数据的逻辑以极高的效率运作,开发时无需考虑CPU占用及对象冲突的问题(额外校验时间是否超时)。

MessageContext

MessageContext用于保存单个用户的上下文信息,被储存在WeixinContext的MessageCollection及MessageQueue对象中。IMessageContext定义如下:

publicinterfaceIMessageContext

///summary

///用户名(OpenID)

////summary

stringUserName{get;set;}

///summary

///最后一次活动时间(用户主动发送Resquest请求的时间)

////summary

DateTimeLastActiveTime{get;set;}

///summary

///接收消息记录

////summary

ListIRequestMessageBaseRequestMessages{get;set;}

///summary

///响应消息记录

////summary

ListIResponseMessageBaseResponseMessages{get;set;}

///summary

///临时储存数据,如用户状态等,出于保持.net3.5版本,这里暂不使用dynamic

////summary

objectStorageData{get;set;}

}

您可以根据自己的需要创建自己的类,实现这个接口,并且被WeixinContext使用。当然如果你的要求不是那么特殊,而且你比较懒的话,SDK提供了一个默认的MessageContext实现:

///summary

///微信消息上下文(单个用户)

////summary

publicclassMessageContext:IMessageContext

publicstringUserName{get;set;}

publicDateTimeLastActiveTime{get;set;}

publicListIRequestMessageBaseRequestMessages{get;set;}

publicListIResponseMessageBaseResponseMessages{get;set;}

publicobjectStorageData{get;set;}

publicMessageContext()

*注意:即使使用其他类实现IMessageContext,

*也务必在这里进行下面的初始化,尤其是设置当前时间,

*这个时间关系到及时从缓存中移除过期的消息,节约内存使用

RequestMessages=newListIRequestMessageBase

ResponseMessages=newListIResponseMessageBase

LastActiveTime=DateTime.Now;

}

上面的代码根据注释很好理解,需要说明一下的是StorageData。这是一个用于储存任何和用户上下文有关数据的容器,W

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论