2: Advanced Exchange Web Services Programming Jason Henderson Principal Program Manager Lead Microsoft Session Code: UNC401
3: Agenda What is new in Exchange 2010 Web Services? Advanced EWS Managed API Concepts Using Autodiscover Accessing Mailbox Items Writing Scalable Applications Using Diagnostics to Identify Potential Performance Problems Best Practice Recommendations
4: Same Rich Capabilities as E2007 Rich Mailbox Access Calendar - Free/busy, Meeting time Suggestions E-mail – Send, Retrieve, Forward, Reply, Move, MIME Contacts/Tasks Search Name Resolution Change notifications Synchronization services Autodiscover Rich Logon Modes Delegate Access Impersonation Direct Logon Plus Much More…
5: Whats New In Exchange 2010?
6: Agenda What is new in Exchange 2010 Web Services? Advanced EWS Managed API Concepts Using Autodiscover Accessing Mailbox Items Writing Scalable Applications Using Diagnostics to Identify Potential Performance Problems Best Practice Recommendations
7: Using Autodiscover To Connect To EWS What is Autodiscover? Its a web service that configures Exchange applications Using a URL that can be automatically discovered by client applications Why use it? Removes the need for hard-coding the EWS URL Enables seamless failover and anywhere access Built-in client in the EWS Managed API Makes it really easy to call Autodiscover
8: When To Autodiscover The EWS URL Inter-site failover and move
9: When To Autodiscover The EWS URL Migration
10: Demos Calling AutodiscoverUrl Using AutodiscoverService Batch requests Retrieving specific settings (e. g. OWA URLs)
11: Accessing Mailbox Items Properties And Property Sets There are multiple ways to retrieve items List items or search for specific items Inbox. FindItems() Bind to or load specific items EmailMessage. Load(); Synchronize items service. SyncFolderItems() All use PropertySets to scope data to return
12: Accessing Mailbox Items Batch Operations Batch operations act on multiple items in a single EWS request Using batch operations: Helps increases your applications performance Helps reduce server load The EWS Managed API supports batch operations in addition to per-item operations
13: Extended Properties Complement first class properties First class properties are directly available on items and folders (e. g. Item. Subject, Folder. DisplayName) Allow developers to: Set and retrieve custom, application specific properties Access properties that are not exposed as first class properties Do bad things (so use with care): Access properties that should not be accessed Override EWS business logic
14: Demo Bind Property set FindItems w/filter on Extended Property and with IdOnly LoadProperties w/custom property set
15: Agenda What is new in Exchange 2010 Web Services? Advanced EWS Managed API Concepts Using Autodiscover Accessing Mailbox Items Writing Scalable Applications Best Practice Recommendations Using Exchange Web Services Diagnostics
16: Scalability What is scalability? It is doing more with fewer resources It is minimizing the Exchange Server resource cost per user We will discuss: How to measure the impact of your EWS requests on Exchange? How to minimize the internal Exchange processing driven by your application
17: Exchange Architecture
18: Methodology for Maximizing Scale Think about your final end to end scenario and design your I/O patterns leveraging best practices Write code, Measure, Optimize, Repeat! The Managed API can dramatically reduce your cycle time Simulate your application in a dedicated environment Use Realistic Mailbox Sizes and Data VMs dont usually work well for this testing
19: Best Practice 1: Minimize the number of web service calls Use batch to get more data in each request Use notifications to alert on item changes rather than repeatedly querying folders Cache data locally Use cached data when application restarts
20: Best Practice 2: Do not request unneeded data Use property sets Request only the needed properties Use FindItem page sizes Request only the items needed Minimize service account mailbox size to avoid retrieving old or unnecessary data
21: Best Practice 3: Minimize search load on Exchange Do use SyncFolderItems or FindItem with no search criteria whenever possible Do use FindItemQueryString if it supports the necessary search criteria Do delete SearchFolders after they are no longer needed Dont use FindItem or SearchFolder with search criteria unless absolutely required
22: IIS Log Diagnostics Deep Dive
23: Performance Counter Diagnostics Performance counters give you a big picture view Under the MSExchangeWS Counter Requests/sec Overall number of requests being served by EWS, this includes successful requests Items ReadMovedSentUpdated/sec Average Response Time Running average in ms Command/sec GetItem Requests/sec FindItem Requests/sec
24: Take-aways Exchange 2010 enables easy, rich and cloud ready development Use Autodiscover, explicit properties, and batch operations in your code Follow the best practices to develop scalable and efficient applications Download the Exchange Web Services Managed API 1. 0 today!
25: Resources Download the Exchange Web Services Managed API 1. 0 Learn more about Exchange Web Services MSDN http://msdn. microsoft. com/en-us/library/bb204119(EXCHG. 80). aspx Inside Microsoft Exchange 2007 Web Services http://msdn. microsoft. com/blogs/exchangedev Download the EWS Editor Fill out session evaluations
26: question & answer question & answer
27: Resources