.NET Compact Framework - 3GPP

basiliskcanoeSoftware and s/w Development

Nov 2, 2013 (3 years and 7 months ago)

66 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


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

Core Profiles


Kernel Profile


Minimal language support


Compact Profile


Foundation profile for all connected
devices


Others to come


TV


Automotive




Core Profiles

Platform

Extensions

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

Class

Method

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 Extensions

Application

Native Code

Managed Code

Application

System

System.Data

System.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

Serialization

Configuration

SessionState

Caching


Security

Services

Description

Discovery

Protocols

UI

HtmlControls

WebControls

System.Drawing

Imaging

Drawing2D


Text

Printing

System.WinForms

Design


ComponentModel

.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


<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

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