| Whats new in the .Net Compact Framework |
| The .NET Compact Framework version 2.0 Beta extends the .NET Compact Framework version 1.0 with new features, improvements to existing features, and expanded support of classes in the full .NET Framework. This section provides information about some of the key additions and modifications to the .NET Compact Framework. Starting with this version, the .NET Compact Framework is part of the .NET Framework and supports stand-alone development. Note that there is a new way to determine, in the .NET Framework Class Library Reference, which members of a class are supported in the .NET Compact Framework. On the member summary topic for a class, such as System.AppDomain, click Members Options at the top of the page, and then select .NET Compact Framework Members Only checkbox. |
|
| Framework Support and New Features |
| The .NET Compact Framework version 2.0 Beta introduces new features and provides more support for .NET Framework classes. It also provides better performance in several feature areas, including just-in-time (JIT) compilation, garbage collection, XML Web services, and data access. |
|
| Support for full .NET Framework features |
| The following table summarizes the increased framework support of the .NET Compact Framework: |
| |
Expanded support |
|
Description |
|
|
| |
Application Domains |
|
Support is provided for unloading an application domain. |
|
| |
Cryptographic support |
|
Cryptography and X509Certificates are supported. |
|
| |
System.Data.DataSet |
|
The System.Data.DataSet.GetChanges method is supported along with more classes in the System.Data namespace. |
|
| |
improvements |
|
|
| |
Events |
|
Internal improvements have been made in raising events. |
|
| |
Exceptions |
|
| Improved exception handling by the following: |
| |
System.Windows.Forms.TabControl.SelectedIndexChanged |
| |
System.Windows.Forms.TrackBar.ValueChanged |
| |
System.Windows.Forms.TreeView events |
| |
All changed events for selected items in a |
| |
System.Windows.Forms.ComboBox and |
| |
System.Windows.Forms.ListBox , such as the |
| |
System.Windows.Forms.ListBox.SelectedIndexChanged event. |
|
|
| |
Globalization |
|
Additional encodings are now supported. |
|
| |
Assemblies |
|
Friend Assemblies (C#) are supported |
|
| |
Networking |
|
Support for NTLM authentication and support for IPv6, the next generation of the Internet protocol System.Net.CredentialCache is now supported. |
|
| |
Message Queuing (MSMQ) |
|
Support for System.Messaging classes. Because journaling can make heavy demands use on system resources, the .NET Compact Framework provides an overload for the Create method of the System.Messaging.MessageQueue class to specify journaling. For an example, see MSMQ Book Order Application Sample. |
|
| |
Registry Keys |
|
You can now set registry keys by using the Microsoft.Win32.RegistryKey class. An open RegistryKey and its open child RegistryKey objects have to be explicitly closed prior to successful deletion of the key. The maximum depth of registry keys is 15. This is a Windows CE limitation. |
|
| |
Serial Ports |
|
You can now access serial ports as you can in the full .NET Framework. For an example see, Serial Communication Application Sample. |
|
| |
SQL Server |
|
See What's New in SQL Mobile |
|
| |
Strings |
|
The System.String.Substring method now throws an exception if the startIndex parameter is greater than the length parameter. String.Empty.Substring(0, 1) throws an System.ArgumentException. |
|
| |
Threading |
|
Support for the System.Windows.Forms.Control.BeginInvoke, System.Windows.Forms.Control.EndInvoke method, and using parameters with the System.Windows.Forms.Control.Invoke method. |
|
| |
XML support |
|
| XML support now includes: |
| |
System.Xml.Serialization.XmlSerializer |
| |
System.Xml.XPath |
| |
System.Xml.Schema |
|
|
|
|
| New Features |
| The following table summarizes new device-specific features in the .NET Compact Framework: |
| |
Feature |
|
Description |
|
|
| |
Stand-alone development |
|
Although command line compilation was supported in the .NET Compact Framework version 1.0, the .NET Compact Framework now provides greater stand-alone compiling and debugging support. The .NET Compact Framework SDK is included in the .NET Framework stand-alone SDK. For more information,
see How to: Compile at the Command Line. |
|
| |
|
|
|
| |
Force an earlier .NET Compact |
|
See Configuring Runtime Version |
|
| |
New controls in
Microsoft.WindowsCE.Forms |
|
See Windows Forms and Graphics |
|
|
|
| Interoperability Enhancements |
| The .NET Compact Framework now supports calling COM objects from managed code; however, the ability to call a managed object from COM is planned but not implemented in this beta release. Current COM interoperability support allows you to program the Pocket Outlook Objects Model (POOM) and other native objects on a mobile device. Calls can be late-bound through System.Runtime.InteropServices.UnmanagedType.IDispatch, or early-bound. Although the .NET Compact Framework supports only a subset of the System.Runtime.InteropServices namespace, advanced marshaling capabilities are available with the support of the System.Runtime.InteropServices.MarshalAsAttribute attribute; in addition, the .NET Compact Framework supports several new members in the System.Runtime.InteropServices.Marshal class. You can now marshal a wide range of types through COM into the .NET Compact Framework, including all OLE Automation types. You can set a registry key to record marshaling of function calls in a log file. You can also use the .NET Framework SDK type library import tool (Tlbimp.exe), with the .NET Compact Framework. In Visual Studio, you can add a reference a COM type library in a device project. |
|
| Newly Supported Classes |
This topic lists classes that are newly supported by the .NET Compact Framework version 2.0 Beta. This list is not comprehensive and subject to change. For information about how to use the class library to determine .NET Compact Framework support and versioning,
see How to: Use the Class Library for the .NET Compact Framework. |
|
| Newly Supported Classes by Namespace |
| The following table lists the newly supported classes in the .NET Compact Framework version 2.0 Beta. Note that this list includes both new classes introduced in the full .NET Framework and new classes that are exclusive to the .NET Compact Framework. |
| |
Namespace |
|
Newly Supported Classes |
| |
Microsoft.VisualBasic |
|
T:Microsoft.VisualBasic.ComClassAttribute
DefaultInstanceProperty
FileAttribute
Globals
MyGroupAttribute
MyGroupCollectionAttribute
VariantType
VbStrConv
|
| |
Microsoft.VisualBasic.CompilerServices |
|
Conversions
NewLateBinding
ObjectFlowControl
Operators
Versioned
|
| |
Microsoft.WindowsCE.FormsNote that these classes are exclusive to the .NET Compact Framework. |
|
BalloonChangedEventArgs
BalloonChangedEventHandler
DocumentList
DocumentListEventArgs
DocumentListEventHandler
DpiAwareAttribute
HardwareButton
HardwareKeys
InputMethod
InputMode
InputModeEditor
LogFont
Notification
ResponseSubmittedEventArgs
ResponseSubmittedEventHandler
RichInk
RichInkColor
RichInkInputMode
RichInkPageStyle
RichInkStreamType
ScreenOrientation
SystemSettings |
| |
System |
|
AppDomainUnloadedException
BadImageFormatException
CannotUnloadAppDomainException
MethodAccessException
MTAThreadAttribute
STAThreadAttribute
StringComparer
TimeoutException
|
| |
System.Collections |
|
IKeyComparer
SortedList
|
| |
System.Collections.Specialized |
|
StringDictionary |
| |
System.Data |
|
AdapterMappingException
ConflictOptions
DataAdapterException
DataTableClearEventArgs
DataTableClearEventHandler
DataTableNewRowEventArgs
DataTableNewRowEventHandler
DataTableReader
LoadOption
MergeFailedEventArgs
MergeFailedEventHandler
StrongTypingException
|
| |
System.Data.Sql |
|
DataAccessKind
SqlFunctionAttribute
SqlMetaData
SqlMethodAttribute
SystemDataAccessKind
|
| |
System.Data.SqlServerCeNote that these classes are exclusive to the .NET Compact Framework and are installed by Visual Studio. |
|
CommitMode
OnStartTableDownload
OnStartTableUpload
OnSynchronization
RepairOption
ResultSetEnumerator
ResultSetOptions
ResultSetSensitivity
ResultSetView
RowView
SnapshotTransferType
SqlCeLockTimeoutException
SqlCeResultSet
SqlCeTransactionInProgressException
SqlCeType
SqlCeUpdatableRecord
|
| |
System.Data.SqlTypes |
|
SqlBytes
SqlChars
SqlNotFilledException
SqlStreamChars
SqlXml
StorageState
|
| |
System.Diagnostics |
|
DebuggerHiddenAttribute
DebuggerNonUserCodeAttribute
|
| |
System.Drawing |
|
TextureBrush |
| |
System.Drawing.Drawing2D |
|
DashStyle |
| |
System.Drawing.Imaging |
|
BitmapData
ImageFormat
ImageLockMode
PixelFormat
|
| |
System.Drawing.Text |
|
FontCollection
InstalledFontCollection
|
| |
System.IO.Ports |
|
Handshake
Parity
SerialErrorEventArgs
SerialErrorEventHandler
SerialErrors
SerialPinChangedEventArgs
SerialPinChangedEventHandler
SerialPinChanges
SerialPort
SerialReceived
SerialReceivedEventArgs
SerialReceivedEventHandler
StopBits
|
| |
System.Messaging |
|
AcknowledgeTypes
Acknowledgment
DefaultPropertiesToSend
IMessageFormatter
Message
MessageEnumerator
MessagePriority
MessagePropertyFilter
MessageQueue
MessageQueueErrorCode
MessageQueueException
MessageQueuePermissionAccess
MessageQueueTransactionType
MessageType
PeekCompletedEventArgs
PeekCompletedEventHandler
ReceiveCompletedEventArgs
ReceiveCompletedEventHandler
XmlMessageFormatter
|
| |
System.Net |
|
CredentialCache |
| |
System.Net.Sockets |
|
IPv6MulticastOption |
| |
System.Runtime.CompilerServices |
|
InternalsVisibleToAttribute
IsVolatile
|
| |
System.Runtime.InteropServices |
|
ClassInterfaceAttribute
ClassInterfaceType
ComEventInterfaceAttribute
COMException
ComImportAttribute
ComInterfaceType
ComSourceInterfacesAttribute
CurrencyWrapper
DispatchWrapper
ErrorWrapper
FieldOffsetAttribute
InterfaceTypeAttribute
InvalidComObjectException
MarshalAsAttribute
MarshalDirectiveException
PreserveSigAttribute
SafeArrayRankMismatchException
SafeArrayTypeMismatchException
TypeLibTypeAttribute
TypeLibTypeFlags
UnknownWrapper
VarEnum
|
| |
System.Runtime.InteropServices.ComTypes |
|
CONNECTDATA
IConnectionPoint
IConnectionPointContainer
IEnumConnectionPoints
IEnumConnections
|
| |
System.Runtime.Remoting |
|
IObjectHandle
ObjectHandle
|
| |
System.Threading |
|
ThreadAbortException
ThreadTerminateException
|
| |
System.Windows.Forms |
|
AnchorStyles
AutoScaleMode
AxHostBase
Clipboard
DataConnector
DataFormats
DataObject
DateRangeEventArgs
DateRangeEventHandler
DateTimePicker
DateTimePickerFormat
Day
DockStyle
Help
HelpEventArgs
HelpEventHandler
IBindableComponent
ICurrencyManagerProvider
IDataObject
ItemChangedEventMode
LinkLabel
MonthCalendar
Splitter
TickStyle
UserControl
WebBrowser
WebBrowserDocumentCompletedEventArgs
WebBrowserDocumentCompletedEventHandler
WebBrowserNavigatedEventArgs
WebBrowserNavigatedEventHandler
WebBrowserNavigatingEventArgs
WebBrowserNavigatingEventHandler
WebBrowserReadyState
|
| |
System.Xml |
|
ConformanceLevel
IHasXmlNode
IXmlNamespaceResolver
ValidationType
XmlConvertDateTimeOption
XmlFactory
XmlNamespaceScope
XmlNodeOrder
XmlQualifiedNameTable
XmlReaderSettings
XmlTokenizedType
XmlWriterSettings
|
| |
System.Xml.Schema |
|
XmlSchemaMinInclusiveFacet
XmlSchemaMinLengthFacet
XmlSchemaNotation
XmlSchemaNumericFacet
XmlSchemaObjectCollection
XmlSchemaObjectEnumerator
XmlSchemaObjectTable
XmlSchemaParticle
XmlSchemaPatternFacet
XmlSchemaRedefine
XmlSchemaSequence
XmlSchemaSet
XmlSchemaSimpleContent
XmlSchemaSimpleContentExtension
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleType
XmlSchemaSimpleTypeContent
XmlSchemaSimpleTypeList
XmlSchemaSimpleTypeRestriction
XmlSchemaSimpleTypeUnion
XmlSchemaTotalDigitsFacet
XmlSchemaType
XmlSchemaUnique
XmlSchemaUse
XmlSchemaValidationException
XmlSchemaValidity
XmlSchemaWhiteSpaceFacet
XmlSchemaXPath
XmlSeverityType
XmlTypeCode
XmlValueConverter
|
| |
System.Xml.Serialization |
|
IXmlTextParser
SoapAttributeOverrides
SoapAttributes
SoapReflectionImporter
UnreferencedObjectEventArgs
UnreferencedObjectEventHandler
XmlAnyElementAttributes
XmlArrayItemAttributes
XmlAttributeEventArgs
XmlAttributeEventHandler
XmlAttributeOverrides
XmlAttributes
XmlElementAttributes
XmlElementEventArgs
XmlElementEventHandler
XmlMapping
XmlNodeEventArgs
XmlNodeEventHandler
XmlSerializer
XmlTypeMapping
|
| |
System.Xml.XPath |
|
|
|
|
| What's New in SQL Server Mobile |
| Microsoft SQL Server 2005 Mobile Edition (SQL Mobile) is the next release of Microsoft SQL Server 2000 Windows CE Edition 2.0 (SQL Server CE). The new version of SQL Mobile is a feature-rich compact database that is designed to support an expanded list of devices, including the Tablet PC and future releases of the Windows Mobile Smartphone. This additional device support enables developers to use the same database functionality across many devices, from a Smartphone to a Pocket PC to a Tablet PC. |
| Feature Improvements to Enhance Reliability and Performance |
| SQL Mobile has many new and updated features that enhance the database reliability and performance. These improvements can be divided into general feature categories: merge replication, the storage engine, and the query processor. |
| Synchronization |
| Several enhancements are available to improve the process of replicating and synchronizing data with SQL Mobile. The enhancements include the following: |
| Support for multiple subscriptions |
| Previously, only one subscription could be created for each database. In an environment where the published data derives from multiple publications, an application developer had to create a separate subscription database for each publication, and then specify which database the application needed to open. With SQL Mobile, however, multiple subscriptions can be contained in a single database, thereby reducing the amount of programming required. For more information about multiple subscriptions, see Supporting Multiple Subscriptions. |
| Multiuser support and synchronization |
| To support multiple applications accessing the same database at the same time, SQL Mobile provides multiuser support. Multiuser support enables multiple users to synchronize data while using the same application, so the database does not have to be disconnected before they use merge replication or remote data access (RDA). |
| Synchronization progress status |
| Developers can use the managed APIs to provide synchronization status feedback, which can be used to inform users of synchronization progress. ERROR: no text provided |
| Column-level tracking |
| In previous versions of SQL Mobile, an entire row was synchronized with SQL Server even if only one column in the row had been modified. This often resulted in longer synchronization times if the unmodified columns in the row contained large amounts of data. In SQL Mobile, only the modified columns are synchronized. |
| Storage Engine |
| The new and improved features of storage engine in SQL Mobile enhance the reliability and performance of mobile applications. These features include: |
| Revamped storage engine |
| The storage engine architecture has been rewritten to optimize for a mobile architecture in which each application shares a common memory pool. Greater data reliability is now ensured through true atomicity, consistency, isolation, and durability (ACID) support, and when devices experience battery power issues and connectivity disruptions. ERROR: no text provided |
| Multiuser support |
| To support multiple applications accessing the same database at the same time, SQL Mobile provides row-level locking of data pages, page-level locking, and isolation levels to help ensure data integrity during concurrency. ERROR: no text provided |
| Auto re-use of empty pages |
| SQL Mobile supports the auto-shrink feature, which automatically reclaims unused data pages and saves device storage space. ERROR: no text provided |
| Query Processor |
| Improvements to the SQL Mobile query processor include: |
| Cost-based optimization |
| The query processor takes advantage of statistics support in the storage engine to create substantially better cost-based query plans. ERROR: no text provided |
| Execution plan and query hints |
| With SQL Mobile, developers can view the query plan, and then refine the queries as appropriate. For example, you may refine the query plan based on your database design, access time of the media, or CPU speed for your specific smart devices. |
| A new SqlCeResultSet object |
| The new SqlCeResultSet object exposes an updateable, scrollable cursor so developers can directly access a SQL Mobile database without double buffering data on the device with a Dataset object. This class provides substantial performance improvements over using the Dataset object while reducing the amount of code required to accomplish the same task. It also supports WinForms data binding interfaces and can be bound to UI controls such as DataGrid, TextBox, and ListBox. |
| Integration with Other Microsoft Products |
| SQL Mobile has been integrated into two desktop-based applications, SQL Server 2005 and Visual Studio 2005, which allows greater flexibility when creating and testing SQL Server Mobile databases. |
| Integration with SQL Server 2005 |
| You can manage a SQL Mobile database on a desktop computer or a smart device by using SQL Server Management Studio, a SQL Server 2005 management tool that replaces SQL Server Enterprise Manager and SQL Server Query Analyzer. This integrated tool provides the same experience for users whether they connect to SQL Server 2005 or SQL Mobile. |
| Benefits of using SQL Server Management Studio include the following: |
| Graphical query execution plans |
| Graphical query execution plans enable developers to easily see query execution plans and so better understand potential query performance issues. A separate feature, query hints, is available to control some aspects of the execution plan. |
| New Subscription wizard |
| New Subscription Wizard requires minimal effort by users in creating, and subsequently synchronizing, a subscription database. For more information, see New Subscription Wizard. |
| Improved Web Configuration Wizard |
| SQL Mobile supports improved versions of Web configuration Wizard. The improvements in Web configuration Wizard include enhanced usability, support for HTTPS virtual directories, and the ability to configure remote IIS computers. |
| Integration with Data Transformation Services (DTS) |
| DTS enables developers to transfer data between a SQL Mobile database and a variety of data sources, including Microsoft Access, Oracle, and IBM databases. |
| SQL Editor |
| The SQL Editor component of SQL Server Management Studio is the primary tool for interactively designing and testing Transact-SQL statements, queries, and scripts. The SQL Editor has several features that simplify the process of writing and editing queries and code. You can also edit scripts that are created from files or from Object Explorer. |
| Database Deployment |
| From within SQL Server Management Studio, you can create SQL Mobile databases on the local computer. You can configure these databases, populate them with data, and then deploy the databases to multiple devices, thus saving considerable development and deployment time. |
| Some of the enhancements made in SQL Server 2005 for merge replication provide the following benefits for SQL Mobile applications: |
| Managed application programming interface (API) access to synchronize business logic |
| SQL Server 2005 exposes a managed API that allows developers to manipulate business logic data before that data is stored in the SQL Server database. |
| Support for download-only articles (tables) |
| This feature reduces the amount of metadata transferred during initial synchronization and reduces the processing time on SQL Server when developers perform subsequent synchronizations. |
| Support for partitioned (filtered) articles |
| Many mobile applications filter data so that users do not access the same data across devices. With support for partitioned articles, developers can significantly reduce synchronization time and increase scalability. This feature is especially useful for deployments of a large number of smart devices. For more information on partitioned articles, see Creating the Publication |
| Integration with Visual Studio 2005 |
| There are two major enhancements to the integration of SQL Mobile with Visual Studio 2005: |
| Database Management |
| Developers can manage a SQL Mobile database on a desktop computer or a smart device using Visual Studio 2005. With this feature, developers can drag a SQL Mobile table to a control in the smart device application and have that control automatically bind to the table. |
| Deployment Options |
| - Automatic Installation of SQL Mobile |
When you use Visual Studio to build a .NET application that uses SQL Mobile, the SQL Mobile engine is automatically installed on the device the first time you deploy the application. If you are building a native application with Visual Studio 2005, you will need to manually install SQL Mobile. The installation .cab file can be found in the following location:
C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL
Server\Mobile\v3.0\<platform>\<processor>\sqlce.<platform>.<processor>.cab
Copy the .cab file to the device, and then open .cab file on the device to install SQL Mobile. |
| - My Computer Deployment |
| Deploying to My Computer launches the SQL Mobile application on your desktop computer. This new feature takes advantage of .NET Compact Framework functionality that allows smart device applications to run on the .NET Framework without recompilation. To deploy to My Computer, do the following from within Visual Studio 2005: |
|
| 1. In Solution Explorer, right click on your existing SQL Mobile project, and then choose Properties. |
| 2. Select the Build Events tab on the left. |
| 3. In the Post-build event command line textbox, type the following command: |
| 4. In Solution Explorer, expand the References node, right click on System.Data.SqlServerCe, and then choose Properties. |
| 5. In the Properties window, set the Copy Local property to FALSE. |
| 6. Rebuild your entire application. |
|
|
| |