290 likes | 498 Views
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
E N D
Visual Studio.NET and .NET Compact Framework Application Development Mike D. SmithGroup Program ManagerDeveloper 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 • Libraries are grouped in two ways… • Platform Extensions • Core Profiles PlatformExtension Core Profile
Your App Two Ways to Target .NET CF PlatformExtension Core Profile
PlatformExtensions Core Profiles 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
PlatformExtensions Core Profiles Core Profiles • Kernel Profile • Minimal language support • Compact Profile • Foundation profile for all connected devices • Others to come • TV • Automotive • …
PlatformExtensions Platform Extensions Core Profiles • 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
Namespace scoping mechanism System.IO.FileStream.Open() Profiles – System namespace only Extensions – Vendor namespace Namespace Class Method Class Library Organization
PlatformExtensions Core Profiles Details: the Compact Profile
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 Application Vendor Extensions Application Compact Profile Class Libraries Execution Engine PAL Managed Code Native Code Host operating system
.NET Framework Namespace System.Web System.WinForms Services UI Design ComponentModel Description HtmlControls Discovery WebControls Protocols System.Drawing Caching Security Drawing2D Printing Text Configuration SessionState Imaging System.Data System.Xml ADO SQL XSLT Serialization Reader/Writers Design SQLTypes XPath System Collections IO Configuration Runtime InteropServices Security Net ServiceProcess Remoting Text Reflection Diagnostics Serialization Globalization Resources Threading
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 • <stream>.Read(), …, <stream>.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
PlatformExtensions Core Profiles Details: 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