Exchange Deployment Planning Services Exchange 2010 Developer Platform.
-
Upload
hilda-powell -
Category
Documents
-
view
235 -
download
4
Transcript of Exchange Deployment Planning Services Exchange 2010 Developer Platform.
Exchange Deployment Planning Services
Exchange 2010 Developer Platform
Agenda
• Exchange as a platform• Exchange Web Services• Exchange PowerShell• Exchange Transport APIs• API changes in Exchange 2010• Resources
Exchange API Evolution
1992 1995 1996 1997 2000 2001 2003 20061998
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 Server• Backup and Restore API (a.k.a.
ESEdbcli2)• CDO for Exchange 2000 Server
(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 Server
Windows 2000• CDO for Windows 2000
(CDOSYS)• SMTP Transport Events
Exchange 2000 Server SP1
• Virus Scanning API 2.0
Exchange Server 2003• Virus Scanning API
2.5
2009
Exchange 2007• Exchange Web
Services• PowerShell• Transport APIs
Exchange 2010• Exchange Web
ServicesManaged API 1.0
• Remote PowerShell
The Exchange 2010 PlatformContent, Management, Control
API for interacting with Mailbox Content• Email, Calendaring, Tasks, Contacts• Mailbox Autodiscovery• Authentication and Login• Delegation and Impersonation• Change Notifications• User and Application Settings Configuration
Exchange Web Services APIs
API for Exchange Management• Mailbox creation• Server Configuration• Resource Management
PowerShell APIs
API for controlling the flow of content • Access to message properties and content in transport
Transport APIs
5
Exchange Web Services
Rich Experience− Enables full client functionality− Application logic consistent
with Outlook
Easy to Use− .NET-based EWS Managed API 1.0− Full Visual Studio support
Online-Ready− Single API for Server and Online
The power of Web Services and .NET
NEW
For more information:http://msdn.microsoft.com/Exchange
EWS Functionality EnhancementsExposing the full power of Exchange through the APIs
Exchange Server 2007
• Full access to items, folders and attachments:
• Create• Get• Update• Delete
• Availability• OOF settings• Notifications• Synchronization• Name Resolution• Distribution Lists Expansion• Search
• Delegate management• Folder permissions• Public folders• Post items• ID conversion
Exchange 2010 Exchange Web Services API
• MailTips information• Full Private Distribution List support
• Get Service Configuration• User Configuration Objects• FAIs• Unified Messaging (exposed through the EWS endpoint)
• SOAP-based AutoDiscover• Message tracking• Windows Live ID integration• Contact and Calendar folder sharing
• Enhanced Time Zone support• Room resource availability information
• Indexed Search• Dumpster Access
Exchange Web Services Managed API 1.0
Exchange Server 2007 SP1
Exchange 2010NEW
NEW
EWS Functionality EnhancementsExposing the full power of Exchange through the APIs
Exchange Server 2007
• Full access to items, folders and attachments:
• Create• Get• Update• Delete
• Availability• OOF settings• Notifications• Synchronization• Name Resolution• Distribution Lists Expansion• Search
• Delegate management
• Folder permissions• Public folders• Post items• ID conversion
Exchange 2010 Exchange Web Services API
• MailTips information• Full Private Distribution List
support• Get Service Configuration• User Configuration Objects• FAIs• Unified Messaging
(exposed through the EWS endpoint)
• SOAP-based AutoDiscover• Message tracking• Windows Live ID integration• Contact and Calendar Folder
sharing• Enhanced Time Zone support• Room resource Availability
information• Indexed Search• Programmatic access to
Dumpster
Exchange Web Services Managed API 1.1
Exchange Server 2007 SP1
Exchange 2010 SP1
Exchange 2010
• Create, retrieve, and modify Inbox Rules• Programmatic access to Archive Mailbox• Firewall traversing Notifications• Improved Administration features• Improved Mixed Version support • Throttling Protection Support• Control Application access to EWS • Client Certificate Authentication support
NEW
NEW
EWS 2010 Application Functionality
Tasks• Create/Delete/Update Tasks• Search for Tasks
Contacts• Create/Update/Delete Contacts• Set picture• Set all properties like e-mail addresses, phone numbers, location• Create Contact Groups
E-mail• Send/Retrieve/Forward/Reply Mail• Retrieve MIME Content• Search/Delete/Move/Copy Mail• Folder Move/Copy/Create/Permissions• Setting Auto-Response Message
Calendar• Create/Modify/Retrieve Appointments• Retrieve Availability Information• Suggest Best Appointment Time• Time Zone Service• Retrieve Available Rooms
Client ApplicationsLike:• Email Clients
• Outlook• Entourage
• Free/Busy • Microsoft Office
Communicator
Service ApplicationsLike:• Synchronization
• CRM Contact Synchronization
• Notifications• Auto-Scheduler
Applications• Mailer Applications
Sample Application Models Using EWS
Portal ApplicationsLike:• Web Parts
• Shared Calendar Views
• 5 Most Recent E-mails
• PIM Systems• Course Management• Room Availability
Client ApplicationsEntourage 2008
Entourage 2008 - www.microsoft.com/mac/products/entourage2008/
Portal ApplicationsConference Room Booking Application
Service ApplicationsConference Room Appointment Display
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;}
<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>
Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
Easy: EWS Managed API Simplifies CodingCoding in the various EWS APIs paradigms available
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
Increased Productivity
“After working with Exchange for about 10 years I can say that this is by far the most intuitive and easy to use API ever and developers who never worked with Exchange before have little trouble using it. “ – Denis Khodak - Morgan Stanley
Sending An Email
ExchangeService service = new ExchangeService(); service.AutodiscoverUrl(“[email protected]");
EmailMessage message = new EmailMessage(service);message.Subject = "Email Subject";message.Body = "The is the email body";message.ToRecipients.Add("[email protected]");message.ToRecipients.Add("[email protected]"); message.SendAndSaveCopy(WellKnownFolderName.SentItems);
Code sample with the Exchange Web Services Managed API 1.0
Moving Exchange into the CloudRoadmap for Exchange Cloud Development
Hybrid S+S Software• Exchange in the cloud (Exchange Online)• Applications on Premise
Pure Cloud Development• Exchange in the Cloud (Exchange Online)• Applications in the Cloud (Azure)
Traditional Development• Exchange on Premise• Applications on Premise
Exchange
2007 SP1
Exchange
2010
Exchange
2010+
PowerShell in Exchange
• Exchange server configuration• User administration
− User/resource management− Mailbox creation/modification
• Distribution list creation/modification• Public folder creation/modification
For Exchange administrative tasks
PowerShell with .NET
• Improved Runspace APIs− New PowerShell class simplifies invocation
of cmdlets
• Unleashes Exchange management from within compiled code− PowerShell.Create(“get-process”).Invoke();
NEW
Invoking Exchange cmdlets from C#Code Sample
• SCredential credential = new PSCredential(username, password); • // Set the connection Info • WSManConnectionInfo connectionInfo = new WSManConnectionInfo( • new Uri(liveIdconnectionUri), http://schemas.microsoft.com/powershell/Microsoft.Exchange, credential);• connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;• • // create a runspace on a remote path; the returned instance must be of type RemoteRunspace• Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(connectionInfo);
• // open the runspace• runspace.Open();• • // Set the runspace as a local variable on the runspace• PowerShell powershell = PowerShell.Create();• • // create the command• command = new PSCommand();• command.AddCommand("Get-Mailbox");• command.AddParameter("Identity", mailboxname);• powershell.Command = command; • try• {• // open the remote runspace• runspace.Open();• // associate the runspace with powershell• powershell.Runspace = runspace;• // invoke the powershell to obtain the results• return powershell.Invoke();• }• finally• {• // dispose the runspace and enable garbage collection• runspace.Dispose(); • runspace = null;• // finally dispose the powershell and set all variables to null to free up any resources. • powershell.Dispose(); • powershell = null;• }
PowerShell Remoting
• Allows cmdlets to be run from remote machines without Exchange administration tools installed− Only requires PowerShell v2 installed locally
• Access to Exchange administration from the internet when published though the firewall
• Solves cross-forest management issues• Utilizes RBAC model
NEW
What are Transport Agents and APIs?• Allow access to e-mail messages and
their contents while the messages transverse the transport servers− Change message properties and content
during transport
• Transport agents are installed on Edge and Hub transport server roles
• Agents handle transport events and extend behavior
Transport API Events
• Manipulate messages at many different levels of transport− SmtpReceiveAgent− RoutingAgent− DeliveryAgent− StoreDriverAgent
• Use transport agents to implement functionality that is not covered/available with transport rules
• Replacement for much of store event sink functionality
NEW
NEW
Editing Email Subject
namespace MyAgents{ public sealed class MyAgentFactory : SmtpReceiveAgentFactory { public override SmtpReceiveAgent CreateAgent(SmtpServer server) { return new MyAgent(); } } public class MyAgent : SmtpReceiveAgent { public MyAgent() { this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler); } private void MyEndOfDataHandler(ReceiveMessageEventSource source, EndOfDataEventArgs e) { // The following line appends text to the subject of the message that caused the event. e.MailItem.Message.Subject += " - this text appended by MyAgent"; } }}
Code Sample with SmtpReceiveAgent
Exchange Server 2010 API ChangesAPI Deprecation Roadmap
Exchange Server 2007 Exchange 2010 Exchange Server 2007 Exchange 2010
Transport Server
AgentsTransport
APIs
Client
Exchange MAPI Client
OutlookMAPI
OutlookObj. Model
NET.Mail
Mailbox Server
MAPI WebDav
ExOLE DB
CDOEx (3.0)
Store Events
Virus Scan API
VSS
Client Access Server
Exchange Web
Services Transport Server
AgentsTransport
APIs
Client
CDO 1.2.1Outlook
MAPIOutlook
Obj. ModelNET.Mail
Mailbox ServerVirus
Scan APIVSS
Client Access Server
Exchange Web
ServicesMAPI
EWSManaged
API
Deprecated
Deemphasized
Roadmap
Non-Exchange
API
EWSManaged
API
CDO 1.2.1Exchange
MAPI Client
Legacy API Overview Fragmented experience
Local Access Intranet Access
Internet Access
Outlook User Experience
CDO 3.0 for Exchange
CDO 1.2.1
Build-your-own User Experience
ExOleDB MAPI Exchange WebDAV
EWS: Comparing against Legacy APIsEWS is the one API to support all application models
ExOleDB CDO 3.0 for Exchange
CDO 1.2.1 Exchange MAPI Client
Exchange WebDAV
Exchange Web
Services
EWS Managed
API 1.0
Supports User Experience Consistent with Outlook
√ √ √ √
Supports to Build your own Client User Experience
√ √ √ √ √
Supports Local Access √ √ √
Supports Intranet Access √ √ √ √
Supports Internet Access √ √ √
Supports New Exchange Server 2007 and Exchange 2010 functionality
√ √
Mainstream Support Available
√ √
Works on Exchange Server 2003
√ √ √ √ √
Works on Exchange 2007 SP1
√ √ √ √ √ √ √
Works on Exchange 2010 √ √ √ √
Exchange 2010 API Changes
• Exchange Server 2003 client APIs are in to extended support− Collaboration Data Objects 1.2.1− Microsoft Exchange Server MAPI Client
Both can be replaced by Exchange Web Services
Deprecated APIs and alternatives
API Functionality Replacement
CDOEX Mailbox Access EWS
Exchange WebDAV Remote Mailbox Access
EWS
ExOleDB (ADO provider)
Mailbox Access EWS
OWA URL Commands Free/Busy and Name Resolution
EWS
Store Events Asynchronous and Synchronous Events
Transport Delivery Events/ EWS
Extended Support PolicyExchange MAPI client and CDO 1.2.1 are in Extended Support• Exchange MAPI client+CDO remain available for download for Exchange 2010• Using the Exchange MAPI Client and CDO package against Exchange 2010 is
supported• Download Center is updated to reflect end-of-life status
During the Extended Support phase for Exchange Server, Microsoft provides:
• Paid support only• Non-security related hotfix support requires a separate Extended Hotfix
Support Agreement to be purchased (per-fix fees also apply)− A hotfix can not be redistributed
• Critical and Important Security update support at no additional cost
Please note: Microsoft will not accept requests for warranty support,
DCRs, or new features during the Extended Support phase− This could include Daylight Saving Time updates
Exchange MAPI Client and CDO 1.2.1 in Exchange 2010
End of Exchange 2010 Developer Platform Module
For More Information
• Exchange Server Tech Centerhttp://technet.microsoft.com/en-us/exchange/default.aspx
• Planning serviceshttp://technet.microsoft.com/en-us/library/cc261834.aspx
• Microsoft IT Showcase Webcasts http://www.microsoft.com/howmicrosoftdoesitwebcasts
• Microsoft TechNet http://www.microsoft.com/technet/itshowcase
© 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.