下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PHP函数面试题及详细答案(实战版)
- 2026年全国高校辅导员素质能力大赛笔试测试卷及参考答案
- PETS三级考试完整题型说明、真题模拟及详细答案解析
- 地铁车站导向标识更新方案
- 2026全国演出经济人考试题目及答案(演出市场政策与经济实务)
- 平衡康复训练跌倒风险动态防控方案共识
- 2026学年吉林省磐石市四年级语文期末自我评估难点突破题(附答案)详细答案和解析
- Oracle数据库高频面试题及详细答案(实战版)
- OC运维工程师笔试真题及详细答案(真实企业版)
- 护士岗位职责培训考试题及答案
- 工程地质及水文地质课件
- 初三差生班会课件
- DB31/T 1236-2020未成年人司法社会工作服务规范
- C++解析wav文件方法介绍
- 酶解法从虾壳中提取甲壳素技术
- 第47 届世界技能大赛商品展示技术项目技术文件
- 04S519小型排水构筑物(含隔油池)图集
- 饲料生产许可证考试(判断题200题)附有答案
- 小学语文作文:五感法描写课件
- 海龟编辑器画图
- 研究生学术英语视听说陈新仁课后参考答案
评论
0/150
提交评论