270 likes | 458 Views
MSG430 采用 AJAX 技术 访问即时通讯( RTC )平台. 课程内容概述. 本课程介绍了最新的 Microsoft Office Communicator Web Access AJAX 服务。开发人员可以很方便的使用这个服务,将即时消息集成进 Web 应用之中,或者定制个性化的即时消息客户端。 听众范围:开发人员 预备知识 DHTML & CSS JavaScript DotNET & C#. 课程内容安排. AJAX 技术概要 Communicator Web Access 配置与访问
E N D
课程内容概述 • 本课程介绍了最新的Microsoft Office Communicator WebAccessAJAX服务。开发人员可以很方便的使用这个服务,将即时消息集成进Web应用之中,或者定制个性化的即时消息客户端。 • 听众范围:开发人员 • 预备知识 • DHTML&CSS • JavaScript • DotNET&C#
课程内容安排 • AJAX技术概要 • CommunicatorWebAccess配置与访问 • CommunicatorWebAccessAJAXService程序设计与演示 • 总结与Q&A
AJAX是一种概念 • AJAX概念的提出者Jesse James Garrett认为 • AJAX是Asynchronous JavaScript and XML的缩写 • AJAX并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一起,包括 • 使用XHTML和CSS标准化呈现 • 使用DOM实现动态显示和交互 • 使用XML和XSLT进行数据交换与处理 • 使用XMLHttpRequest进行异步数据读取,XML或纯文本等 • 最后用JavaScript绑定和处理所有数据 • OutlookWebAccess是第一个符合AJAX概念的成功的商业程序
AJAX为什么流行 使用AJAX的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
数据交换格式:JSON • JavaScriptObjectNotation • 轻量级的数据交换格式,简明易懂,易于使用 • JSON与AJAX无关,是一种独立的数据交换格式 • Microsoft一些项目将它作为AJAX的数据交换格式 • JSON举例 { “Methods”:[ { “Note”:“Text”, “MethodName”:“myMethod” }] }
CommunicatorWebAccess • 类似OfficeCommunicator2005的Web客户端 • 使用CWAAJAXService构建 • 除浏览器外不需要安装任何软件,包括ActiveX Web界面的极致用户体验
配置CommunicatorWebAccess • 安装LiveCommunicationServer2005SP1 • 企业版或标准版 • 安装CommunicatorWebAccessServer • 安装CWAHotfixKB915066 • http://www.microsoft.com/downloads/details.aspx?familyid=5FFBD0DA-124C-4FFC-A810-4A9E9E50D80D&displaylang=en • 官方CWA部署指南(英文版) • http://www.microsoft.com/downloads/details.aspx?FamilyId=B70782D2-C9AB-423E-A126-9E2882863969&displaylang=en
访问CommunicatorWebAccess • 登录进入CWAServer而不是LCSServer • 推荐使用HTTPS的方式访问,也允许HTTP方式 • 两种认证方式 • CWA表单认证(FormBasedAuthentication) • IIS集成认证(IntegratedWindowsAuthentication) • 与ActiveDirectory集成进行身份认证 • 需要在IE中将站点设定为可信站点 • 访问URL的设定 • 填写登录信息 https://<cwaServer> • 单点登录 https://<cwaServer>/user@domain.com • 不完全域名 https://<cwaServer>/user
建立自己的CWAAJAX应用 • 使用CWA控制台建立新的CWA站点 • 在IIS中添加AJAX extension & filter • 浏览器应用(如JavaScript) • 在此站点/cwa/client目录下建立虚拟目录 • 设定此目录可读与可运行JavaScript权限 • 非浏览器应用(如C#) • 必须能够发送HTTP请求到此站点 • CWA AJAX Service SDK 1.0 • http://www.microsoft.com/downloads/details.aspx?familyid=a839967b-680f-41e6-99b4-f020319bbd88&displaylang=en
CWAAJAXApplication 浏览器·非浏览器
基本流程 • 用户登录 • FormbasedAuthentication • POST动作 http://<cwaServer>/forms/logon.html • WindowsIntegratedAuthentication • GET动作 http://<cwaServer>/iwa/logon.html?uri=<user>@<domain> • 包含SIP、Domain\User、密码、登录状态、语言 • 缓存Cookie,以后每个Request都要提供Cookie • 注册客户端事件监听 • 等待服务器事件,触发相应客户端事件 • 登出 http://<cwaServer>/cwa/SignoutHandler.ashx/?Ck=<Cookie>
客户端与服务器交互 • 调用服务器方法 • http://<cwaServer>/cwa/MainCommandHandler.ashx/?Ck=<Cookie> • Request:使用POST方法,ContentType必须设为text/json • 接收服务器事件 • http://<cwaServer>/cwa/AsyncDataChannel.ashx?AckID=<ackID>&Ck=<Cookie>&UA=true • Request:使用GET方法,ContentType同样需要设为text/json • ackID服务器端计数器,用来控制返回大于ackID的所有最新事件 • 返回的事件列表为JSON格式,解析后映射到相应客户端事件 • 服务器要求客户端延时1-3秒后再发送下一个Request
数据交换格式JSON • 客户端发送请求的数据格式 { “AJAXVersion” : string, “methods“: [ {"RequestId" : string, "MethodName" : "<methodName>", "<paramName>" : <paramValue> }, {"RequestId" : string, "MethodName" : "<methodName1>", "<paramName>" : <paramValue> “<paramName>” : <paramValue> } ] } 服务器端返回事件的数据格式 { "Events": [ {"<EventName>" : { "<ParameterName>" : <parameterValue>, ...}}, ...... {"<EventName>" :{ "<ParameterName>" : < parameterValue >, ...} ] }
API: 能够调用的方法 • 联系人与组 • AddImUser • Contact • Group • ContactGroup • Acl • 选项设置 • Option • Note • PhoneOption • TagOption • 即时消息 • AcceptIm • StartIm • StopIm • SendMessage • NotifyTyping • 在线状态 • Presence • QueryPresence • AppState • 搜索用户 • Search
API: 能够接收的事件 • 主要事件 • AclEvent • ContactEvent • IMEvent • OptionsEvent • PresenceEvent • SearchEvent • 辅助事件 • EpidEvent * • ExceptionEvent • PolicyEvent • TimeoutWarningEvent • RequestEvent • QueryTimeoutEvent * • SessionUpdateEvent *
即时消息进程举例 服务器 zhao@contoso.com wang@contoso.com 发送即时消息请求 收到即时消息事件 Request MethodName=StartIm URIs=wang@contoso.com Message=Hi IMEvent Action=add Message=Hi IMState=Connecting Inviters=zhao@contoso.com IMEvent Action=addUser URI=zhao@contoso.com 接受即时消息请求 Request MethodName=AcceptIm 状态更新事件 状态更新事件 IMEvent Action=update IMState=Connected IMEvent Action=update IMState=Connected
同步请求与异步请求 • 同步HTTP请求(synchronous) • HttpWebRequest对象,在C#中 • 必须建立新线程,轮询等待服务器端事件 • 从服务器端取Timeout值,根据服务器负载情况而变 • 异步HTTP请求(asynchronous) • XMLHttpRequest对象,在JavaScript中 • 只需指定事件Handler处理异步响应 • Request.onreadystatechange=handleResponse
总结 • AJAX带给我们更多的开发潜能 • CWAAJAX服务是我们能将LCS功能集成进Web应之中 • 非Windows应用也能使用CWAAJAX服务来集成LCS
微软AJAX项目—Atlas • http://atlas.asp.net • JSON官方站点 • http://www.json.org • LiveCommunicationServer开发者站点 • http://msdn.microsoft.com/office/server/livecomm/default.aspx