zarafa summercamp 2012 - exchange web services on zarafa
DESCRIPTION
TRANSCRIPT
![Page 1: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/1.jpg)
Exchange Web Services (EWS)Steve Hardy
![Page 2: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/2.jpg)
• Eee-doubleyou-es• Eee-wee-es• you w’s ?
How are we going to pronounce it ?
![Page 3: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/3.jpg)
This is a ‘ewe’
![Page 4: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/4.jpg)
- XML-based protocol (SOAP)- Introduced in Exchange 2007- Successor to previous WebDAV approach- Used from introduction for OWA 2007 and later
What is EWS
<?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>
![Page 5: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/5.jpg)
• 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)
Who/what is using EWS at the moment?
![Page 6: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/6.jpg)
Relation to MAPI
MAPI
EWS Gateway(IIS plugin)
EWS Gateway(IIS plugin)
Exchange mail store message database
(EMSMDB)
EWS protocol
![Page 7: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/7.jpg)
EWS: MAPI + CDO over XML
EWS Gateway(IIS plugin)EWS Gateway(IIS plugin)
EWS protocol
MAPI -> XML engine
Calendaring engine(like CDO)
Meeting/Task request engine (like CDO)
![Page 8: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/8.jpg)
• 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
Why was it designed this way ?
![Page 9: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/9.jpg)
• 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
Why do clients use EWS?
![Page 10: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/10.jpg)
EWS in Zarafa
EWS Gateway(Standalone server)EWS Gateway(Standalone server)
EWS protocol
MAPI -> XML engine
Calendaring engine(like CDO)
Meeting/Task request engine (like CDO)
![Page 11: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/11.jpg)
• 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++)
EWS in Zarafa: general design
![Page 12: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/12.jpg)
In order of priority:
1.Support e-mail handling in Outlook 2011, Mac Mail
2.Support addressbook handling in Outlook 2011, Mac Addressbook
3.Support calendar handling
4.Support MR/TR handling
5.Management functions like setting OOF, etc.
Low priority:-Bulk handling features of EWS-Administration features
EWS general development goals
![Page 13: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/13.jpg)
• 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
XML handling in Zarafa-EWS
![Page 14: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa](https://reader033.vdocuments.net/reader033/viewer/2022061209/548c916ab4795913478b466d/html5/thumbnails/14.jpg)
Demo