Welcome... infosys...to a talk about The Exchange Web Services Managed API Code Camp Wellington 2009 Adrian (Bert) Garrett-Tuck Infosys Limited 1.

Slides:



Advertisements
Similar presentations
Why not just use Arrays? Java ArrayLists.
Advertisements

My EBSCOhost Tutorial Tutorial support.ebsco.com.
Support.ebsco.com Using the Search History Feature Tutorial.
Welcome to WebCRD.
Client-server practices DSC340 Mike Pangburn. Agenda Overview of client-server development Editing on client (e.g., Notepad) or directly on server (e.g.,
Jason Henderson Senior Program Manager Microsoft Corporation.
Web Services Darshan R. Kapadia Gregor von Laszewski 1http://grid.rit.edu.
Introduction to MVC Adding a View Page NTPCUG Tom Perkins, Ph.D.
YOUR LOGO HERE YOUR LOGO HERE Amy Brink Comparing caTissue Plus to caTissue 1.3.6A Amy Brink March 5 th, 2014.
Process Patterns in BizAGI. Slide 2 Overview Types of events Types of gateways Design patterns list.
Casual.Direct is a fully automated state wide service locating casual and temporary teachers to cover short term and long term relief needs in schools.
Web Forms For Marketers
Separating from SMS in Your BlackBerry 8800 Separating from SMS in Your BlackBerry 8800 In this training module you will learn how to separate.
Welcome to RefWorks for the Humanities & Social Sciences by Denis Lacroix.
SharePoint Saturday Sponsors Gold Bronze Custom REST services and jQuery AJAX Building your own custom REST services and consuming them with jQuery AJAX.
CSCI 6962: Server-side Design and Programming History and Background.
EXL MS Mail 3.0 Simple MAPI 1.0 Windows 95 Extended MAPI Exchange 4.0 Directory API Electronic Forms.
Exchange Deployment Planning Services Exchange 2010 Developer Platform.
Advanced Workflow. Agenda 1. Understanding the Overall Architecture 2. Setting up Outlook for Workflow 3. Launching Workflow from Applications 4. Getting.
Intro To JMeter Christian Desserich Testing a Web-Based Application.
Web Design Dreamweaver Semester 2 ATBs. ATB #1 What is a web site?
PHP Tutorials 02 Olarik Surinta Management Information System Faculty of Informatics.
SUNY Polytechnic Institute CS 490 – Web Design, AJAX, jQueryAngularJS AngularJS is a client-side JavaScript Framework for adding interactivity to HTML.
NMU Voic Welcome to. This presentation will walk you through the setup and use of the NMU Voic system. Follow the step by step instructions.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
INFO 344 Web Tools And Development CK Wang University of Washington Spring 2014.
THH Transition Web Page Instructions | 2 Welcome to the CareCentrix Transition Process Log on to the CareCentrix portal Logon
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
COMPONENT INTERFACE By, Mr. Srinivas.. What is Component Interface? A means to access the PeopleSoft application without using the PeopleSoft pages. It.
1.NET Web Forms Web Services © 2002 by Jerry Post.
Reminder Exchange. Introduction Reminders can be sent from one facility to another Area Offices can create a central repository for each service unit’s.
DAT 330 Building Web Services with SQL Server and SQLXML 3.0 Alexander Vaschillo Lead Program Manager WebData XML Group Microsoft Corporation.
Caching Chapter 12. Caching For high-performance apps Caching: storing frequently-used items in memory –Accessed more quickly Cached Web Form bypasses:
COM+ And CORBA Interop With XML-Based Web Services Jay Schmelzer Partner Clarity Consulting, Inc
What’s New In Denali - TSQL David Ballantyne. Who am I Kent.Net/SqlServer.
Copyright © 2013 Curt Hill SOAP Protocol for exchanging data and Enabling Web Services.
Features Help (Adding Attachments) (Adding Auto Signatures) (Setting Priorities)
Attachments are files that you can open with your for e.g. when you send an you could attach a link or a picture a word document or a spreadsheet.
How to Convert to a Managed Package Winter `07 Ralph Eddy January 4, 2007.
Week 4 - Monday.  What did we talk about last time?  Queues  Implementing queues with circular arrays.
Introduction to XML By Manzur Ashraf (Shovon) Dept. of Computer Science & Engineering (BUET)
11 The Repeater Control. 22 Objectives You will be able to use a Repeater Control to display data obtained with a SQL query with custom formatting.
Introduction to R October 10, 2008 Please go to: Find the workshop materials for this course Download them.
School Specialty Online Ordering Through Skyward.
Casual.Direct (Casual Teacher Staffing System). Casual.Direct is a fully automated state wide service locating casual and temporary teachers to cover.
How to use By Lauren Fowler. Adding Attachments Attachments are pictures, videos and files that you have on your computer. You can add these to.
Transitioning from Groupwise to Exchange. Web Login 1.Open a web browser and type in mail.brcsd.org or follow the link from the website. 2.Select the.
AJAX and REST. Slide 2 What is AJAX? It’s an acronym for Asynchronous JavaScript and XML Although requests need not be asynchronous It’s not really a.
Jason Henderson Principal Program Manager Microsoft Corporation SESSION CODE: UNC310.
AJAX CS456 Fall Examples Where is AJAX used? Why do we care?
WebApi: What is it? How can I use it? Guy In Front of the Whittaker.
Upgrade on Windows 7. DownloadSoftware Download Software from link provided in Webliography: e/
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
Library APIs and Web Services, SaaS, Cloud Computing.
Windows 7 Ultimate To Load Click Simulation PPSX
Creating links from an Alma Analytics report to an external web page
Data Virtualization Tutorial… CORS and CIS
Title: Unified Communication Application Suite Keycode Retrieval System (KRS) User Guide Issue: 0.2 Date: July 2011 Hi and welcome to the.
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
Hi and welcome to the Order Centre – Ordering training.
Hi and welcome to the Order Centre – Ordering training.
Title: Agile Communication Environment Keycode Retrieval System (KRS) User Guide Issue: 0.4 Date: July 2011 Hi and welcome to the Order.
Lesson 11: Web Services and API's
Hitchhiker’s Guide Hitchhiker’s Guide to Microsoft Outlook 2003.
Python and REST Kevin Hibma.
EBSCOhost Advanced Search Guided Style
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
Presentation transcript:

Welcome... infosys...to a talk about The Exchange Web Services Managed API Code Camp Wellington 2009 Adrian (Bert) Garrett-Tuck Infosys Limited 1

What we will cover infosys Welcome to Code Camp 2009! What is the Managed API? The Exchange 2007 Web Service Interaction with the web service via auto-gen’d proxy classes What is the EWS Managed API? Why is it so much better? Links and resources 2

The Exchange 2007 Web Service infosys.NET 2.0 styles, SOAP web service. Is “the new guy” for Exchange 2007 interop Replaces WebDAV and CDOEX Interact with it via VS generated proxy classes. Who’s done some work with it? 3

Interaction with the web service via auto-gen’d proxy classes infosys Set up a binding Create a request Set request options (such as folder, a view, whatever... Set properties Call the service & get a response Parse response 4

Interaction with the web service via auto-gen’d proxy classes infosys Example 1 – Get inbox folder 5 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; }

Interaction with the web service via auto-gen’d proxy classes infosys Example 2 – Find a folder called ‘Timesheet’ 6 // Create the request and specify the traversal type. FindFolderType findFolderRequest = new FindFolderType(); findFolderRequest.Traversal = FolderQueryTraversalType.Deep; // Define the properties that are returned in the response. FolderResponseShapeType responseShape = new FolderResponseShapeType(); responseShape.BaseShape = DefaultShapeNamesType.Default; findFolderRequest.FolderShape = responseShape; // Identify which folders to search. DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1]; folderIDArray[0] = new DistinguishedFolderIdType(); folderIDArray[0].Id = DistinguishedFolderIdNameType.msgfolderroot; // Add the folders to search to the request. findFolderRequest.ParentFolderIds = folderIDArray; // Send the request and get the response. FindFolderResponseType findFolderResponse = _binding.FindFolder(findFolderRequest); if (findFolderResponse.ResponseMessages.Items[0].ResponseClass != ResponseClassType.Success) { throw new Exception(String.Format("Error:\r\n{0}\r\n{1}", findFolderResponse.ResponseMessages.Items[0].ResponseCode, findFolderResponse.ResponseMessages.Items[0].MessageText)); } CalendarFolderType timesheetCalendarFolder = null; foreach (BaseFolderType folder in ((FindFolderResponseMessageType)findFolderResponse.ResponseMessages.Items[0]).RootFolder.Folders) { if (folder is CalendarFolderType) { if (folder.DisplayName.ToLower() == "timesheet") { timesheetCalendarFolder = (CalendarFolderType) folder; } if (timesheetCalendarFolder == null) return false; // Form the FindItem request. FindItemType findItemRequest = new FindItemType(); findItemRequest.ParentFolderIds = new[] {new FolderIdType()}; findItemRequest.Traversal = ItemQueryTraversalType.Shallow; ((FolderIdType) findItemRequest.ParentFolderIds[0]).Id = timesheetCalendarFolder.FolderId.Id; findItemRequest.Item = _calendarView; ItemResponseShapeType itemShapeDefinition = new ItemResponseShapeType(); // Only need to retrieve the ItemId's in the find procedure... itemShapeDefinition.BaseShape = DefaultShapeNamesType.IdOnly; findItemRequest.ItemShape = itemShapeDefinition; // Do the EWS Call... FindItemResponseType findItemResponse = _binding.FindItem(findItemRequest); // Check for errors if (findItemResponse.ResponseMessages.Items[0].ResponseClass != ResponseClassType.Success) { throw new Exception(String.Format("Error:\r\n{0}\r\n{1}", findItemResponse.ResponseMessages.Items[0].ResponseCode, findItemResponse.ResponseMessages.Items[0].MessageText)); } _findItemResponseMessage = (FindItemResponseMessageType) findItemResponse.ResponseMessages.Items[0]; _findCalled = true; return true; 70 Lines of Code to find a timesheet folder! Another 30 lines to get some items out

What is the Managed API? infosys 7 Easier.NET Interop with Exchange 2007SP1 / 2010 An additional assembly to reference Wraps up calls to the Exchange Web Service into simple methods. Significantly easier to use and manage than calling the web service via auto gen’d proxy directly 1.0 Beta Will support all new features of EWS as they become available.

Why is it so much better? infosys 8 Example 1 Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox); Example 2 Folder cal = Folder.Bind(service, WellKnownFolderName.Calendar); FolderView view = new FolderView(100); view.Traversal = FolderTraversal.Deep; view.PropertySet = new PropertySet(BasePropertySet.IdOnly); view.PropertySet.Add(FolderSchema.DisplayName); view.SearchFilter = new SearchFilter.ContainsSubstring(FolderSchema.DisplayName, "timesheet"); FindFoldersResults result = service.FindFolders(cal.Id, view); Folder timesheetfolder = result[0];

Why it’s so much better! infosys Saves a LOT of code! Code is a lot more readable Code is a lot more manageable Uses/wraps the Exchange 2007 Web Service – EWS here to stay Previously written web service proxy interop is not lost in vain Do upgrade when opportunity arises 9

Thanks and See Ya! infosys Cheers for listening Get slides from Links: us/library/dd aspxhttp://msdn.microsoft.com/en- us/library/dd aspx (Matt Stehle, Exchange Team)