Title: Data Collaboration Data Objects for Exchange 2000
1Collaboration Data Objects for Exchange 2000
Overview Naveen KachrooProgram
ManagerExchange Server Product UnitMicrosoft
Corporation
2(No Transcript)
3Agenda
- CDO today and tomorrow
- Design goals
- Integration with ADO and OLE DB
- Detailed coverage of CDO objects and interfaces
4CDO 1.x Recap
- CDO 1.0 - Client messaging apps
- CDO 1.1 - Web and server apps
- CDO 1.2 - Scheduling and calendaring
- CDO for Windows NT Server 4.0 - SMTP mail, MHTML
5What Is CDO?
- CDO is a different object model than CDO 1.2
- CDO is an API specification
- Objects, interfaces, methods, properties
- CDO is an object library
- Currently two implementations
- CDO for Windows 2000
- CDO for Exchange 2000
6CDO Design Goals
- Extend ADO and OLE DB 2.5
- Pick up where ADO/OLE DB leaves off
- One Library for all languages
- Dual interfaced
- C, Visual Basic, Visual Basic Scripting
Edition, JScript - Fully integrate Internet standards
- Make development easier
- Multiple levels of data access
7CDO For Windows 2000
- In Windows 2000 Professional and Server
- Delivers base messaging functionality
- Send/receive email messages
- Post/process discussion/news messages
- Extensive MIME content creation and management
- Inbound protocol events and agents
- No mailboxes or public folders
8CDO For Windows 2000Target applications
- Targeted mailers
- Simple and complex content
- Email notifications
- E.g., 401K renewal, expense approvals
- Inbound message filtering and pre-processing
- Mail based replication
- Any application needing to construct MIME content
9DEMOCDO AND ASP
10CDO For Exchange
- Superset of CDO for Windows 2000
- Fully backward compatible
- Delivers extensive set of objects for rich
collaborative applications - Access to public and private stores
- Enables creation of many new classes of
applications
11CDO For ExchangeTarget applications
- Outlook scenarios
- E-mail, discussions, contacts, calendaring, etc.
- Sales Force Automation / Tracking
- Document Management
- Scheduling and task management
- Class registration
- Interview scheduling
12Extensible Design
- Create your own application specific objects
- Aggregate or contain existing CDO objects
- E.g., custom MIME content types
- Support for 3rd-party first class objects
- Not limited to objects Microsoft ships
- Extensible database schema and classes
- Server events allow for custom backend processing
13Internet Standards
- Completely adopt Internet standards at API and
storage level - Make the Internet a great platform for
collaboration applications - Internet standard data formats
- RFC822 (mail), RFC1036 (news), MIME, HTML, MHTML,
ICalendar, VCard, and others - Internet standard protocols
- SMTP, NNTP, LDAP, HTTP, HTTP-DAV
14CDO and ADO/OleDB
VB, C, JScript, VBScript Application
CDO
ADO 2.5
Exchange OLE DB 2.5 Provider
ADSI
DS OLE DB Provider
ExchangeStore
Windows 2000 Active Directory
15Database Schema
- Based on Internet standards
- RFC822, MIME, ICalendar
- Contacts based on LDAP, not VCARD
- VCard import/export supported
- Uses OLE DB data types
- No opaque binary blobs
- Fully documented
- Extensible by 3rd parties
16CDO and MIME
- The basis for serializing all items into stream
based storage - Not just for messaging
- Provides for structured storage
- Message bodies, attachments, inline images,
documents, ICalendar data, XML data, custom
properties - CDO IBodyPart interface used to manipulate content
17Messaging And MIMEObjects and interfaces
IUnknown
IUnknown
IDispatch _Field
ADO Field
IDispatch IMessage IBodyPart IDataSource IRow
Message
IUnknown
IDispatch _Stream
ADO Stream
IUnknown
IUnknown
BodyPart
IDispatch IBodyPart IRow
IDispatch _Fields
ADO Fields
18IDataSourceOverview
- Provides access through CDO to data sources
- Open from and Save to URL-addressable data
through an OLE/DB 2.5 provider - Open from and Save data to objects in memory
- Allows you to manipulate content with the right
object
IDataSource
Methods Open OpenObject Save SaveTo SaveToObject S
aveToContainer Properties ActiveConnection
(Connection) IsDirty (Boolean) Source
(IDispatch) SourceClass (String) SourceURL
(String)
19Code Example 1Accessing mail from a folder
Dim conn as New Connection Dim rs as
Recordset Dim msg as New Message fldr
file//./backofficestorage/domain/MBX/user/inbox
conn.open fldr,fred,whatever,adRunAsync Set
rs conn.execute Select from
scope(shallow traversal of fldr
) where urnschemasmailheadersubject
hello msg.DataSource.Open
rs(DAVhref),conn msg.Attachments(1).SaveToFile
C\temp\file.doc msg.Attachments.DeleteAll msg.D
ataSource.Save
20Calendaring
- Based on ICalendar Internet drafts
- ICalendar Calendar/scheduling protocol
- ITIP Adds group scheduling methods
- Requests, Responses, Cancellations, Updates
- IMIP Transport over email
- Includes all time based data
- Calendars, appointments, events, tasks, requests
and responses - Build personal, group custom scheduling
applications
21CalendaringObjects and interfaces
IUnknown
IUnknown
CalendarPart
IDispatch IAppointment IBodyPart IDataSource IRow
Appointment
IDispatch IAppointment ICalendarPart
IUnknown
IUnknown
Recurrence Pattern
IDispatch IRecurrencePattern
IDispatch ICalendarMessage IMessage IBodyPart IDat
aSource IRow
CalendarMessage
IUnknown
Exception
IDispatch IException IRow
22Code Example 2Simple meeting request
Public Sub SimpleMeetingRequest() Dim objAppt As
New Appointment Dim objReq As CalendarMessage o
bjAppt.Subject "MEC 99" objAppt.StartTime
"10/4/99 100PM" objAppt.EndTime "10/4/99
100PM" objAppt.Attendees.Add ("user2_at_domain")
Set objReq objAppt.CreateRequest objReq.Mes
sage.Send End Sub
23Contact Management
- Unified API over multiple address book sources
- Complements ADSI
- Schema based on LDAP
- Extended for contact mgmt attributes
- Import/export VCard content
24CDO.Person
- Models a Person in the contact database and in
the Directory - Provides simple access to name, addresses,
telephone numbers and email addresses properties - All other properties available through the fields
collection - Supports VCard import and export
25Code Example 3CDO Person code sample
Dim aperson as new Person Dim rs as
RecordSet Rs.open file//./backofficestorage/doma
in/MBX/dougw/contacts rs.MoveFirst While NOT
rs.EOF aperson.DataSource.Open
rs.Fields(DAVHREF) Debug.Print
aperson.FirstName Debug.Print aperson.LastName D
ebug.Print aperson.MailingAddress rs.MoveNext WEn
d
26CDO And Event Sinks
- CDO code is invoked on events firing
- Protocol Event Sinks
- Store Event Sinks
- Create CDO applications as in-proc/out-of-proc
applications - Register DLLs with MTS under a specific context
- Run compiled EXEs out of proc
27DEMONT Service Demo
28Exchange Management
- Exchange Management Objects
- Extension to CDO, OLE DB/ADO, and ADSI
- Additional interfaces on CDO Person and Folder
objects - Target applications
- Web-based administration of Exchange
- Self provisioning of servers
- Custom admin applications
- Integrated management systems
29Management Extensions To CDO Objects And
Interfaces
IUnknown
IUnknown
IDispatch IPerson IMailbox IMailRecipient IMailbox
Store IBodyPart IDataSource IRow
Person
IDispatch IFolder IFolderAdmin IMailRecipient IDat
aSource IRow
Folder
30Code Example 4Mailbox enabling a user
Dim objUser As New CDO.Person Dim objMailbox As
EMO.IMailboxStore objUser.DataSource.Open
"LDAP//skipton/CNuser1,CNUsers,
DCdougw,DCextest,DCmicrosoft,DCcom" objUser.F
ields(urnschemascontactsfirstname)
fred Set objMailbox objUser objMailbox.Create
Mailbox File//skipton/New Private
MDB" objMailbox.OverQuotaLimit
100000 objMailbox.GarbageCollectOnlyAfterBackup
true objUser.DataSource.Save
31ADSI Integration
- Use ADSI if you a writing a Directory only
application - Use CDO.Person for contact management and
accessing Exchange mailboxes - Easily integrated with existing scripts and
applications
32DEMOWeb-based User Management
33Custom CDO Objects Expense reporting
- A custom expense reporting object could be built
on top of CDO.Message - Object used for reporting expenses and for
approving or rejecting expense reports - Content-Class defines this new class
- Custom properties used to store report data
- COM containment or aggregation used to expose CDO
interfaces
34Custom CDO Objects Expense report object
IExpenseReport
Methods Reject (IExpenseReport) Approve
(IExpenseReport) Properties DataSource
(IDataSource) Type (Enum) TotalCost
(Long) StartDate (Date) EndDate
(Date) Description (String) OriginatorEmail
(String) Message (IMessage) ReviewerComment
(String) ReviewerEmail (String) Collections Expens
es (IExpenseInfo)
ExpenseReport
Message
35Code Example 4Sending an expense report
Public Sub IssueReport Dim Rpt as New
ExpenseReport Dim Ex as New Expense
Rpt.StartDate 1/6/98
Rpt.EndDate 1/7/98
Rpt.OriginatorEmail bob_at_samples.microsoft.com
Rpt.ReviewerEmail bobsboss_at_samples.m
icrosoft.com Rpt.Description
Important Client Meeting Ex.Date
1/6/98 Ex.Cost 57.32
Ex.Description Dinner with client
Rpt.Expenses.Add Ex Rpt.Message.Send En
d Sub
36Summary
- CDO ADO is a big step forward for collaborative
app development - Full Exchange 5.5 and Outlook app compatibility
- Migrate or create new apps as capabilities warrant
37(No Transcript)