Download presentation
Presentation is loading. Please wait.
Published byVernon Bates Modified over 9 years ago
1
1 Future Directions: Building Custom Applications With New Exchange 12 APIs Karim Batthish and John Merrill DAT316 Program Managers Microsoft Corporation
2
2 Agenda Introduction to Exchange 12 E12 in-depth and demos Roadmap for today’s APIs
3
3 IT Pro Situation E-mail is mission critical E-mail systems too complex/expensive Management tasks tedious, not automated Reduce cost & complexity Security Situation Security top concern among customers Regulatory compliance critical in many industries Spam & viruses compromise the e- mail experience Secure, protect and comply Info Worker Situation More inbox value with greater access Mobile devices are increasingly common Calendaring is inefficient Users want easy access to all their communications Exchange “E12” Themes
4
4 Exchange 12 APIs at work
5
5 What You Just Saw Scripting new system management APIs to provision database and users Simple provisioning of new transport event Outlook Look-And-Feel WinForms demo extended to use new Exchange Web services Visual Studio.NET integration
6
6 Exchange 12 New Server Role-based Architecture Enterprise network Mailbox Services OWA Client Access Services RoutingHygiene Router Edge Services Other SMTP Servers RoutingPolicy Bridgehead Services Public Folders Voice Messaging Unified Messaging Services PBX/ VoIP Fax ActiveSync RPC/HTTP Web services POP IMAP
7
7 E12 Architecture Evolution Exchange 200x architecture is loosely structured, tightly-coupled Business logic baked into storage engine for efficient operation Difficult to maintain and optimize with little headroom for big changes Many of the APIs were an afterthought, not used by Exchange Exchange 12 architecture goal is to have better factoring, stricter subsystem interfaces Substantial rewrite in managed code Business logic is running out-of-proc, off-box Business logic shared by all components, with developers
8
8 Exchange APIs - Heritage 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 MS Mail 3.0 Simple MAPI 1.0 Windows 95 Extended MAPI Exchange 4.0 Directory API Electronic Forms Designer Exchange Developer Kit Gateway API OLE Messaging 1.0a (a.k.a. CDO 1.0a) Common Messaging Calls 1.0 Exchange 5.0 Active Messaging 1.1 (a.k.a CDO 1.1) Exchange 5.5 Collaborative Data Objects 1.2 CDO Rendering Library (CDOHTML) Event Service Agents NT Option Pack 4.0 CDO for Windows NT (CDONTS) Exchange 5.5 SP1 CDO 1.2.1 Routing Objects HTML Forms Converter Exchange 5.5 SP3 Virus Scanning API 1.0 Exchange 2000 Backup and Restore API (a.k.a. ESEdbcli2) CDO for Exchange 2000 (CDOEx) CDO for Exchange Management (CDOExM) CDO for Workflow Exchange Installable File System Exchange OLEDB provider (ExOLEDB) WSS Forms + FrontPage Extensions OWA URL commands Queue Viewer API Store Events WebDAV WMI classes for Exchange management Workflow Designer for Exchange 2000 Windows 2000 CDO for Windows 2000 (CDOSYS) SMTP Transport Events Exchange 2000 SP1 Virus Scanning API 2.0 Exchange 2003 Virus Scanning API 2.5
9
9 E12 Developer Roadmap Unify APIs and focus on Exchange’s core competencies Mail transport PIM data storage Exchange management Exchange uses same APIs exposed to developers This is a significant release for application developers Managed code everywhere Older APIs won’t be getting new features Architectural changes also mean API cuts
10
10 Cut vs. De-emphasized Cut APIs and tools will not ship as part of E12 Applications that use these APIs will break when used with an E12 server These APIs will continue to be supported in Exchange 2000 and 2003 De-emphasized APIs will: Be supported through the lifetime of E12 and on Exchange 2000 and 2003 (i.e. a long time) No investments other than critical bug fixes Not be supported in the major release following Exchange 12
11
11 Exchange 12: “Cmdlet” System Management API
12
12 Exchange APIs: Management 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 MS Mail 3.0 Simple MAPI 1.0 Windows 95 Extended MAPI Exchange 4.0 Directory API Electronic Forms Designer Exchange Developer Kit Gateway API OLE Messaging 1.0a (a.k.a. CDO 1.0a) Common Messaging Calls 1.0 Exchange 5.0 Active Messaging 1.1 (a.k.a CDO 1.1) Exchange 5.5 Collaborative Data Objects 1.2 CDO Rendering Library (CDOHTML) Event Service Agents NT Option Pack 4.0 CDO for Windows NT (CDONTS) Exchange 5.5 SP1 CDO 1.2.1 Routing Objects HTML Forms Converter Exchange 5.5 SP3 Virus Scanning API 1.0 Exchange 2000 Backup and Restore API (a.k.a. ESEdbcli2) CDO for Exchange 2000 (CDOEx) CDO for Exchange Management (CDOExM) CDO for Workflow Exchange Installable File System Exchange OLEDB provider (ExOLEDB) WSS Forms + FrontPage Extensions OWA URL commands Queue Viewer API Store Events WebDAV WMI classes for Exchange management Workflow Designer for Exchange 2000 Windows 2000 CDO for Windows 2000 (CDOSYS) SMTP Transport Events Exchange 2000 SP1 Virus Scanning API 2.0 Exchange 2003 Virus Scanning API 2.5
13
13 Exchange APIs: Management 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 Exchange 2000 Backup and Restore API (a.k.a. ESEdbcli2) CDO for Exchange Management (CDOExM) Queue Viewer API WMI classes for Exchange management Cut: ESEdbcli2, CDOExM, Queue Viewer API, WMI classes for Exchange Replaced by: E12 Monad Cmdlets
14
14 New for E12: Management API Exchange 12 introduces unified system management API built upon Monad Deployments are increasingly complex, management tools must continually adapt All Exchange management tasks written as “Cmdlets” Rich shell experience, and all objects accessible in C# Validation, adaptive defaults always available Exchange System Manager uses same Cmdlet interfaces Part of composability principle Microsoft provides core management tools, ISVs add unique value
15
15 E12 Admin Architecture w/MONAD Command shell (MSH) Character-based command-line host for the Monad engine Monad engine Parser – processes language constructs such as scripts, predicates, conditionals, etc. Session State – manages the data set used by a cmdlet for execution Extended Type System – provides a common interface for accessing properties, methods, etc. independent of the underlying object type Namespace Providers – provides a filesystem-like interfaces to object collections Cmdlets – implementations of commands Command Shell Script and Command Parser SessionStateExtended Type System Monad Engine Other Hosts MMC Snap-In File System, Registry, etc AD E12Server Namespace Providers Cmdlets
16
16 Exchange 2003 Management Common Reporting task Set listExchange_Mailboxes = GetObject("winmgmts:{impersonationLevel=impersonate}!\\COMPUTERNAME\ROOT\Microsof tExchangeV2").InstancesOf("Exchange_Mailbox") For Each objExchange_Mailbox in listExchange_Mailboxes WScript.echo "AssocContentCount =” + objExchange_Mailbox.AssocContentCount WScript.echo " DateDiscoveredAbsentInDS =” + objExchange_Mailbox.DateDiscoveredAbsentInDS WScript.echo " DeletedMessageSizeExtd =” + objExchange_Mailbox. DeletedMessageSizeExtended WScript.echo " LastLoggedOnUserAccount =” + objExchange_Mailbox. LastLoggedOnUserAccount WScript.echo " LastLogoffTime =” + objExchange_Mailbox.LastLogoffTime WScript.echo " LastLogonTime =” + objExchange_Mailbox.LastLogonTime WScript.echo " LegacyDN =” + objExchange_Mailbox.LegacyDN WScript.echo " MailboxDisplayName =” + objExchange_Mailbox.MailboxDisplayName WScript.echo " MailboxGUID =” + objExchange_Mailbox.MailboxGUID WScript.echo " ServerName =” + objExchange_Mailbox.ServerName WScript.echo " Size =” + objExchange_Mailbox.Size WScript.echo " StorageGroupName =” + objExchange_Mailbox.StorageGroupName WScript.echo " StorageLimitInfo =” + objExchange_Mailbox.StorageLimitInfo WScript.echo " StoreName =” + objExchange_Mailbox.StoreName WScript.echo " TotalItems =” + objExchange_Mailbox.TotalItems Next Next
17
17 Exchange 12 Management Common reporting task get-mailboxstatistics -server $servername
18
18 Exchange Management Provisioning a new mailbox Dim objMailbox As CDOEXM.IMailboxStore Set objMailbox = GetObject("LDAP://" + DCServer + "CN=FOO,CN=users," + DomainName) objMailbox.CreateMailbox "LDAP://" + DCServer + "/CN=Private MDB,CN=First Storage Group,CN=InformationStore,CN=" + Server + ",CN=Servers,CN=First Administrative Group, CN=Administrative Groups,CN=First Organization, CN=Microsoft Exchange,CN=Services, CN=Configuration," + DomainName new-mailbox –id domain\user –database “First Storage Group\Private MDB” Mix of CDOExM and LDAP: Replaced with:
19
19 E12 Cmdlet Demo
20
20 Exchange 12: Transport API
21
21 Exchange APIs: Transport 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 MS Mail 3.0 Simple MAPI 1.0 Windows 95 Extended MAPI Exchange 4.0 Directory API Electronic Forms Designer Exchange Developer Kit Gateway API OLE Messaging 1.0a (a.k.a. CDO 1.0a) Common Messaging Calls 1.0 Exchange 5.0 Active Messaging 1.1 (a.k.a CDO 1.1) Exchange 5.5 Collaborative Data Objects 1.2 CDO Rendering Library (CDOHTML) Event Service Agents NT Option Pack 4.0 CDO for Windows NT (CDONTS) Exchange 5.5 SP1 CDO 1.2.1 Routing Objects HTML Forms Converter Exchange 5.5 SP3 Virus Scanning API 1.0 Exchange 2000 Backup and Restore API (a.k.a. ESEdbcli2) CDO for Exchange 2000 (CDOEx) CDO for Exchange Management (CDOExM) CDO for Workflow Exchange Installable File System Exchange OLEDB provider (ExOLEDB) WSS Forms + FrontPage Extensions OWA URL commands Queue Viewer API Store Events WebDAV WMI classes for Exchange management Workflow Designer for Exchange 2000 Windows 2000 CDO for Windows 2000 (CDOSYS) SMTP Transport Events Exchange 2000 SP1 Virus Scanning API 2.0 Exchange 2003 Virus Scanning API 2.5
22
22 Exchange APIs: Transport 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 Exchange 4.0 Exchange Developer Kit Gateway API Exchange Developer Kit Gateway API Exchange 5.5 SP1 Routing Objects Routing Objects Windows 2000 CDO for Windows 2000 (CDOSYS) CDO for Windows 2000 (CDOSYS) SMTP Transport Events SMTP Transport Events Cut: EDK Gateway, Routing Objects, SMTP Transport Events Replaced by: E12 Agent API De-emphasized: CDOSYS
23
23 New for E12: Transport APIs Exchange 12 introduces new, managed code SMTP stack designed from the start for extensibility Clear distinction between SMTP protocol events and Mail Routing events SMTP events (E.g. OnHeloCommand, OnEndOfHeaders, OnDisconnect) Mail routing events (E.g. OnSubmittedMessage, OnRoutedMessage) Interop model for leveraging native code
24
24 Transport API: Agent API Agent API Rich access to manipulate and manage mail flow Exchange Anti-Spam and Rules based on Agent API Three ways to interact with messages EmailMessage: Easy-to-use abstraction of both MIME and TNEF MimeDocument: Full ability to manipulate the MIME DOM Readers/Writers: Low-level interaction with MIME, iCalendar, vCard, TNEF Powerful text format converters: RTF, HTML, plaintext
25
25 Your code here Transport Agent/Message API SMTP E12 Mail Flow Model Recipient API E12 Mailbox Submission Queue DeliveryQueue Anti spa m Secure Mail Systems Management (Tasks) SMTPReceive Categorizer E12Submit (mailbox -> SMTP) SMTP PickupDirectory AD SMTPSend Exchange Biz Logic E12 Delivery (mailbox -> SMTP) Exchange Biz Logic Policies Rules Secure Mail Anti- virus
26
26 E12 Transport Events
27
27 Exchange 12: Web Services for Store Access
28
28 Store Access APIs - Problems Too many APIs to get data in and out of the Exchange Store, none meet all major requirements Different levels of Outlook interoperability in each one Many APIs inaccessible from clients on the Internet or running on non-Microsoft platforms Few are easily called from or supported running under managed code Very little developer support in Visual Studio
29
29 Store Access APIs Why they don’t work DeveloperMicrosoft Outlook interop responsibility Intranet Internet Remote access from MAPI CDO 1.2.1 WebDAV API must be here
30
30 Exchange APIs: Store Access 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 MS Mail 3.0 Simple MAPI 1.0 Windows 95 Extended MAPI Exchange 4.0 Directory API Electronic Forms Designer Exchange Developer Kit Gateway API OLE Messaging 1.0a (a.k.a. CDO 1.0a) Common Messaging Calls 1.0 Exchange 5.0 Active Messaging 1.1 (a.k.a CDO 1.1) Exchange 5.5 Collaborative Data Objects 1.2 CDO Rendering Library (CDOHTML) Event Service Agents NT Option Pack 4.0 CDO for Windows NT (CDONTS) Exchange 5.5 SP1 CDO 1.2.1 Routing Objects HTML Forms Converter Exchange 5.5 SP3 Virus Scanning API 1.0 Exchange 2000 Backup and Restore API (a.k.a. ESEdbcli2) CDO for Exchange 2000 (CDOEx) CDO for Exchange Management (CDOExM) CDO for Workflow Exchange Installable File System Exchange OLEDB provider (ExOLEDB) WSS Forms + FrontPage Extensions OWA URL commands Queue Viewer API Store Events WebDAV WMI classes for Exchange management Workflow Designer for Exchange 2000 Windows 2000 CDO for Windows 2000 (CDOSYS) SMTP Transport Events Exchange 2000 SP1 Virus Scanning API 2.0 Exchange 2003 Virus Scanning API 2.5
31
31 1992 1995 1996 1997 2000 2001 2003 2006 1998 2007 1990 Windows 95 Extended MAPI Exchange 5.5 Event Service Agents Exchange 5.5 SP1 CDO 1.2.1 Exchange 2000 CDO for Exchange 2000 (CDOEx) CDO for Workflow Exchange Installable File System Exchange OLEDB provider (ExOLEDB) WSS Forms + FrontPage Extensions OWA URL commands Store Events WebDAV Workflow Designer for Exchange 2000 Exchange APIs: Store Access Cut: CDO for Workflow, Workflow Designer, 5.5 Event Service, ExIFS, WSS Forms Replaced by: Windows Workflow Foundation, ASP.Net De-emphasized: CDO 1.2.1, CDOEx, ExOLEDB, OWA URL commands, Store Events, WebDAV Replaced by: Web Services for Exchange
32
32 New For E12: Web Services Unifying Store access with Web services Outlook interop provided via Exchange Business Logic layer Shared with Transport, OWA, ActiveSync, etc. No client-side runtime necessary Replaces WebDAV, CDO and OWA URL commands Strongly typed objects for messages, calendar items, contacts, tasks and more Great Visual Studio.NET integration
33
33 Getting started with Exchange Web Services
34
34 Exchange Web Services Response Objects Dealing with messages and calendar items requires a lot of special cases and error checking Reply should update RFC822 In-Reply-To and References headers on new message, set flags on original message Organizer can’t accept own meeting request Response objects Indicate available methods other than modify or delete, e.g. reply, accept, voting buttons Point to method schema supported for each item Allow responses to messages and calendar items in a single, efficient roundtrip
35
35 Exchange Web Services Response Objects – Recipient 2004-12-17T16:30:00 …
36
36 Exchange Web Services Response Objects – Organizer Calendar item talk Conference room 34 2004-12-17T16:30:00 2004-12-17T17:00:00 …
37
37 Exchange Web Services: Pulling it all together
38
38 Exchange Web Services Server Authentication Two-hop problem Making a request on behalf of a user requires Exchange admin account or some type of Windows authentication delegation E12 server-to-server auth allows 3rd party applications to be part of trusted subsystem without full access to Exchange resources and Active Directory Scenarios Users authenticate to portal server, which needs data stored in Exchange Server-initiated request without user connection
39
39 Exchange Web Services Server-to-server authentication Exchange Mailbox Server E12 Web Services Client application Application Server Active Directory
40
40 Debugging Web Services clients Troubleshooting Exchange apps requires a lot of perseverance and guesswork HTTP/1.1 500 Internal Server Error HTTP/1.1 400 Bad Command 0x80004005: MAPI_E_FAIL 0x80040117: MAPI_E_TOO_COMPLEX E12 Web Services introduces: Live, up-to-date error descriptions and troubleshooting Syntax pointers in failures Really friendly error codes
41
41 Debugging Web Services clients Success Success Attempt to delete an Outlook special folder http://go.microsoft.com/fwlink/ ?LinkId=1049 Attempt to delete an Outlook special folder http://go.microsoft.com/fwlink/ ?LinkId=1049 </DeleteFolderResponse> http://go.microsoft.com/fwlink/ ?LinkId=1049 http://go.microsoft.com/fwlink/ ?LinkId=1049 XPath to offending part of request Link to MSDN documentation
42
42 Exchange Web Services Futures Beta 2 targeted to include support for: Contacts and Tasks Notifications and events Synchronization Server-side rules support Junk e-mail support Delegate Access and ACL management
43
43 Exchange 12 Takeaways and call to action Today’s APIs will work for a long time Focus on building apps with APIs that will be there in the next release, start migrating away from cut APIs Exchange 12 will unify a fragmented set of APIs Public beta first half next year Familiarize yourselves now Monad and Windows Scripting Host XML Web Services Windows Workflow Foundation
44
44 Community Resources At PDC For more information, go see Ask-The-Experts Exchange Booth DAT Track lounge: We’ll be there Thu 2-5pm After PDC If you missed this or related sessions, watch them on the DVD MSDN dev center: http://msdn.microsoft.com/exchange/ http://msdn.microsoft.com/exchange/ Newsgroups news:microsoft.public.exchange.development news:microsoft.public.exchange.development Exchange Blog – You had me at EHLO http://blogs.msdn.com/exchange/ http://blogs.msdn.com/exchange/
45
45 Related Talks DAT319 – Future Directions: Beyond BizTalk Server 2006 Today at 3:30 p.m., Room 502 AB OFF415 – Windows SharePoint Services: Developing Custom Workflows On now – grab their slides
46
46 Q&A Karim Batthish – karimb@microsoft.com John Merrill – jmerrill@microsoft.com
47
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.