.NETcf : from the trenches

computerharpySoftware and s/w Development

Dec 2, 2013 (3 years and 9 months ago)

81 views

1

Compact Framework

.NETcf : from the trenches

casey chesnut

brains
-
N
-
brawn.com

12/15/2003



Harvard

for David Platt’s .NET class

2

Questions


Language


C#, VB .NET, C++, Java


At work


.NET, .NETcf


CE

3

Experience


Web Services


Compact Framework


Tablet PC


Speech .NET

4

Compact Framework


Mappoint .NET Client


LBS


GPS, MapPoint, SQL NS, MSN Mess.


Signature Biometric


Speech Recognition


DIME & SAPI WS


Managed DirectPlay Wrapper for PPC


ASP.NET
-
like Web Service server


Port of a 75K

> 100K line WS app


~20 web services, ~175 web methods


Cryptography and Client
-
side WSE

5

Agenda


[ Keith Pleas Intro. ]


[ SmartPhone and WSE article? ]


What is missing


How to get it back


Where we are now


Futures


Resources

6

What Is Missing


Assemblies


Namespaces


Types


Events


Properties


Methods


Overloads


Behavior

.NETfx versus .NETcf

System


System.Data

System.Xml

System.Web

Globalization

Text

* Security

Collections

Resources

Reflection

Net

IO

* Threading

* Diagnostics

ServiceProcess

Configuration

Design

ADO.NET

SqlServerCe

SqlClient

Xslt/XPath

XmlDocument

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

Reader/Writers

8

Metrics


.NETfx


Types: 4,753


Methods: 80,277


.NETcf


Types: 1,360


Methods: 18,701

* mscorlib, system, system.data, system.drawing,
system.windows.forms, system.xml

* .NETcf adds SqlCe and IRDA namespaces

9

Examples


Typed DataSets (.xsd)


Resource files (.resx)


Hardcoded strings


Registry keys


Environment variables


File paths


Types


Sealed


Partial implementations

10

Examples


pInvoke


Unicode


MarshalAs


FieldOffset


Missing or different DLLs


Missing or different OS features


WMI


Hosts


Updating controls from thread


Bugs

11

How To Get It Back


Open source efforts


3
rd

party controls


pInvoke


CE .NET Win32 APIs


eVC++ thunk layer


Write the logic yourself

12

Open Source


go
-
mono.org


“Effort to create an open source implementation of
the .NET Development Framework”


Not intended for CE


Be aware of licensing


ssCli / Rotor


MS initiative


Academic licensing only


Port to CE .NET underway

13

OpenNetCF.org


Smart Device Framework (~January 2004)


Audio recording and playback, serial
communication, registry and clock
manipulation, notifications, environment
setting, extended marshaler


10 controls with designer support: Button,
CheckBox, GroupBox, ColorDialog, LinkLabel,
StatusBar, owner
-
drawn ListBox and
SignatureCapture control

14

3
rd

party controls


Odyssey CfCom


InstallShield Developer Mobile Edition


Preemptive Dotfuscator


/n Software’s IP*Works for CF


ComponentOne Studio for Mobile Devices


Xceed Zip for .NETcf


IntelliProg UI controls


HP thumbprint biometric

15

pInvoke


VB .NET cant do unsafe


Call C# library if necessary


Only 32
-
bit blittable types


Pass by ref


Strings


unicode only, use StringBuilder


No callbacks from native code


MessageWindow


Make blocking call into native code

16

pInvoke


coredll.dll has 1600 functions


Cant handle nested structures


Flatten into byte arrays


Manually marshal


Managed pointers


DLLImport CE & XP pattern for keeping
common codebase


Native thunking layers

17

Write it yourself


.NETcf extended

System


System.Data

System.Xml

System.Web

Globalization

Text

* Security

Collections

Resources

Reflection

Net

IO

* Threading

* Diagnostics

ServiceProcess

Configuration

Design

ADO.NET

SqlServerCe

SqlClient

Xslt/XPath

XmlDocument

Runtime

InteropServices

Serialization

Serialization

Configuration

SessionState

Caching


Security

Services

Description

Discovery

Protocols

UI

HtmlControls

WebControls

System.Drawing

Imaging

Drawing2D


Text

Printing

System.WinForms

Design


ComponentModel

Reader/Writers

Remoting

19

Where We Are Now


20

Development


Use eVC++ tools with device


Can do command line builds


Ports of nUnit


Get ethernet to device


VS.NET supported by .NETcf line


Class Library Comparison Tool


Windows Mobile Developer Power Toys

21

Emulator


Same image as run on device


80% speed of device


Newer ones can do GAPI


eVC++ can share folders


Can sometimes active sync


Cannot listen


Ultimately need a slew of devices

22

Debugging


System.SR.dll


OutputDebugString


No console


TraceListeners


No event log (to file)


Use the device


Cannot attach to process


Cannot skip to next statement


Cannot do mixed native and managed


Native threads will not break

23

pInvoke Debugging


Cross platform pInvoke signatures


SetLastError, Marshal.GetLastWin32Error


Exceptions


NotSupportedException


MissingMethodException


Look at .h files


dumpbin /exports (name mangling)


P/Invoke Wizard

24

Data


Web Services


XML


DB API


Pocket Access


CSV


3rd party


SQL

25

SQL


Connected


Sql Server


Disconnected


SQL CE


Replication


No concurrent access


No stored procedures


Basic SQL support


Runs in process


Can become corrupted

26

Garbage Collection


Not generational


Mark and sweep aggressive


Compacting is rare


Code pitching has never happened when i was
watching


pInvoke memory leaks


Platform builder / cordbg


mscoree.stat

27

Performance


2 JITS (ARM & other), No NGEN


ARM is supposed to be twice as fast


Machine code is generated, but not much


UI is ~20% slower on device


Tech preview was interpreted


Release builds are slower


No profiling tools


Environment.TickCount


QueryPerformanceCounter


SP2 has some significant resource and xml handling
speed ups

28

What is slow


XmlDocument


Reflection


Catching Exceptions


pInvoke


DataSets


Web Services


Data Binding

29

Faster


SQL CE replication


Do not freeze the UI


Pre
-
init behind the scenes


Re
-
use objects


StringBuilder


Batch pInvoke calls in thunking layer


Use XmlTextReader / XmlTextWriter


Drawing controls top
-
down, parents 1st

30

Final Thought


Remember that these are Embedded Devices!

31

Futures


SmartPhone 2003


Whidbey (.NETcf)


Predictions

32

SmartPhone 2003


2002 OS does NOT support .NETcf


No future support announced by MS


2002 release just now happening in US


No upgrade path announced by carriers


2003 release happening in Europe


.NETcf is basically unchanged


Missing some UI controls


Missing SQL Server CE

33

Whidbey


eVC IDE integrated into VS .NET


Mixed native and managed


Remote tools


Attach to running process


Language updates


Generics, Iterators, Anonymous methods


Performance


Execution engine, JIT, profiling


Interop


COM RCW, Marshalling, Runtime hosting

34

Whidbey


Emulator


ActiveSync, Shared Folder, Stateful, Orientations


WinForms


Docking, Anchoring, Tabbing, Auto
-
scroll,
Clipboard, Extend existing types, Multi
-
resolution


Controls


WebBrowser, DateTimePicker, MonthCalendar,
LinkLabel, Notification Balloon, DocList, RichInk,
Splitter, DataContainer, UserControl, HelpProvider

35

Whidbey


Protocols


IPv6, Kerberos, NTLM, SOAP 1.2


XML


XPath, Schemas, Serialization


SQL CE 3.0


SqlCeResultSet


BCL


Image, Messaging, Registry, Cryptography


Serial, Sound

36

Whidbey


Direct3D, DirectDraw


Notifications of system state


POOM


Telephony


Device Configuration


Location Services

37

Predictions


HREF EXEs (CAS?)


SPOT


384K RAM, ~1 meg flash, 27Mhz


OS = HAL + CLR


Only what is needed


Interpreted


Car .NET


Longhorn


Modular

38

Resources


Newsgroups (microsoft.public.)


dotnet.framework.compactframework


smartphone.developer


Source


OpenNetCF.org, go
-
mono.org,
ssCli

/ Rotor


Spelunking


Reflector, Anakrino, ILDasm

39

Portals


microsoftdev.com


MS .NETcf FAQ


devbuzz.com


pocketpcdn.com


dotnetdn.com

40

Books


.NET Compact Framework (MS Press) C#


.NET Compact Framework Kick Start (Sams)
C# & VB


Definitive Guide to the .NETcf (Apress) VB


SQL Server CE Database Development with
.NETcf (APress)


Building Solutions with the .NETcf (Addison)


Programming the .NET Compact Framework
(?) C# and VB.NET

41

Questions