Visual Studio.NET and.NET Compact Framework Application Development Mike D. Smith Group Program Manager Developer Division Microsoft Corporation
Agenda Design Goals Profiles and Extensions Class Library Architecture Base Class Libraries Networking and Web Services Creating a simple Web Service
Design Goals Compatibility Strict compatibility with.NET Framework Subset functionality Appropriateness Give the developer a known target Minimize arbitrary division Balance cross device with device specific Size / Functionality Support for Innovation Feature set evolution Device differentiation Security Standardization
Library Groupings Core Profile Platform Extension Libraries are grouped in two ways… Platform Extensions Core Profiles
Two Ways to Target.NET CF Core Profile Platform Extension Your App
Core Profiles Coherent collection of class libraries and underlying EE support Offered for any device, OS, CPU By Microsoft By Implementers from standards specs Basic foundation / reference starting point for building devices Enables broad range of scenarios and VS Project types “Broadest Reach / Lowest-Common Denominator” platform target for apps Platform Extensions Core Profiles
Kernel Profile Minimal language support Compact Profile Foundation profile for all connected devices Others to come TV Automotive … Core Profiles Platform Extensions
Coherent collection of class libraries Vendor and/or Device-specific Relies on one or more Core Profiles Value-add building block for devices (added atop Profiles) Enables more specialized range of scenarios and VS Project types “Targeted Reach / Deep Integration” platform target for apps Core Profiles Platform Extensions
Class Library Organization Namespace scoping mechanism System.IO.FileStream.Open() Profiles – System namespace only Extensions – Vendor namespace Namespace NamespaceClassMethod
Details: the Compact Profile Core Profiles Platform Extensions
Compact Profile Contents Minimal set of classes for device scenarios Support for.NET CF execution engine Effective functionality for resource- constrained devices Appropriate subset of.NET Framework System classes
Class Library Architecture Host operating system PAL Execution Engine Compact Profile Class Libraries Vendor ExtensionsApplication Native Code Managed Code Application
System System.DataSystem.Xml System.Web Globalization Text Security Collections Resources Reflection Net IO Threading Diagnostics ServiceProcess Configuration Design ADO SQLTypes SQL XPath XSLT Runtime InteropServices Remoting Serialization ConfigurationSessionState CachingSecurity Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.WinForms DesignComponentModel.NET Framework Namespace Reader/Writers
Base Data Types Signed and unsigned 8, 16, 32, and 64 bit integers System.Int16, System.UInt32,… Optional floating point Included in richer profiles, used appropriately Strings System.String, System.Text.StringBuilder Arrays System.Array Additional value types supported System.DateTime System.TimeSpan System.URI …
Input / Output Stream based I/O model Synchronous and Asynchronous .Read(), …,.BeginRead(), … Included Streams Files (System.IO.FileStream, …) Memory (System.IO.MemoryStream, …) Network (System.Net.NetworkStream, …) Readers and Writers High level stream processing Multiple / complex formats Helper classes Regular Expressions System.Text.RegularExpressions, …
Collections Mutable Arrays System.ArrayList Key-value pair data structures System.Hashtable All collections may be made strongly typed by following a well defined design pattern
Globalization Unicode implementation throughout Culture Globally selectable at runtime System.Globalization.CultureInfo String based resources for simple localization System.Resources Support for Retrieving Unicode information about a character System.Globalization.CharacterInfo.* Sorting strings based on specified culture Formatting of dates, currency and other data types Determined by current culture Overridable by System.Globalization.DateTimeFormatInfo
Networking Socket level support has full parity with.NET Framework Multi-protocol sockets HTTP client & server Web services client Connection management High level Request / Response model System.Net.{WebRequest,WebResponse} SSL Secure code download support
Reflection Convenient access to class/method meta-data System.Reflection.* Allows for late-binding and activation
Security Permission classes Control access to system resources File System Network Other resources Method level granularity Configurable Policy
XML Includes pull model XML parser Easy but powerful XML access System.XML.XMLTextReader System.XML.XMLTextWriter
Web Services Supports web services as defined by.NET Framework Remote stateless method calls with SOAP formatted XML over HTTP Allows for rich object based interoperability between all.NET platforms and SOAP compliant environments Seamless to use Uses client proxy code generated by Visual Studio.NET Based on open standards
Language access to Libraries The.NET Platform is Language Neutral All.NET languages are first class players Leverage your existing skills and code Access largest community of developers API access example [Generic] public virtual Int32 Read(Char[] buffer, Int32 index, Int32 count) [C#] public virtual int Read(Char[] buffer, int index, int count); [VB] Public Overridable Function Read(ByVal buffer() As char, ByVal index As Char, ByVal count as Char) As Integer [ECMAScript] public override function Read(buffer : char[], index : int, count : int) : int [Managed C] … [COBOL] …
Demo Multiple languages (VB, C#) Regular Expression handling Simple web service access System.Net.HTTPWebRequest Easy Deployment to the device
Details: Platform Extensions Core Profiles Platform Extensions
Platform Extension Examples OS-specific or Device/Model-specific .NET Extensions for MyCompany OS .NET Extensions for MyCompany Device Tradeoffs to consider: Pro: Increased depth of integration Pro: Increased amount of specialization Con: Reduced reach for apps Con: Reduce reach for Developers
Summary Class library design goals Developer and Tool Oriented View Profiles and Extensions Compact Profile overview Class library details Web services & demonstrations Platform Extension examples