“Indigo”: Building Peer-To-Peer Applications Todd R. Manion Program Manager Microsoft Corporation Todd R. Manion Program Manager.

Slides:



Advertisements
Similar presentations
P2P in Windows See-Mong Tan Microsoft Corporation.
Advertisements

Indigo Jonathan Turnbull Nick Cartwright Ivan Konontsev Chris Bright.
Reza hooshangi ( ). short history  One of the last major challenges for the web is to enable human communication via voice and video: Real Time.
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
1 Federating Identity and Authorization Across Organizations and Platforms Matthew Hur Lead Program Manager Microsoft Corporation
1 Introducing the “Longhorn” Identity System Stuart Kwan Product Unit Manager Microsoft Corporation Stuart Kwan
Chapter 13 Chapter 13: Managing Internet and Network Interoperability.
Module 1: Overview of the Microsoft.NET Framework.
SQL Server 2005 CLR Integration ADO.NET 2.0 Mike Taulty
1 Introducing ClickOnce: The New Application Deployment Model for Windows Forms and “Avalon” Jamie Cool Program Manager Microsoft.
SP2 Mikael Nystrom. Agenda Översikt Installation.
Building Rights Management Enabled Applications For Windows "Longhorn" Steve Bourne Chandramouli Venkatesh Microsoft Corporation Steve Bourne Chandramouli.
1 Programming Windows Help Shane McRoberts Group Program Manager Microsoft Corporation Shane McRoberts Group Program Manager Microsoft.
Plataformas.NET para desenvolvimento de aplicações web José António Silva
1 Introduction to.NET Framework. 2.NETFramework Internet COM+ Orchestration Orchestration Windows.NET Enterprise ServersBuildingBlockServices Visual Studio.NET.
Data Access Design Patterns: Navigating the Data Access Maze Michael Pizzo Software Architect Microsoft Corporation Michael Pizzo Software Architect Microsoft.
1 Using XSD, CLR Types, And Serialization In Web Services Doug Purdy Program Manager Microsoft Corporation Doug Purdy Program Manager.
Technology Overview. Agenda What’s New and Better in Windows Server 2003? Why Upgrade to Windows Server 2003 ?  From Windows NT 4.0  From Windows 2000.
1 Keyboard, Speech, and Pen Input in Your Controls Kevin Gjerstad Lead Program Manager Kevin Gjerstad Lead Program Manager
Chapter 6 Configuring Windows Server 2008 Printing
Assemblies & Namespaces1. 2 Assemblies (1).NET applications are represented by an assembly An assembly is a collection of all software of which the application.
Module 1: Overview of the Microsoft.NET Platform.
1 “Indigo”: Services And The Future Of Distributed Applications Don Box Architect Microsoft Corporation here –
1 Introduction to Microsoft Windows 2000 Windows 2000 Overview Windows 2000 Architecture Overview Windows 2000 Directory Services Overview Logging On to.
1.NET Framework Overview: A Road Map Brad Abrams.NET Framework Team Microsoft Corporation Brad Abrams.NET Framework.
.NET Enterprise Services COM+ 1.5 麥超俊 Bobby Mak 架構技術推廣經理開發工具暨平台推廣處台灣微軟股份有限公司.
“Indigo”: Connected Application Technology Roadmap
1 Application Model Fundamentals Chris Anderson Software Architect Microsoft Corporation Chris Anderson Software Architect Microsoft.
Developing P2P Applications Using Windows Vista And The Windows Communication Foundation (“Indigo”) PeerChannel Sandeep K. Singhal COM311 Product Unit.
OS Services And Networking Support Juan Wang Qi Pan Department of Computer Science Southeastern University August 1999.
Microsoft.Net Sven Groot. Common Language Runtime Superset of ECMA Common Language Infrastructure Defines  Language-neutral platform  Intermediate Language.
ADO.NET 2.0: Advanced Data Access Patterns Pablo Castro DAT408 ADO.NET Technical Lead Microsoft Corporation.
Intro to dot Net Dr. John Abraham UTPA CSCI 3327.
“Avalon”: Using UI Automation to Improve Application Testability Robert Sinclair Group Manager Microsoft Corporation Robert Sinclair.
Base Operating System Services CLR TransactionsStorage Protocols Network Services Kernel Mode Base Class Libraries Memory Manager Hosting Layer Code Execution.
MSG331 Exchange Server 2000/2003 Software Development Kit Susan Hill Lead Programmer Writer Microsoft Corporation.
A Demonstration of Collaborative Web Services and Peer-to-Peer Grids Minjun Wang Department of Electrical Engineering and Computer Science Syracuse University,
1 Integrating Real-time Collaboration into your Applications Stephanie Lindsey Program Manager Microsoft Corporation Stephanie.
1 Programming "Indigo" Part 2: Secure, Reliable, Transacted Services Session Code: WSV 302 Don Box Architect Microsoft Corporation
Chapter 3 Selecting the Technology. Agenda Internet Technology –Architecture –Protocol –ATM IT for E-business –Selection Criteria –Platform –Middleware.
1 Interop Best Practices and Common Pitfalls (That We Learned the Hard Way) Please write your name on a card in the back and place it in the box… Please.
NAMESPACE. Namespaces Namespaces are a way to define the classes and other types of information into one hierarchical structure. System is the basic namespace.
.NET Mobile Application Development XML Web Services.
SQL Server Notifications: Invalidating Cached Results Michael Pizzo Software Architect Microsoft Corporation Michael Pizzo Software.
Extending Workflow With Custom Activities Dennis Pilarinos COM328 Program Manager Microsoft Corporation.
1 Programming ADO.NET in Whidbey Pablo Castro/Brad Rhodes ADO.NET Team Microsoft Corporation Pablo Castro/Brad Rhodes.
Arizona SharePoint Professionals Group.
Jeremy Boyd - Intergen MSDN Regional Director Windows Vista Platform for the next generation of software.
Introducing the Microsoft® .NET Framework
Session Code: CLI312 Windows “Longhorn:” Enhancements For A Trustworthy Application Experience Jude Kavalam Group Program Manager Microsoft Corporation.
Using Audio, Video, and Imaging in your Longhorn Applications
System.Search, aka “Find My Stuff”
Peer-to-peer networking
Transactional Programming In A Windows World
Michael Wallent General Manager Windows Client Platform
Mobile Application Development 2005 By Sam Nasr July 25, 2006
Chapter 3: Windows7 Part 4.
“Whidbey” CLR Internals
11/17/2018 9:30 PM Session Code: ARC 420
Building Rich, Interactive Controls for Windows “Longhorn”
New User Interface Possibilities in Longhorn
"Avalon": Building Applications With Controls And Dialogs
Windows Server Administration Fundamentals
People And Groups Controls In Windows "Longhorn"
Exploiting WinFX from Win32/MFC Applications
Distributed Applications on Windows Vista
NAMESPACE.
Session Code: CLI391 Windows Forms: Exploiting Windows “Longhorn” Features from Within Your Application Mark Boulter .NET Client Team Microsoft Corporation.
New Tools In Education Minjun Wang
.NET Framework Design Goals
Presentation transcript:

“Indigo”: Building Peer-To-Peer Applications Todd R. Manion Program Manager Microsoft Corporation Todd R. Manion Program Manager Microsoft Corporation Session Code: WSV306

Agenda Overall Architecture Peer-to-Peer Landscape Why Something New? Design Guidelines Peer-to-Peer Technologies Code Walkthroughs Call to Action Overall Architecture Peer-to-Peer Landscape Why Something New? Design Guidelines Peer-to-Peer Technologies Code Walkthroughs Call to Action

Tools Client Application Model AvalonWindows Forms Web & Service Application Model ASP.NET / Indigo Win FS Compact Framework Yukon Mobile PC Optimized System.Help System.Drawing System.NaturalLanguageServices Data Systems Application Model Presentation Data Mobile PC & Devices Application Model Communication Command Line NT Service DataSet Mapping ObjectSpaces ObjectSpace Query Schema Item Relationship Media Audio Video Images System.Messaging System. Discovery System.DirectoryServices System.Remoting System.Runtime.Remoting Active Directory Uddi System.Web.Services Web.Service Description Discovery Protocols System.MessageBus Transport Port Channel Service Queue PubSub Router System.Timers System.Globalization System.Serialization System.Threading System.Text System.Design Base & Application Services Fundamentals System.ComponentModel System.CodeDom System.Reflection System.EnterpriseServices System.Transactions Security System.Windows. TrustManagement System.Web. Security System.Message Bus.Security Authorization AccessControl Credentials Cryptography System.Web.Configuration System.MessageBus.Configuration System.Configuration System.Resources System.Management System.Deployment System.Diagnostics ConfigurationDeployment/Management System.Windows System.Windows.Forms System.Console System.ServiceProcess System.Windows.Forms System.Web System.Storage System.Data.SqlServer Animation Controls Control Design Panel Controls Dialogs SideBar Notification System.Windows Documents Text Element Shapes Shape Ink UI Element Explorer Media System.Windows.Forms Forms Control Print Dialog Design System.Web.UI Page Control HtmlControls MobileControls WebControls Adaptors Design Ports InteropServices System.Runtime System.IO System.Collections Generic System.Search Annotations Monitoring Logging Relevance System.Data SqlClient SqlTypes SqlXML OdbcClient OleDbClient OracleClient Core Contact Location Message Document Event System.Storage System.Web Personalization Caching SessionState System.Xml Schema Serialization Xpath Query Permissions Policy Principal Token System.Security System.Collaboration RealTimeEndpoint TransientDataSession SignalingSession Media Activities HttpWebRequest FtpWebListener SslClientStream WebClient System.Net NetworkInformation PeerIdentity Pnrp System.Web Administration Management Navigation Peer Store Policy Serialization CompilerServices Recognition System.Speech Synthesis

Base Operating System Services CLR Transactions Storage Protocols Network Services Kernel Mode Base Class Libraries Memory Manager Hosting Layer Code Execution Loader Security Serialization Lightweight Transactions Lightweight Transactions Transaction Coordinator Kernel Transaction Manager Common Logging File System Transacted File System Kernel Hardware Abstraction Layer Process Manager Process Manager Security Reference Monitor LPC Facility Memory Manager Power Manager Config. Manager Plug and Play File System Cache NTFS FAT 16/32 Filter Engine Filter Engine TPC, UDP IPV4, IPV6 TPC, UDP IPV4, IPV6 IPSEC QOS HTTP Listener HTTP Listener Internet Connection Firewall Demand Activation and Protocol Health PNRP Native WiFi Native WiFi SIP TCP Listener UDP Listener IPC Listener Network Class Library GDI/GDI+ Window Manager Window Manager Global Audio Engine Global Audio Engine DirectX Graphics Graphics drivers DDI Input Manager Input Manager Audio Drivers Audio Drivers DirectX Graphics Mini port DirectX Graphics Mini port Redirectors Device and File System Drivers Management PresentationData Communication WinFSIndigo Make the connection Windows Forms Avalon ASP.NET ObjectSpaces DataSet SQL XML Providers Framework Models Services Schemas Data Model ADO.NET Connectivity Synchronization (WinFS, Win32..) InfoAgent (PreferenceRules..) InfoAgent (PreferenceRules..) FileSystem Services (MetaDataHandlers..) FileSystem Services (MetaDataHandlers..) Exchange Media Document … … Items Relationships Extensions Communications Manager (Port) Service Object T/SQL XML Services Transport Channels (IPC, HTTP, TCP…) Transport Channels (IPC, HTTP, TCP…) Channels (Datagram, Reliable, Peer, …) Policy Engine Policy Engine Message Encoder Message Encoder Channel Security Channel Security Queue Topic Router Transaction Document UI Media Desktop Services Desktop Window Manager Desktop Window Manager Presentation Object Manager Desktop Composition Engine Desktop Composition Engine Animation and Composition Media Services Hardware Rendering Hardware Rendering Media Processing Capture and Sourcing Capture and Sourcing Software Rendering and Sinks Software Rendering and Sinks Adaptive UI Engine Adaptive UI Engine Page/Site Composition Personalization and Profiling Services Personalization and Profiling Services Membership and Security Services Membership and Security Services Designer Services Designer Services Controls Interop Engine Controls Interop Engine Controls Windows Forms Application Services Application Services Application Deployment Engine (Click-Once) Application Deployment Engine (Click-Once) IO Manager People Group Identity & Security System Identity & Security System Collaboration People Group Controls (Chat, …) Controls (Chat, …) Signaling Federation Servers

Network Class Library Internet Connection Firewall Demand Activation and Process Health - IIS PNRP Native WiFi TCP Listener SIP UDP Listener IPC Listener Network Services CLR Serialization Kernel Mode Framework Protocols Filter Engine TCP, UDP IPV4, IPV6 QOS IPSEC HTTP Listener IO Manager Device and File System Drivers … … … … Connector Communications Manager (Port) Transport Channels (IPC, HTTP, TCP…) Transport Channels (IPC, HTTP, TCP…) Channels (Datagram, Reliable, Peer, …) Policy Engine Message Encoder Channel Security Hosting Environments ASP.NET.container.exe NT Service DllHost Router Topic … … Transactions Federation … … Service Model Instance Manager Context Manager Type Integration Service Methods PeerStore … … Queue Indigo Identity and Security System Identity and Security System Transactions Messaging Services System Services

Peer-To-Peer Landscape Collaboration Project workspaces solving a goal Sharing your files with other people Content Distribution Concert, company meeting, class Distribution of product updates Real-Time Communications Instant messaging, voice, video Real-time game play/collaboration Distributed Processing Dissection and distribution of task Improved Internet Technologies Collaboration Project workspaces solving a goal Sharing your files with other people Content Distribution Concert, company meeting, class Distribution of product updates Real-Time Communications Instant messaging, voice, video Real-time game play/collaboration Distributed Processing Dissection and distribution of task Improved Internet Technologies

Why Something New? Limited Supply of Public Addresses NATs Prevent Sharing from the Edge Limited Name Resolution System Does not handle dynamic addresses Does not work in ad-hoc environments Does not lend itself to consumer use Inefficient Multipoint Communication Everyone Rewrites the Infrastructure Limited Supply of Public Addresses NATs Prevent Sharing from the Edge Limited Name Resolution System Does not handle dynamic addresses Does not work in ad-hoc environments Does not lend itself to consumer use Inefficient Multipoint Communication Everyone Rewrites the Infrastructure

Infrastructure Design Goals Secure, robust in face of failure/attack Scalable, from ad-hoc to the Internet Serverless, no central point of failure Self-tuning, adapts to constant change Self-repairing, automatically fixes itself Secure, robust in face of failure/attack Scalable, from ad-hoc to the Internet Serverless, no central point of failure Self-tuning, adapts to constant change Self-repairing, automatically fixes itself

Peer-To-Peer Technologies Peer Name Resolution Protocol (PNRP) Scalable, secure, serverless name resolution "Indigo" PeerChannel Efficient distribution of information between nodes Auto-tuning, self-repairing communication layer Peer Groups Create and manage persistent securable groups Peer Store* Distributed data management Synchronized, replicated meta-data store * Built using WinFS in Longhorn Peer Name Resolution Protocol (PNRP) Scalable, secure, serverless name resolution "Indigo" PeerChannel Efficient distribution of information between nodes Auto-tuning, self-repairing communication layer Peer Groups Create and manage persistent securable groups Peer Store* Distributed data management Synchronized, replicated meta-data store * Built using WinFS in Longhorn

Code Walkthroughs Name Resolution (PNRP) "Indigo" PeerChannel Peer Group and Peer Store Name Resolution (PNRP) "Indigo" PeerChannel Peer Group and Peer Store

Code Walkthroughs Name Resolution (PNRP) Create, Register, and Resolve a PnrpEndPoint "Indigo" PeerChannel Peer Group and Peer Store Name Resolution (PNRP) Create, Register, and Resolve a PnrpEndPoint "Indigo" PeerChannel Peer Group and Peer Store

Register/Resolve In PNRP

Name Registration/Resolution Members of System.Net.PeerToPeer Major Objects PeerName PeerIdentity PnrpEndPoint PnrpEndPointRegistration PnrpEndPointResolver Cloud/CloudWatcher Available in Longhorn PDC Preview Members of System.Net.PeerToPeer Major Objects PeerName PeerIdentity PnrpEndPoint PnrpEndPointRegistration PnrpEndPointResolver Cloud/CloudWatcher Available in Longhorn PDC Preview

PnrpEndPointRegistration PnrpEndPointRegistration reg = new PnrpEndPointRegistration(); … private void RegisterInPnrp(IPEndPoint[] myEndPoints) { PeerName peerName = new PeerName(“0.ToddAtThePDC”); PnrpEndPoint endPoint = new PnrpEndPoint(peerName, myEndPoints); reg.PnrpEndPoint = endPoint; reg.Cloud = CloudWatcher.GetGlobalCloud(); reg.Register(); }

PnrpEndPointResolver PnrpEndPointResolver resolver = new PnrpEndPointResolver(); … private void ResolveInPnrp() { // Retrieve the settings and fill out the resolver properties. resolver.PeerName = new PeerName(“0.ToddAtThePDC”); resolver.Cloud = CloudWatcher.GetGlobalCloud(); resolver.MaxResults = 1; resolver.TimeOut = new TimeSpan(0, 0, 30); List results = resolver.Resolve(); //Show the address of the resolved PeerName. if (results.Count > 0) MessageBox.Show(results[0].IPEndPoints[0].ToString()); }

Code Walkthroughs Name Resolution (PNRP) “Indigo” PeerChannel Create a PeerManager and channel Accept a new PeerChannel Send/Receive transient data via PeerChannel PeerGroup and PeerStore Name Resolution (PNRP) “Indigo” PeerChannel Create a PeerManager and channel Accept a new PeerChannel Send/Receive transient data via PeerChannel PeerGroup and PeerStore

“Indigo” PeerChannel Chat

“Indigo” PeerChannel Major Objects PeerChannel PeerManager Node Message Port Available in future Longhorn release Major Objects PeerChannel PeerManager Node Message Port Available in future Longhorn release

Create A PeerChannel PeerManager peerMgr = new PeerManager(); PeerChannel myChannel; … private void InitPeerManager() { peerMgr.PeerRequested = new PeerRequestedEventHandler(this.MyPeerRequestedHandler); } //Uri = “tcp.p2p://demo.microsoft.com:10000/demoLocalChannelId” private void CreatePeerChannel(Uri peerUri) { myChannel = peerMgr.CreateChannel(peerUri); } private void MyPeerRequestedHandler(object sender, PeerRequestedEventArgs e) { … }

Accepting A PeerChannel PeerManager incomingMgr = new PeerManager(); PeerChannel incomingPeer; … private void MyPeerRequestedHandler(object sender, PeerRequestedEventArgs e) { incomingPeer = incomingMgr.AcceptPeer(e.Message); } private void DisplayChannelNodes() { listNodes.Items.Clear(); foreach(Node n in incomingPeer.Nodes) { ListViewItem lvi = new ListViewItem(n.FriendlyName); lvi.Tag = n.Id; listNodes.Items.Add(lvi); }

Send A Message // Uri = “tcp.p2p://demo.microsoft.com:10000/demoRemoteChannelId” private void SendChatMessage(Uri destination, string text) { Message msg = new Message(destination); msg.Body = text; myChannel.Send(msg); }

Receive A Message private void ReceiveChatMessage() { Message msg = incomingPeer.Receive(); textBoxMessages.AppendText((string) msg.Data + “\r\n”); }

Code Walkthroughs Name Resolution (PNRP) “Indigo” PeerChannel Peer Group and Peer Store Open, connect, enumerate members Add/Retrieve data to/from peer store Name Resolution (PNRP) “Indigo” PeerChannel Peer Group and Peer Store Open, connect, enumerate members Add/Retrieve data to/from peer store

Group Photo Album

PeerStore And PeerGroup Major Objects PeerIdentity PeerGroup Member PeerStore Record PeerGroupInfo PeerStore built with WinFS in Longhorn Major Objects PeerIdentity PeerGroup Member PeerStore Record PeerGroupInfo PeerStore built with WinFS in Longhorn

Open, Connect, Enumerate Members PeerIdentity myIdentity; PeerGroup myGroup;... private void ConnectToFirstGroup() { List identities = PeerIdentity.GetIdentities(); myIdentity = identities[0]; List myGroups = PeerGroup.GetGroups(myIdentity); myGroup = PeerGroup(myGroups[0]); myGroup.Connect(); } private void DisplayMembers() { List members = myGroup.GetMembers(); foreach(Member m in members) { listMembers.Items.Add(m); }

Add Data To Group private void AddPictureRecord(string fileName) { PeerRecord record = new PeerRecord(pictureGuid,DateTime.Now.AddDays(1)); record.Data = GetImageDataFromFile(fileName); record.MetadataCollection.Add( new PeerRecordMetadata("FriendlyName",fileName)); myGroup.PeerStore.AddRecord(record); }

Retrieve Data From Group public void GetPictureList() { listRecords.Items.Clear(); foreach (PeerRecord record in myGroup.Store.GetRecords(pictureGuid)) { string strId = record.Id.ToString(); ListViewItem lvi = new ListViewItem(strId); lvi.Tag = record.Id; lvi.SubItems.Add( record.MetadataCollection["FriendlyName"].ToString()); listRecords.Items.Add(lvi); }

Corel Grafigo 2 Daniel Jette Software Design Engineer Corel Corporation Daniel Jette Software Design Engineer Corel Corporation

Summary Technology Offerings Scalable, secure, serverless name resolution Efficient, self-repairing “Indigo” PeerChannel Securable, persistent PeerGroup service Distributed data management via PeerStore Developers free to focus on application Integrated, consistent managed API “Indigo” in PDC Preview PNRP, PeerIdentity in PDC Preview Technology Offerings Scalable, secure, serverless name resolution Efficient, self-repairing “Indigo” PeerChannel Securable, persistent PeerGroup service Distributed data management via PeerStore Developers free to focus on application Integrated, consistent managed API “Indigo” in PDC Preview PNRP, PeerIdentity in PDC Preview

Call To Action Think Connectivity and Collaboration! Don’t Wait! Utilize Peer-to-Peer v1.0 today V1.0 runtime and Win32 APIs are available via Windows Update Utilize “Indigo” bits in PDC Preview Get More Information Whitepaper on PDC bits DVD Think Connectivity and Collaboration! Don’t Wait! Utilize Peer-to-Peer v1.0 today V1.0 runtime and Win32 APIs are available via Windows Update Utilize “Indigo” bits in PDC Preview Get More Information Whitepaper on PDC bits DVD

For More Information Come see me Immediately after this session Web Services Booth/Lounge: 309 Foyer MSDN “Longhorn” DevCenter Newsgroups microsoft.public.windows.developer.winfx.indigo microsoft.public.win32.programmer.networks At PDC Hands on labs: On-site or download on CommNet PDC Weblogs: Come see me Immediately after this session Web Services Booth/Lounge: 309 Foyer MSDN “Longhorn” DevCenter Newsgroups microsoft.public.windows.developer.winfx.indigo microsoft.public.win32.programmer.networks At PDC Hands on labs: On-site or download on CommNet PDC Weblogs: