20

Jason Henderson Senior Program Manager Microsoft Corporation

Embed Size (px)

Citation preview

Page 1: Jason Henderson Senior Program Manager Microsoft Corporation
Page 2: Jason Henderson Senior Program Manager Microsoft Corporation

Exchange Web Services Managed APIUnified Communications Development For Exchange

Jason HendersonSenior Program ManagerMicrosoft Corporation

Page 3: Jason Henderson Senior Program Manager Microsoft Corporation

Agenda

Software plus services Microsoft Exchange 2007 Architecture Microsoft Exchange 2007 APIs “Cloud Ready”

Exchange Web Services Overview Drilldown Exchange Web Services Managed API

Page 4: Jason Henderson Senior Program Manager Microsoft Corporation

Moving Exchange Into The Cloud

Traditional Software Development•Exchange on Premises•Applications on Premises

Hybrid S+S Software Development•Exchange in the cloud (Exchange Online)•Applications on Premises

Pure S+S Development•Exchange in the Cloud (Exchange Online)•Applications in the Cloud (Strata)

Com

plex

ity Control

Page 5: Jason Henderson Senior Program Manager Microsoft Corporation

Exchange N-Tier Architecture

Exchange 2000/2003Mailbox Server

Exchange 2007Mailbox Server

Exchange 2007Client Access Server

CDOExExoleDBCDO 1.2.1

Windows Client

Exchange Web Services

X-Platform Client

Exchange 2000/2003

Exchange 2007

WebDAV

WS-* RPC

RPC HTTP

Page 6: Jason Henderson Senior Program Manager Microsoft Corporation

Simplifying The API Matrix

Developer Microsoft

Outlook interop responsibility

Intr

anet

Inte

rnet

Rem

ote

acce

ss fr

om

MAPI CDO 1.2.1

Loca

l A

cces

s

OleDB CDO for Exchange

WebDAV Exchange Web Services

Page 7: Jason Henderson Senior Program Manager Microsoft Corporation

Exchange Web ServicesOverview

Open Standards-based protocol XML/SOAP/WSDL-based Web Service

Implements Exchange/Outlook business logic Strongly typed access

Message/tasks/contacts/calendar/folders Workflow

Free/busy Suggested meeting times Accepting/sending/updating meeting requests Delegation and permissions Replying to messages Notifications Synchronization

Page 8: Jason Henderson Senior Program Manager Microsoft Corporation

EWS Overview

Exchange 2007

Create, get, update, delete items, folders and attachments

Utilities• ResolveNames• ExpandDL

AvailabilityOOF settings

Delegate managementFolder permissions

Public foldersPost items

OWA/Availability Id conversion

Exchange 2007 Service Pack 1

Business logic layer (shared with Outlook Web Access)

Exchange mailboxesPublic folders

Auto-generated proxies, raw XML

HTTP/SOAP HTTP/SOAP

EWS Managed APIor

Page 9: Jason Henderson Senior Program Manager Microsoft Corporation

GetFolderType request = new GetFolderType();request.FolderShape = new FolderResponseShapeType();request.FolderShape.BaseShape = DefaultShapeNamesType.AllProperties;

DistinguishedFolderIdType inboxId = new DistinguishedFolderIdType();inboxId.Id = DistinguishedFolderIdNameType.inbox;request.FolderIds = new BaseFolderIdType[] { inboxId };

GetFolderResponseType response = serviceBinding.GetFolder(request);FolderInfoResponseMessageType responseMessage =

response.ResponseMessages.Items[0] as FolderInfoResponseMessageType;

if (responseMessage.ResponseClass == ResponseClassType.Success){ FolderType inbox = responseMessage.Folders[0] as FolderType;}

Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox);

Did You Say Easy?

Raw XML• Cross-platform• No client-side logic• Manual plumbing

Auto-generated proxies• Multiple platforms• Class-based access• No client-side logic

EWS Managed API• Windows only (.NET 3.5)• Fully Object Oriented• Smart client-side logic

<s:Envelope> <s:Body> <m:GetFolderResponse> <m:ResponseMessages> <m:GetFolderResponseMessage

ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:Folders> <t:Folder> <t:FolderId Id="..." ChangeKey="..." /> <t:FolderClass>IPF.Note</t:FolderClass> <t:DisplayName>Inbox</t:DisplayName> ... </t:Folder> </m:Folders> </m:GetFolderResponseMessage> </m:ResponseMessages> </m:GetFolderResponse> </s:Body></s:Envelope>

<soap:Envelope> <soap:Body> <m:GetFolder> <m:FolderShape> <t:BaseShape>AllProperties</t:BaseShape> </m:FolderShape> <m:FolderIds> <t:DistinguishedFolderId Id="inbox" /> </m:FolderIds> </m:GetFolder> </soap:Body></soap:Envelope>

Increased Productivity

Page 10: Jason Henderson Senior Program Manager Microsoft Corporation

Exchange Web Services Managed APIDesign Goals Exchange development is easy!

Object oriented design Smart client features

AutoDiscover built in Expose full power of web services

Batch processing Delegate Access Custom Properties

Cloud/On-Premises same code

Page 11: Jason Henderson Senior Program Manager Microsoft Corporation

Let’s Start Coding!

Initialize the service Authentication

Windows integrated Basic

Use AutoDiscover Locate service endpoint Bootstrap on smtpaddress

Page 12: Jason Henderson Senior Program Manager Microsoft Corporation

Calendaring

Rich Calendaring Support Retrieve/Create appointments

Recurring meetings Recurrence expansion

Meeting Requests Accept/tentative/decline/update/cancel Automatically send responses/updates

Free/Busy views Meeting suggestions

Page 13: Jason Henderson Senior Program Manager Microsoft Corporation

Item Class HierarchyItem

Appointment

EmailMessage

MeetingMessage

MeetingRequest

MeetingRespons

e

MeetingCancella

tion

Contact Task PostItem

Page 14: Jason Henderson Senior Program Manager Microsoft Corporation

Folder Class Hierarchy

Folder

CalendarFolder

ContactFolder TaskFolder SearchFold

er

Page 15: Jason Henderson Senior Program Manager Microsoft Corporation

Recap

Always use AutoDiscover to boostrap based on mailbox address

Use Tracing to understand underlying SOAP protocol

Use FindAppointments/FindItems to efficiently query and retrieve Items

Use Load*/Bind to retrieve streamed and calculated properties

Page 16: Jason Henderson Senior Program Manager Microsoft Corporation

Call To Action

Learn about Exchange Online http://microsoft.com/online

Learn more about Exchange Web Services MSDN

http://msdn.microsoft.com/en-us/library/bb204119(EXCHG.80).aspx

“Inside Microsoft Exchange 2007 Web Services” Hands On Lab http://blogs.msdn.com/exchangedev/ Watch for the Managed API Beta Release

Fill out session evaluations

Page 17: Jason Henderson Senior Program Manager Microsoft Corporation

Final Slide For PDC Presentations

Are you interested in receiving the VPCs for Microsoft Exchange 2007 and Microsoft Office Communications Server 2007 R2 after RTM in early 2009? If yes, please email [email protected] with your contact information and subject line: UC VPC Download Request

Page 18: Jason Henderson Senior Program Manager Microsoft Corporation

PDC UC Sessions

Session TitleSpeaker Name/s Date Timeslot Location

BB09 - Office Communication Server and Exchange: Platform Futures

Chris Mayo; David

Ollason 10/27/20081:45 PM to

3:00 PM Room 408A

BB45 - Office Communications Server

2007 R2: Enabling Unified Communications

Oscar Newkerk;

David Ollason 10/27/2008

5:15 PM to 6:30 PM Room 406A

BB46 - Exchange Web Services Managed API:

Unified Communications Development for Microsoft

ExchangeJason

Henderson 10/30/20088:30 AM to

9:45 AM Room 408B

Page 19: Jason Henderson Senior Program Manager Microsoft Corporation

Appendix

Page 20: Jason Henderson Senior Program Manager Microsoft Corporation

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market

conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.