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






Size / Functionality
Support for Innovation


Minimize arbitrary division
Balance cross device with device specific
Feature set evolution
Device differentiation
Security
Standardization
Library Groupings

Libraries are grouped in two ways…


Platform Extensions
Core Profiles
Platform
Extension
Core Profile
Two Ways to Target .NET CF
Your
App
Platform
Extension
Core Profile
Core Profiles
Platform
Extensions
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
Core Profiles

Kernel Profile


Core Profiles
Minimal language support
Compact Profile


Platform
Extensions
Foundation profile for all connected
devices
Others to come



TV
Automotive
…
Platform Extensions
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
Class Library Organization

Namespace scoping mechanism

System.IO.FileStream.Open()
Namespace


Class
Method
Profiles – System namespace only
Extensions – Vendor namespace
Platform
Extensions
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 resourceconstrained devices
Appropriate subset of .NET Framework
System classes
Class Library Architecture
Application
Vendor Extensions
Application
Compact Profile Class Libraries
Execution Engine
PAL
Host operating system
Managed Code
Native Code
.NET Framework Namespace
System.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.WinForms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Serialization
Design
SQLTypes
XPath
Reader/Writers
System
Collections
IO
Configuration
Security
Net
ServiceProcess
Runtime
InteropServices
Text
Reflection
Diagnostics
Remoting
Globalization
Resources
Threading
Serialization
Base Data Types

Signed and unsigned 8, 16, 32, and 64 bit
integers


Optional floating point


System.String, System.Text.StringBuilder
Arrays


Included in richer profiles, used appropriately
Strings


System.Int16, System.UInt32,…
System.Array
Additional value types supported




System.DateTime
System.TimeSpan
System.URI
…
Input / Output

Stream based I/O model

Synchronous and Asynchronous


Included Streams




Files (System.IO.FileStream, …)
Memory (System.IO.MemoryStream, …)
Network (System.Net.NetworkStream, …)
Readers and Writers



<stream>.Read(), …, <stream>.BeginRead(), …
High level stream processing
Multiple / complex formats
Helper classes

Regular Expressions
System.Text.RegularExpressions, …
Collections

Mutable Arrays


Key-value pair data structures


System.ArrayList
System.Hashtable
All collections may be made strongly typed
by following a well defined design pattern
Globalization


Unicode implementation throughout
Culture



String based resources for simple localization


Globally selectable at runtime
System.Globalization.CultureInfo
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





High level Request / Response model



Multi-protocol sockets
HTTP client & server
Web services client
Connection management
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
Platform
Extensions
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
Descargar

.NET Compact Framework