4. What is EWS
- XML-based protocol (SOAP)
- Introduced in Exchange 2007
- Successor to previous WebDAV approach
- Used from introduction for OWA 2007 and later
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope>
<soap:Body>
<GetItem>
<ItemShape>
<t:BaseShape>Default</t:BaseShape>
<t:IncludeMimeContent>true</t:IncludeMimeContent>
</ItemShape>
<ItemIds><t:ItemId Id="AAAlAF" ChangeKey="CQAAAB" /></ItemIds>
</GetItem>
</soap:Body>
</soap:Envelope>
5. Who/what is using EWS at the moment?
âą Outlook 2010
â Free/Busy
â Some minor features
âą Mac
â Outlook 2011
â âMailâ
â âAddressbookâ
â âCalendarâ
âą Other
â Various opensource projects for accessing exchange server from
opensource packages (eg. Evolution, Thunderbird, etc)
â Various closed source projects (eg. Archivers, Indexers, etc)
6. Relation to MAPI
EWS protocol
EWS Gateway
(IIS plugin)
MAPI
Exchange mail store message
database
(EMSMDB)
7. EWS: MAPI + CDO over XML
EWS protocol
MAPI -> XML engine
EWS Gateway Calendaring engine
(IIS plugin) (like CDO)
Meeting/Task request
engine (like CDO)
8. Why was it designed this way ?
âą Much more high-level functions
â Easier for developers to use, less client-side code needed
â Solves most of the really hard stuff like recurrence and meeting request
handling
âą XML/SOAP interface allows access from any platform
âą XML/SOAP interface allows access from any programming
language (well, in theory âŠ)
âą Most easily built on top of MAPI since MAPI already provides many
features that you need for EWS
9. Why do clients use EWS?
âą On non-MS platform
â You have no choice, except IMAP & CalDAV
âą On MS platform
â Itâs easier than MAPI, and usable from .Net applications
âą Why not IMAP?
â Email only
â No handling of meeting requests, etc
âą Why not CalDAV?
â Calendar/tasks only
â No easy handling of meeting requests, etc
11. EWS in Zarafa: general design
âą Forked processes (think âzarafa-ewsdâ)
âą Primarily in Python
â Rapid development possible
â Speed disadvantage compared to C++ is not important, since most real
processing is done by MAPI (C++)
12. EWS general development goals
In order of priority:
3.Support e-mail handling in Outlook 2011, Mac Mail
4.Support addressbook handling in Outlook 2011, Mac Addressbook
5.Support calendar handling
6.Support MR/TR handling
7.Management functions like setting OOF, etc.
Low priority:
-Bulk handling features of EWS
-Administration features
13. XML handling in Zarafa-EWS
âą Always the question: pull or push XML ?
Push
- Read all XML at once, parse it all, then pass to processor
- Easy to code, clear overview
- Slow for large requests: high latency
Pull
- Read XML bit-by-bit, process when possible (before reading end of
XML request)
- Harder to code, sometimes makes the code less readable
- Low memory footprint, low latency