1 integrating real-time collaboration into your applications stephanie lindsey program manager...

29
1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation [email protected] om Session Code: CLI380

Upload: hugo-terry

Post on 21-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

1

Integrating Real-time Collaboration into your Applications

Stephanie LindseyProgram ManagerMicrosoft [email protected]

Session Code: CLI380

Page 2: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

2

AgendaAgenda

OverviewExample SolutionsLonghorn Design Goals Real-time Collaboration APIsSummary

OverviewExample SolutionsLonghorn Design Goals Real-time Collaboration APIsSummary

Page 3: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

3

Tools

Client Application Model

Avalon Windows Forms

Web & Service Application Model

ASP.NET / Indigo Win FSCompact

FrameworkYukon Mobile PC Optimized

System.HelpSystem.Help

System.DrawingSystem.Drawing

System.NaturalLanguageServicesSystem.NaturalLanguageServices

Data Systems Application Model

Presentation Data

Mobile PC & Devices Application Model

Communication

Command Line

NT Service

DataSetDataSet

MappingMapping

ObjectSpacesObjectSpaces

ObjectSpaceObjectSpace

QueryQuery

SchemaSchema

ItemItem

RelationshipRelationship

MediaMedia

AudioAudio

VideoVideo

ImagesImages

System.MessagingSystem.Messaging System.DiscoverySystem.Discovery

System.DirectoryServicesSystem.DirectoryServices

System.RemotingSystem.Remoting

System.Runtime.RemotingSystem.Runtime.Remoting

ActiveDirectoryActiveDirectory

UddiUddi

System.Web.ServicesSystem.Web.Services

Web.ServiceWeb.Service

DescriptionDescription

DiscoveryDiscovery

ProtocolsProtocols

System.MessageBusSystem.MessageBus

TransportTransport

PortPort

ChannelChannel

ServiceService

QueueQueue

PubSubPubSub

RouterRouter

System.TimersSystem.Timers

System.GlobalizationSystem.Globalization

System.SerializationSystem.Serialization

System.ThreadingSystem.Threading

System.TextSystem.Text

System.DesignSystem.Design

Base & Application Services

Fundamentals

System.ComponentModelSystem.ComponentModel

System.CodeDomSystem.CodeDom

System.ReflectionSystem.Reflection

System.EnterpriseServicesSystem.EnterpriseServices

System.TransactionsSystem.Transactions

Security

System.Windows.TrustManagementSystem.Windows.TrustManagement

System.Web.SecuritySystem.Web.Security

System.MessageBus.SecuritySystem.MessageBus.Security

AuthorizationAuthorization

AccessControlAccessControl

CredentialsCredentials

CryptographyCryptography

System.Web.ConfigurationSystem.Web.Configuration

System.MessageBus.ConfigurationSystem.MessageBus.Configuration

System.ConfigurationSystem.Configuration

System.ResourcesSystem.ResourcesSystem.ManagementSystem.Management

System.DeploymentSystem.Deployment

System.DiagnosticsSystem.Diagnostics

Configuration Deployment/Management

System.WindowsSystem.Windows System.WindowsSystem.WindowsSystem.Windows.FormsSystem.Windows.Forms

System.ConsoleSystem.Console

System.ServiceProcessSystem.ServiceProcess

System.Windows.FormsSystem.Windows.Forms System.WebSystem.Web System.StorageSystem.Storage System.Data.SqlServ

erSystem.Data.SqlServer

AnimationAnimation

ControlsControls

ControlControl

DesignDesign

PanelPanel

ControlsControls

DialogsDialogs

SideBarSideBar

NotificationNotification

System.WindowsSystem.Windows

DocumentsDocuments

Text ElementText Element

ShapesShapes

ShapeShape

InkInk

UI ElementUI Element ExplorerExplorer MediaMedia

System.Windows.FormsSystem.Windows.Forms

FormsForms

ControlControl

Print DialogPrint Dialog

DesignDesign

System.Web.UISystem.Web.UI

PagePage

ControlControl

HtmlControlsHtmlControls

MobileControlsMobileControls

WebControlsWebControls

AdaptorsAdaptors

DesignDesign

PortsPorts

InteropServicesInteropServices

System.RuntimeSystem.Runtime

System.IOSystem.IO

System.CollectionsSystem.Collections

GenericGeneric

System.SearchSystem.Search

AnnotationsAnnotations

MonitoringMonitoring

LoggingLogging

RelevanceRelevance

System.DataSystem.Data

SqlClientSqlClient

SqlTypesSqlTypes

SqlXMLSqlXML

OdbcClientOdbcClient

OleDbClientOleDbClient

OracleClientOracleClient

CoreCore

ContactContact

LocationLocation

MessageMessage

DocumentDocument

EventEvent

System.StorageSystem.Storage

System.WebSystem.Web

PersonalizationPersonalization

CachingCaching

SessionStateSessionState

System.XmlSystem.Xml

SchemaSchema

SerializationSerialization

XpathXpath

QueryQuery

PermissionsPermissions

PolicyPolicy

PrincipalPrincipal

TokenToken

System.SecuritySystem.Security

System.CollaborationSystem.Collaboration

RealTimeEndpointRealTimeEndpoint

PresencePresence

SignalingSessionSignalingSession

MediaMedia

ActivitiesActivities

HttpWebRequestHttpWebRequest

FtpWebListenerFtpWebListener

SslClientStreamSslClientStream

WebClientWebClient

System.NetSystem.Net

NetworkInformationNetworkInformation

SocketsSockets

CacheCache

System.WebSystem.Web

AdministrationAdministration

ManagementManagement

NavigationNavigation

Peer GroupPeer Group

PolicyPolicy

SerializationSerialization

CompilerServicesCompilerServices

RecognitionRecognition

System.SpeechSystem.Speech

SynthesisSynthesis

Page 4: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

4

OverviewOverview

What is Real-time Collaboration?Windows COM API Features Exposed

Presence Contact List, GroupsAudio/Video (point to point)Multiparty Instant MessagingApplication Sharing

What is Real-time Collaboration?Windows COM API Features Exposed

Presence Contact List, GroupsAudio/Video (point to point)Multiparty Instant MessagingApplication Sharing

Page 5: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

5

Desktop AppsMessenger ApplicationsCustomer Relationship ManagementIntegration with productivity and LOB applications (e.g. Office)Integrating Audio/Video

Server-Side AppsNotificationsBotsVoice (Telephony and VoIP)

Desktop AppsMessenger ApplicationsCustomer Relationship ManagementIntegration with productivity and LOB applications (e.g. Office)Integrating Audio/Video

Server-Side AppsNotificationsBotsVoice (Telephony and VoIP)

Example SolutionsExample Solutions

Page 6: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

6

Helpdesk SolutionHelpdesk Solution

Help Personnel

Area Experts

Bot Employee

Page 7: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

7

Why is this hard today?Why is this hard today?

No common platform to do collaborationDevelopers have to understand different APIs and protocols

SIP, SIMPLE, PINT, T.120, RTP, G.711, G.722.1, G.723.1, GSM, DVI4, SIREN, H.263, Acoustic Echo Cancellation, DirectX®, etc.Developers can’t pick and choose the different building blocks

No multipartyAudio/Video is not lifelikeLack of application sharing integrationHard to resolve an identity to a network addressCurrent implementation does not scale well for server-based environments

No common platform to do collaborationDevelopers have to understand different APIs and protocols

SIP, SIMPLE, PINT, T.120, RTP, G.711, G.722.1, G.723.1, GSM, DVI4, SIREN, H.263, Acoustic Echo Cancellation, DirectX®, etc.Developers can’t pick and choose the different building blocks

No multipartyAudio/Video is not lifelikeLack of application sharing integrationHard to resolve an identity to a network addressCurrent implementation does not scale well for server-based environments

Page 8: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

8

Real-Time Collaboration Design GoalsReal-Time Collaboration Design Goals

Provide an extensible platform so developers can pick and choose building blocks

Provide common platform so developers don’t have to understand the different APIs

Provide libraries for common collaborative activities

UI controls so ISVs don’t have to rewrite UI

Multiparty is built into all collaboration modes Improve our audio/video stackImprove app sharing experienceAPIs will be fully managed codeSupport both IPv4 and IPv6

Provide an extensible platform so developers can pick and choose building blocks

Provide common platform so developers don’t have to understand the different APIs

Provide libraries for common collaborative activities

UI controls so ISVs don’t have to rewrite UI

Multiparty is built into all collaboration modes Improve our audio/video stackImprove app sharing experienceAPIs will be fully managed codeSupport both IPv4 and IPv6

Page 9: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

9

Longhorn Client API ArchitectureLonghorn Client API Architecture

Signaling Plane

A+V

RDP

GXA

Other

Presence Roaming Signalin

g

SIP Protocol Stack

RTC Provider

UI Controls (presence, contacts, IM, a/v, app sharing, file transfer, etc.)

Activities (IM, a/v, app sharing, file transfer, etc.)

Shared Provider

Host

Media Plane

MSN Messenger 3rd Party App

Page 10: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

10

Object ModelObject Model

RealTimeProfileProvider

RealTimeProfile

ProfilePresence

ProfilePersistedData

ProfileSignaling SignalingSession

ContactsSubscription

ContactGroupsSubscription

PresenceSubscription

LocalPresence

:

:

Page 11: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

11

Profile LogonProfile Logonpublic RealTimeProfile LogOnSample(){

// Create an instance of the RTC SIP provider and profileRtcProvider provider = new RtcProvider();

RtcProfile  profile =         provider.CreateRealTimeProfile("sip:[email protected]");profile.LogOnStateChanged +=        new LogOnStateChangedEventHandler(StateChanged);profile.LogOn();return profile;

}private void StateChanged(

object sender, LogOnStateChangedEventArgs e){    RtcProfile profile = (RtcProfile) sender;

if (profile.LogOnState == LogOnState.LoggedOn)    SetOnlineStateSample(profile);  // next slide  }

public RealTimeProfile LogOnSample(){

// Create an instance of the RTC SIP provider and profileRtcProvider provider = new RtcProvider();

RtcProfile  profile =         provider.CreateRealTimeProfile("sip:[email protected]");profile.LogOnStateChanged +=        new LogOnStateChangedEventHandler(StateChanged);profile.LogOn();return profile;

}private void StateChanged(

object sender, LogOnStateChangedEventArgs e){    RtcProfile profile = (RtcProfile) sender;

if (profile.LogOnState == LogOnState.LoggedOn)    SetOnlineStateSample(profile);  // next slide  }

Page 12: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

12

Set Online Presence StateSet Online Presence Stateprivate void SetOnlineStateSample(

RealTimeProfile profile){

// Set the local presence state to Online   

profile.presence.LocalPresence.PresenceState = PresenceState.Online;

   profile.presence.UpdateLocalPresence();

}

private void SetOnlineStateSample(RealTimeProfile profile)

{// Set the local presence state to Online

    profile.presence.LocalPresence.PresenceState = PresenceState.Online;

   profile.presence.UpdateLocalPresence();

}

Page 13: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

13

Longhorn Client API ArchitectureLonghorn Client API Architecture

Signaling Plane

A+V

RDP

GXA

Other

Presence Roaming Signalin

g

SIP Protocol Stack

RTC Provider

UI Controls (presence, contacts, IM, a/v, app sharing, file transfer, etc.)

Activities (IM, a/v, app sharing, file transfer, etc.)

Shared Provider

Host

Media Plane

MSN Messenger 3rd Party App

Page 14: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

14

Activity ObjectsActivity Objects

High-level task-oriented API on top of the signaling and media APIs

Audio/Video ActivityFlexible multi-party conferencing capabilitiesHandles media negotiationRich set of call control operations

App Sharing Activity Flexible multi-party conferencing capabilitiesUses RDP as well as T.120 for NetMeeting interoperability

File Transfer ActivityInstant Messaging Activity

High-level task-oriented API on top of the signaling and media APIs

Audio/Video ActivityFlexible multi-party conferencing capabilitiesHandles media negotiationRich set of call control operations

App Sharing Activity Flexible multi-party conferencing capabilitiesUses RDP as well as T.120 for NetMeeting interoperability

File Transfer ActivityInstant Messaging Activity

Page 15: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

15

Audio/VideoAudio/Video

Easy to use Audio/video media API that provides rich control Improved audio/video quality

New, improved CODECs (RT Voice/RT Video)Jitter controlForward Error CorrectionImproved error-resilience techniques

Improved AEC module in LonghornSecure RTPImproved performance for server-side applications

Easy to use Audio/video media API that provides rich control Improved audio/video quality

New, improved CODECs (RT Voice/RT Video)Jitter controlForward Error CorrectionImproved error-resilience techniques

Improved AEC module in LonghornSecure RTPImproved performance for server-side applications

Page 16: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

16

Audio/Video ArchitectureAudio/Video Architecture

RTC A/V EngineSystem audio

capture source

System audio

renderer

Tra

nsp

ort

RT

P

RTC Media API

AEC

AGC

RTC quality controller

System video

renderer

Tra

nsp

ort

RT

P

Ra

w d

ata

inp

ut

Ra

w d

ata

ou

tpu

t

RTC video render engine

RTC video capture engine RTC video encoder

System video

capture source

RTC video decoder

RTC audio render engine

RTC audio encoder

RTC audio decoder

RTC lip-sync controller

RTC audio capture engine

Page 17: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

17

Longhorn Client API ArchitectureLonghorn Client API Architecture

Signaling Plane

A+V

RDP

GXA

Other

Presence Roaming Signalin

g

SIP Protocol Stack

RTC Provider

UI Controls (presence, contacts, IM, a/v, app sharing, file transfer, etc.)

Activities (IM, a/v, app sharing, file transfer, etc.)

Shared Provider

Host

Media Plane

MSN Messenger 3rd Party App

Page 18: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

18

App Sharing ArchitectureApp Sharing Architecture

KernelKernel

User-ModeUser-Mode

App SharingActivity

T.120User-Mode

Generic Encoder

LH ClientWinSock

WM using NM

Console Display Driver

Mirror DisplayDriver

Driver Miniport

Page 19: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

19

Longhorn Client API ArchitectureLonghorn Client API Architecture

Signaling Plane

A+V

RDP

GXA

Other

Presence Roaming Signalin

g

SIP Protocol Stack

RTC Provider

UI Controls (presence, contacts, IM, a/v, app sharing, file transfer, etc.)

Activities (IM, a/v, app sharing, file transfer, etc.)

Shared Provider

Host

Media Plane

MSN Messenger 3rd Party App

Page 20: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

20

Instant MessagingInstant MessagingDemo the Instant Messaging ActivityBasic Steps

Create a Provider/ProfileCreate a SessionCreate an ActivitySend MessagesReceive Messages

Demo the Instant Messaging ActivityBasic Steps

Create a Provider/ProfileCreate a SessionCreate an ActivitySend MessagesReceive Messages

Page 21: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

21

Instant Messaging Activity

Niko SchuesslerSoftware Design Engineer

Page 22: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

22

Longhorn Client API ArchitectureLonghorn Client API Architecture

Signaling Plane

A+V

RDP

GXA

Other

Presence Roaming Signalin

g

SIP Protocol Stack

RTC Provider

UI Controls (presence, contacts, IM, a/v, app sharing, file transfer, etc.)

Activities (IM, a/v, app sharing, file transfer, etc.)

Shared Provider

Host

Media Plane

MSN Messenger 3rd Party App

Page 23: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

23

UI ControlsUI ControlsUI controls are on top of the activity APIs to further simplify the developer’s workDevelopers can write very little code to make their collaboration applications UI-enabled right out of the box There will be other people centric controls

(people picker, previous conversations, contact control, etc. from people & groups) CLI310: People and Groups Controls in Windows “Longhorn”

UI controls are on top of the activity APIs to further simplify the developer’s workDevelopers can write very little code to make their collaboration applications UI-enabled right out of the box There will be other people centric controls

(people picker, previous conversations, contact control, etc. from people & groups) CLI310: People and Groups Controls in Windows “Longhorn”

Talk

Page 24: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

24

Features Exposed For PDCFeatures Exposed For PDCFeatures Exposed

Basic Presence (Online State)Rich PresenceRoaming (Contact List, Groups, Permissions)Audio/Video (Point to Point)

Activity API (only)

Multiparty Instant Messaging

Features ExposedBasic Presence (Online State)Rich PresenceRoaming (Contact List, Groups, Permissions)Audio/Video (Point to Point)

Activity API (only)

Multiparty Instant Messaging

Page 25: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

25

Features Exposed For RTMFeatures Exposed For RTM

Additional Features ExposedMultiparty Audio/Video Improved Audio/Video Audio/Video media APIs for more advanced apps Secure RTPFile Transfer Multiparty Application SharingUI Controls

Additional Features ExposedMultiparty Audio/Video Improved Audio/Video Audio/Video media APIs for more advanced apps Secure RTPFile Transfer Multiparty Application SharingUI Controls

Page 26: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

26

SummarySummary

Provide an extensible platform so developers can pick and choose building blocksYou don’t need to understand

SIP, SIMPLE, PINT, T.120, RTP, G.711, G.722.1, G.723.1, GSM, DVI4, SIREN, H.263, Acoustic Echo Cancellation, DirectX®, etc.

to write great presence-enabled collaboration applicationsWe want you to start developing solutions on top of our platformWe welcome feedback

Provide an extensible platform so developers can pick and choose building blocksYou don’t need to understand

SIP, SIMPLE, PINT, T.120, RTP, G.711, G.722.1, G.723.1, GSM, DVI4, SIREN, H.263, Acoustic Echo Cancellation, DirectX®, etc.

to write great presence-enabled collaboration applicationsWe want you to start developing solutions on top of our platformWe welcome feedback

Page 27: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

27

For More InformationFor More Information

Hands-on labs 402/403Ask the Experts

Tuesday 7 pm – 9 pm in Hall G,H

MSDNmsdn.microsoft.com/longhorn

Newsgroupmicrosoft.public.winfx.collaboration

Contact infoE-mail: [email protected]

Hands-on labs 402/403Ask the Experts

Tuesday 7 pm – 9 pm in Hall G,H

MSDNmsdn.microsoft.com/longhorn

Newsgroupmicrosoft.public.winfx.collaboration

Contact infoE-mail: [email protected]

Page 28: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

28

Related TalksRelated Talks

ARC382: Make Your Software Cooler and Your Life Easier the Next-Generation of Microsoft Networking TechnologiesWSV306: “Indigo”: Building Peer-to-Peer ApplicationsARC343: Introducing the “Longhorn” Identity SystemCLI310: People and Group Controls in Windows “Longhorn”: Enabling Applications for Collaboration and Data Sharing

ARC382: Make Your Software Cooler and Your Life Easier the Next-Generation of Microsoft Networking TechnologiesWSV306: “Indigo”: Building Peer-to-Peer ApplicationsARC343: Introducing the “Longhorn” Identity SystemCLI310: People and Group Controls in Windows “Longhorn”: Enabling Applications for Collaboration and Data Sharing

Page 29: 1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation slindsey@windows.microsoft.com Stephanie

29© 2003-2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.