Exchange+2007+新特性与二次开发

发布于:2021-07-26 23:24:53

Exchange 中文站:http://www.exchangecn.com

Exchange Server2007 已经面市将*一年了, 相信大家一定对它的强大功能已经有所体 验了,其中值得我们关注的就是 Exchange Server 2007 将 web service 的应用开发引入到 C AS(Client Access Server)中,给开发人员带来了福音。现在就让我们一起来学*一下 Ex change Server 2007 Web Service 的新特性和它的二次开发的相关技术吧。 一、 Exchange Server 2007 Web Service 新特性

用 Web Service 将存储访问进行了整合:早期对 Exchange Server 进行开发,需要了解 和掌握许多技术和协议,比如 CDO,WebDav 以及 OWA URL 命令,现在 Web Service 将 这些复杂的技术协议进行了整合和替换。

对于消息,日程安排,联系人等提供了强类型对象:Exchange Web Service(EWS)中调 用的对象和数据类型都是通过 WSDL(Web Service Define Language)来定义和描述的, 每种 数据类型都是强类型的对象,这对于开发来说是非常好的特性。

与微软的 visual studio 及.net framework 进行了有效地整合: 开发人员能够利用 C# 或 VB. NET 等开发语言建立自定义的应用系统。企业可以使用这些应用系统来执行消息通信环境 中的一般管理任务。

提供了一些新的 API 函数来获得 Exchange server2007 CAS 的数据:开发人员可以从任何 客户端、语言或*台调用这些 API,将 Exchange Server 2007 邮箱或日历中的信息插入商 业或其他自定义应用系统。

提供远程的访问: 例如早期我们开发了 Exchange Server 的某个应用, 那么我们就需要将其 部署到 Exchange Server 上,但一般来说开发人员和系统管理员分属不同的部门和人员,所 以这种部署必须得到系统管理员的允许, 也许还需要开放一些额外的防火墙端口。 现在如果 是用 Web Service 开发的应用,我们就可以将其放在任何一台计算机上而无需专门部署到 S erver 上。 通过 Exchange Business Logic Layer 可以灵活地与 Outlook 进行交互。

Exchange 中文站:http://www.exchangecn.com

二、 为什么要使用 Web Service 我们都知道利用 Web Service 进行开发具有非常好的扩展性,Web Service 允许在不同 *台上、以不同语言编写的各种程序以基于标准的方式相互通信。微软在 Exchange Server 2007 中引入 Web Service 也是大势所趋。Exchange Server2003 以前的很多应用是很难跨过 内网的限制,比如说用于存储访问的 API 主要目的是获取和管理邮件,日程安排及用户属 性等信息,对于开发人员来说如果要操作这些信息,只能利用 MAPI 或 CDO1.2.1 来开发应 用程序。而对于开发外网的应用也只可以利用 WebDAV,熟悉 WebDAV 的人都知道它也是 OWA2000 和 OWA2003 广泛使用的协议,但 WebDAV 从开发难度大,整个开发成本相对 比较大,由此可见在 Exchange Server2003 或更早期,如果要对 Exchange Server 进行二次 开发是非常难的事, 开发人员需要区分应用程序是应用到内部网络还是外部网从而选择相应 的开发方式,这就要求开发人员必须熟悉很多协议和 API 接口。现在应用 Exchange Web S ervice 进行开发不但降低开发应用程序的难度同时也打破了网络限制,我们可以将 Exchang e Web Service 理解为就是一个 Exchange Server 二次开发的接口,这个接口可以让我们的 程序运行在 80 或 443 接口之上,利用这个接口开发的应用程序无需再考虑是在内部网络部 署还是在 Internet 上部署,这样就可以更灵活地管理 Exchange Server 组织结构并调用邮箱 或用户等信息。

三、 如何利用 Exchange Server 2007 Web Service 进行二次开发

Exchange Web Service API 工作流程 Exchange Server 2007 web service 也是基于标准的 Web Service 实现原理的:H

TTP/XML/SOAP/WSDL 基于这种标准的实现,我们就能很容易地理解 Exchange We b service API 工作流程:它是一种基于客户端访问/服务器端响应的方式,通 过这种响应来完成数据传输,功能执行,消息提醒等功能。基本过程如图所示:

Exchange 中文站:http://www.exchangecn.com

当客户端要发送一个请求或执行一个操作时,首先需要将所要执行的操作构建成 XML 元素,接下来就需要对 XML 的传输创建一个 SOAP 消息,创建完 SOAP 消息以后,就需要 对 XML 消息进行序列化,以便于通过 HTTP 协议进行传输,然后作为一个请求进行发送, 客户端发送请求以后就会被服务器接受, 服务器接受以后就会执行相应的操作, 解除序列化, 提取出 XML 的信息,按照客户端的要求执行操作。最后会将执行的结果作为响应发送回客 户端,客户端会执行与服务端相同的操作,解除序列化,提取 XML 消息。 两个需要熟悉的概念:Operations(操作),Proxy Objects 代理对象 在 Exchange Web Service 进行开发前,我们需要理解 Operations(操作),Proxy Ob jects (代理对象)这两个基本概念: Operation(操作):Exchange 2007 提供了 29 个操作(Operations),操作是指 Exchang e Server 允许客户端所能执行的动作, 它们对应于 29 个由客户端访问服务器所提供的. net web 方法。

Exchange 中文站:http://www.exchangecn.com

例如:CreateItem 操作,利用这个操作我们可以创建日程安排、邮件信息、会议请求 以及联系人。

Proxy Object(代理对象): 一般来说客户端在发出调用请求时并不是直接构造 XML 这样 的数据结构,我们更喜欢采用对象模型的方式来对 Exchange Server 进行操作,Proxy 在这 里就是一个对象模型,它提供了 Web Service 的访问接口,通过这个访问接口,我们就可以 对这些对象进行操作,比如设置属性,方法,然后 Proxy(对象代理)又会将我们对这些对 象的操作转化成 XML 的元素。 ? 开发前的环境部署

正如我们前面所提到的,Exchange Web Service 是应用在 CAS 上的,因此我们需要一 台装有 Exchange server2007 Client Access(客户端访问)角色的服务器,来引用 EWS。在 这台服务器上我们可以从 IIS 的默认网站下面找到虚拟目录 EWS。在这个虚拟目录下面主 要有以下几个文件:

Services.wsdl:描述客户端和服务器之间的约定。

Messages.xsd:定义请求和响应的 SOAP。 Types.xsd:定义了在 Soap 消息中使用的元素。 Exchange.asmx:定义了 EWS 的 Web 引用。

编写一个 Web Service 的应用一般分为四个步骤: (1) 创建代理对象引用参考。

Exchange 中文站:http://www.exchangecn.com

在 Visual Stadio 2005 中,当我们建立完一个新的工程后,就可以为这个工程添加一个 Web 引用,我们在这里引用的就是一台装有 Client Access 角色的服务器上的 EWS 虚拟目 录下的 Services.wsdl 文件。大家可以参考以下的截图:

(2)设置 ExchangeServiceBinding 代理类。

Exchange 中文站:http://www.exchangecn.com

完成 Web 引用后,我们就可以用以下的语句来完成 Service 的绑定。

ExchangeServiceBinding esb = new ExchangeServiceBinding(); esb.Credentials = new NetworkCredential("administrator", "J$p1ter", " DFQVPIdom"); esb.Url = "https://bjextest043/EWS/exchange.asmx"; (3)创建并调用操作。

CreateItemType createEmailRequest = new CreateItemType(); . . . MessageType message = new MessageType(); message.Subject = "Mail Test"; . . . createEmailRequest.Items.Items = new ItemType[1]; createEmailRequest.Items.Items[0] = message;
(4) 发送请求并处理响应。

CreateItemResponseType createItemResponse = esb.CreateItem(createEmai lRequest);
接下来我们就以为用户创建邮件信息应用为例,向大家全面地展示一下如何利用 Exchange Web Service 进行二次开发。

private void SendMail(ExchangeServiceBinding esb) { //创建 CreateItem 的请求

Exchange 中文站:http://www.exchangecn.com

CreateItemType createEmailRequest = new CreateItemType(); //确定 Mail 的处理方式 createEmailRequest.MessageDisposition = MessageDispositionType.SendAn dSaveCopy; createEmailRequest.MessageDispositionSpecified = true; //确定发送信息存放的位置 createEmailRequest.SavedItemFolderId = new TargetFolderIdType(); DistinguishedFolderIdType sentitmes = new DistinguishedFolderIdType(); sentitmes.Id = DistinguishedFolderIdNameType.sentitems; createEmailRequest.SavedItemFolderId.Item = sentitmes; //创建存放数组 createEmailRequest.Items = new NonEmptyArrayOfAllItemsType(); //创建 e-mail 信息 MessageType message = new MessageType(); message.Subject = "Mail Test"; message.Body = new BodyType(); message.Body.BodyType1 = BodyTypeType.Text; message.Body.Value = "TOoo Busy!!!!."; message.Sender = new SingleRecipientType(); message.Sender.Item = new EmailAddressType(); message.Sender.Item.EmailAddress = "Administrator@DFQVPI-dom.extest.m icrosoft.com"; message.ToRecipients = new EmailAddressType[1]; message.ToRecipients[0] = new EmailAddressType(); message.ToRecipients[0].EmailAddress = Rece
iver; message.Sensitivity = SensitivityChoicesType.Normal; createEmailRequest.Items.Items = new ItemType[1]; createEmailRequest.Items.Items[0] = message;

Exchange 中文站:http://www.exchangecn.com

try { // 创建绑定 ExchangeServiceBinding esb = new ExchangeServiceBinding(); esb.Credentials = new NetworkCredential("administrator", "J$p1ter", " DFQVPI-dom"); esb.Url = "https://bjextest043/EWS/exchange.asmx"; //发送 CreateItem 的请求 CreateItemResponseType createItemResponse = esb.CreateItem(createEmailRequest); ArrayOfResponseMessagesType responseMessages = createItemResponse.ResponseMessages; } catch (Exception ex) { throw new Exception("Warning: " + ex.Message); } } Exchange Web Service 是一个新的开发技术,在未来的日子它会得到更效地发展和完 善,如果大家有兴趣的话可以尽早投入到这项新技术中,经过自己的实践与思考,定会成为 这项新技术的专家。


相关推荐

最新更新

猜你喜欢