580 likes | 720 Views
.NET Laying the groundwork for the next generation of Internet applications Dan Fay Microsoft Research University Relations. danf @microsoft.com. What is .NET?. A domain name extension? A Brand? .net = C#? A vision? Set of technologies?. Agenda. Evolution Web Services .NET Vision
E N D
.NET Laying the groundwork for the next generation of Internet applicationsDan FayMicrosoft ResearchUniversity Relations danf@microsoft.com
What is .NET? • A domain name extension? • A Brand? • .net = C#? • A vision? • Set of technologies?
Agenda • Evolution • Web Services • .NET Vision • .NET Platform Architecture • Common Language Runtime • ASP.NET • .NET Compact Framework
Evolution of the Internet • 1st Generation: 1994 – 1996 • Infrastructure • Static Pages • E-mail • Browsers, Web Servers • 2nd Generation: 1996 – 2000 • Dynamic Pages • Personalization, e-commerce • Applets, Databases
The Future of the Internet • 3rd Generation • Beyond Browsing • Integration of Internet • Web Services • XML
The .NET Evolution Application Code and data structures Before COM, CORBA, etc applications were completely separate entities with little or no integration
The .NET Evolution COM provides a way for components to integrate. However, each component must provide the “plumbing” and objects cannot directly interact.
The .NET Evolution With the .NET Framework common language runtime, components are built on a common substrate. No “plumbing” is needed; objects can directly interact
Microsoft’s Vision • People will use many different kinds of devices • Information will be accessible from anywhere • Information will stay in digital form • Companies will offer services via the web
Open Standards • .NET is based on open Internet standards • HTTP, HTML, XML, SOAP, WSDL WWW Consortium • .NET itself is an open standard • ECMA - http://www.ECMA.ch • ECMA 335 - “Common Language Infrastructure” All core .NET Framework Protocols, Formats, & Interfaces • ECMA 334 – C# Language Specification • UDDI: Directory for web services • Co-Sponsors with Microsoft - HP, Intel, IBM, Ariba…
Shared Source Implementation of the CLI (ROtOR) • source and binaries • ref implementation of ECMA specs • includes C# & JScript compilers • subset of the V1 .Net Frameworks • on both Windows and FreeBSD • intended for teaching and research • liberal license, no tainting • available first half of 2002
The Web Services RevolutionA New Programming Paradigm • Integration Is Intrinsic • An industry initiative • Based on cross-platform standards • Data and services • Software As A Service • Operate locally or hosted • Programmability • Any place, any time, any device
Web Service Web Service Web Service Database
Web Service Web Service XML XML XML XML XML Web Application Web Service “Building Block Services” Client Client XML .NET Applications HTML
Student Data Course Catalog XML XML XML XML XML University Portal Search Service “Building Block Services” Client Client XML .NET Applications HTML
Web Service Open Internet Protocols • You can ask a site or device for a description of its Web Services, or use a directory service such as UDDI UDDI Web Services Description Language • Web Services are defined in terms of the formats and ordering of messages SOAP • Web Service consumers can send and receive messages using SOAP XML, HTTP • All these capabilities are built using open Internet protocols What is a Web Service? A programmable application component accessible via standard Internet protocols
Creating Web Services • ASP.NET • Easiest way to create web services • SOAP Toolkit V2 (VS6) – MSDN • http://msdn.microsoft.com/webservices/ • SOAP Toolkits for • Apache - http://xml.apache.org/soap/ • XMethods http://www.xmethods.net • …
Web Services • Example Services • MIT – www.devhood.com • TerraServer – terraservice.net • List of Web Services • www.Uddi.org • www.XMethods.net • www.GotDotNet.com • www.SalCentral.com • www.Microsoft.com/MyServices • Web Services Competition www.webservicescontest.com
User: Beyond browsing Access and act on information Greater control, better decision-making, easier collaboration Optimal support for different devices Benefits Of XML Foundation Business: Integrationby design • Best-of-breed internally and externally • Business processes and partners • Agility to run, adapt business better Industry: New opportunities • Don’t have to do it all yourself • Make your value easier to consume • “Plug and play” business relationships
Tools Enterprise Servers Building Block Services Devices
Tools .NET Framework Visual Studio.NET Enterprise Servers .NET Foundation Services Identity Notification Storage Devices .NET Compact FW
Microsoft .NET A Software Platform for XML Web Services • Bring distributed computing to the Internet • Spans clients, servers and services • Consistent programming model • Interoperable via XML Web Services • Key capabilities • Deliver software as a service • Integration becomes intrinsic • Enable smart, service-aware systems • New, richer user experiences • The .NET Framework is the programming-model substrate for the .NET vision
.NET Framework • Unified programming model • Delivers XML Web Services • Spans clients, servers, services • Improved developer productivity • Design time support • Focus on business logic, not plumbing • Simplified deployment and maintenance • Great performance • Intense focus on security
Inside the .NET Framework VB C++ C# J# Python … ASP.NET High-productivity environment for building and running Web services Web Services User Interface ASP.NET Data and XML Base Framework • Secure, integrated class libraries • Unifies programming models across languages • Enables cross-language integration • Factored for extensibility • Designed for tools Common Language Runtime (CLR) Operating System Common Language Runtime Executes code, maintains security, handles component “plumbing” and dependencies
Visual Studio .NET .NET Framework Communication Protocols XML, SOAP, HTTP, HTML Common Language Runtime • Manages running code • Threading • Memory management • Fine-grained evidence-based security • Code access security • Role-based security • Integrated with underlying OS • No-touch deployment • Object remoting with SOAP
One Runtime For All Languages • CLR is an open standard • Any language can make use of CLR services • Any language can use classes written in any other language (consumer) • Any language can (code) inherit classes written in any other language (extender) • A language can become a provider
Current List of Languages lcc (MS Research Redmond) Mondrian (Utrecht) ML (MS Research Cambridge) Mercury (Melbourne U.) Oberon (Zurich University) Oz (Univ of Saarlandes) Perl Python Scheme (Northwestern U.) SmallTalk Ada APL Basic (Visual Basic) C# C C++ COBOL Component Pascal(Queensland Univ of Tech) ECMAScript (JScript) Eiffel (Monash University) Haskell (Utrecht University) Java Language
Broad Language Support VB.NET Dim s as String s = "authors" Dim cmd As New SqlCommand("select * from " & s, sqlconn) cmd.ExecuteReader() C# string s = "authors"; SqlCommand cmd = new SqlCommand("select * from "+s, sqlconn); cmd.ExecuteReader(); C++ String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat(S"select * from ", s), sqlconn); cmd.ExecuteReader();
Broad Language Support J# String s = "authors"; SqlCommand cmd = new SqlCommand("select * from "+s, sqlconn); cmd.ExecuteReader();
Broad Language Support var s = "authors" var cmd = new SqlCommand("select * from " + s, sqlconn) cmd.ExecuteReader() JScript Perl String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat(S"select * from ", s), sqlconn); cmd.ExecuteReader(); Python s = "authors" cmd =SqlCommand("select * from " + s, sqlconn) cmd.ExecuteReader()
ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. CLASS SqlCommand AS "System.Data.SqlClient.SqlCommand" CLASS SqlConnection AS "System.Data.SqlClient.SqlConnection". DATA DIVISION. WORKING-STORAGE SECTION. 01 str PIC X(50). 01 cmd-string PIC X(50). 01 cmd OBJECT REFERENCE SqlCommand. 01 sqlconn OBJECT REFERENCE SqlConnection. PROCEDURE DIVISION. *> Establish the SQL connection here somewhere. MOVE "authors" TO str. STRING "select * from " DELIMITED BY SIZE, str DELIMITED BY " " INTO cmd-string. INVOKE SqlCommand "NEW" USING BY VALUE cmd-string sqlconn RETURNING cmd. INVOKE cmd "ExecuteReader". Cobol Broad Language Support
Broad Language Support RPG DclFld MyInstObj Type( System.Data.SqlClient.SqlCommand ) DclFld s Type( *string ) s = "authors" MyInstObj = New System.Data.SqlClient.SqlCommand("select * from "+s, sqlconn) MyInstObj.ExecuteReader() Fortran assembly_external(name="System.Data.SqlClient.SqlCommand") sqlcmdcharacter*10 xsqlcmd Cmd x='authors' cmd = sqlcmd("select * from "//x, sqlconn) call cmd.ExecuteReader() end
APL Broad Language Support s←String.New ‘authors’ cmd←SqlCommand.New (‘select * from ‘,s.ToString σ) sqlconn cmd.ExecuteReader |s| := 'authors'. |cmd| := SqlCommand('select * from '+s, sqlconn). cmd.ExecuteReader(). Smalltalk
Broad Language Support Scheme (let* ( (s "authors") (cmd (new-SqlCommand (string-append "select * from " s) sqlconn))) (execute-command cmd)) local s: STRING cmd: SQLCOMMAND do s := "authors" create cmd("select * from " + s, sqlconn) cmd.ExecuteReader() end Eiffel ExecuteReader = invoke System.Data.SqlClient.ExecuteReader(); SqlCommand = create System.Data.SqlClient.SqlCommand(String,\ System.Data.SqlClient.SqlConnection); query = sqlconn -> let{ s = "authors"; } in { cmd <- SqlCommand ("select * from "+s, sqlconn); cmd # ExecuteReader(); }; Mondrian
Compiler Assembly Common Language Runtime DEVELOPMENT public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Source code C# J# VB Cobol … MSIL Metadata Resources
DEVELOPMENT DEVELOPMENT public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } GlobalAssemblyCache (GAC) public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Compiler Assembly Assembly Source code C# J# VB Cobol … MSIL Metadata Resources ApplicationDirectory Download Cache Install Common Language Runtime DEPLOYMENT Setup Copy Browser
DEVELOPMENT Assemblyon Target Machine GlobalAssemblyCache (GAC) Assembly Setup Copy Browser ApplicationDirectory Class Loader Security Assembly Loader IL to NativeCompiler Download Cache Garbage Collection Code Manager Exception Manager Native .exe + GC table Thread Support COM Interop Install Debug Engine Common Language Runtime DEPLOYMENT Policy <?xml version="1.0" encoding="utf-8" ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" EXECUTION
.NET For Devices • Same programming model • Same set of tools • Same application architectures rich client rich web
Visual Studio .NET Mobile Internet Toolkit Rich Web Applications rich web code on server • Over 75 device models
Web Services Web Forms Mobile Internet Toolkit Extends ASP.NET to mobile device web browsers ASP.NET Windows Forms Visual Studio .NET Extends VS.NET to build mobile forms and controls Base Classes Common Language Runtime
Mobile Internet Toolkit Benefits • Richest user experience • Adaptive mobile web applications • Leverage full browser capabilities • Customizable and extensible framework • End-to-end integration • Clients, Server and Services • Best developer productivity • Single code base • Great designer and emulator support
Rich Client Applications Today: • eMbedded Visual Tools New with .NET: • Smart Device Extensions for Visual Studio .NET • .NET Compact Framework rich client code on device
Platform And Tools .NET Compact Framework • Lightweight architecture • Compatible feature subset • Broad availability Windows Forms ASP.NET Web Forms Web Services Mobile Internet Toolkit Smart Device Extensions for Visual Studio .NET • VC#, VB .NET • Designers • RAD for devices ADO.NET and XML Visual Studio .NET Base Class Library Common Language Runtime
.NET Compact Framework Benefits • Richest user experience • Local intelligence and data • Online and offline • Leverage full capabilities of device • End-to-end integration • Clients, Server and Services • Best developer productivity • Languages, Tools, Platform • Skills transfer Scalable Architecture
Visual Studio.NET • “Drag and Drop” Web application and services development • Fully supports .NET Framework • Multi-language support • Open, extensible development environment • Languages focus on compiler – not UI • Consistent set of tools across languages
Opportunities Students • Use C# or any .NET programming language • Create new Languages and Compilers Target CLR/IL • Create Peer-to-Peer Apps • Expose Web Sites via Web Services
Opportunities Research • Languages • Distributed Computing • Security • Mobile Devices/Ubiquitous Computing Curriculum • Intro to Programming • Compilers • Database • Software Engineering • Embedded Devices • others Courses Currently at: • Yale, Arizona, MIT, Indiana Univ, BU, Monash, ETH Zurich, etc.
Summary • .NET Framework enables a new generation of distributed web applications and services • A leap forward in developer productivity • Improved operations • Deep integration • .NET is open • Open protocols are the core building block • Standardization is a key tenet • .NET is about all kinds of computing devices • Common framework, consistent paradigm • Apps and platform are portable, adaptable • Devices grow richer by adding secure code • Devices plug natively into Web Services