Upload
aelan
View
35
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Compact Framework .NETcf : from the trenches. casey chesnut brains-N-brawn.com 12/15/2003 Harvard for David Platt’s .NET class. Questions. Language C#, VB .NET, C++, Java At work .NET, .NETcf CE. Experience. Web Services Compact Framework Tablet PC Speech .NET. Compact Framework. - PowerPoint PPT Presentation
Citation preview
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.NETfx versus .NETcf
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalization
TextText
* Security* Security
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
* Threading* Threading
* Diagnostics* Diagnostics
ServiceProcessServiceProcess
ConfigurationConfiguration
DesignDesign
ADO.NETADO.NET
SqlServerCeSqlServerCe
SqlClientSqlClient
Xslt/XPathXslt/XPath
XmlDocumentXmlDocument
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.DrawingSystem.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.WinFormsSystem.WinForms
DesignDesign ComponentModelComponentModel
Reader/WritersReader/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 3rd 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
3rd 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.NETcf extended
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalization
TextText
* Security* Security
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
* Threading* Threading
* Diagnostics* Diagnostics
ServiceProcessServiceProcess
ConfigurationConfiguration
DesignDesign
ADO.NETADO.NET
SqlServerCeSqlServerCe
SqlClientSqlClient
Xslt/XPathXslt/XPath
XmlDocumentXmlDocument
RuntimeRuntimeInteropServicesInteropServices
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.DrawingSystem.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.WinFormsSystem.WinForms
DesignDesign ComponentModelComponentModel
Reader/WritersReader/Writers
RemotingRemoting
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