.NET Compact Framework 2.0 の新機能

Jim Wilson
JW Hedgehog, Inc.

November 2005

日本語版最終更新日 2006 年 4 月 18 日

適用対象:
   Microsoft .NET Compact Framework 2.0
   Microsoft SQL Server 2005 Mobile Edition

要約: この記事では、.NET Compact Framework 2.0 の新しい機能を簡単に紹介します。より完全な技術文書が、まもなく、この記事に代わって公開される予定です。

目次

はじめに
ユーザー インターフェイス
データ
通信
セキュリティ
スレッド
パフォーマンスとリソースの管理
ネイティブとの対話処理
まとめ

はじめに

.NET Compact Framework 2.0 では、前バージョンの .NET Compact Framework 1.0 に多くの改良を行いました。改良は広範囲にわたりますが、すべては、開発者の生産性を向上させ、フル バージョンの .NET Framework との互換性を高め、デバイス機能のサポートを強化することを共通の目標にしています。この記事では、.NET Compact Framework 2.0 でなされた変更と拡張について、高いレベルでの概要を提供します。

ユーザー インターフェイス

スマート デバイスの比較的小型のディスプレイでは、アプリケーションは利用可能な画面領域を効率よく使用する必要があります。このため、開発者は、従来アプリケーションのユーザー インターフェイスのデザインと実装に多くの時間を費やさざるを得ませんでした。高解像度や複数の向きのサポートなど、スマート ディスプレイ機能の最近の進歩により、ユーザー インターフェイスの開発作業はより複雑になりました。このセクションでは、.NET Compact Framework 2.0 が提供する、アプリケーションのユーザー インターフェイスの作成作業を簡略化する多くの新機能を説明します。

Windows フォーム コントロール

ユーザー インターフェイスの中心は、コントロールです。.NET Compact Framework 2.0 は、多くの新しいコントロールを提供します。新しいコントロールには、フル バージョンの .NET Framework と共通のコントロールと、デバイス固有のコントロールがあります。

MonthCalendar

MonthCalendar コントロールは、カスタマイズ可能なカレンダー コントロールです。日付のビジュアルな表示を提供します。これを使用すると、ユーザーは日付をグラフィカルな方法で選択できます。

DateTimePicker

DateTimePicker コントロールは、カスタマイズ可能なコントロールで、日付と時刻の情報を表示したり、ユーザーに日付と時刻の情報を入力させたりできます。コンパクトな表示の中にグラフィカルな日付選択書式を備えているため、特にスマート デバイス アプリケーションに適しています。情報を表示する場合、DateTimePicker コントロールは、テキスト ボックスと同様の方法で表示します。ユーザーが日付を選択すると、MonthCalendar コントロールと同様のポップアップ カレンダーが表示されます。

WebBrowser

WebBrowser コントロールは、デバイスの Web ブラウザをカプセル化して、豊富な表示機能を提供し、さまざまなイベントを公開します。イベントを使用すると、Web ブラウザのコンテンツ上でのユーザーの操作をアプリケーション上で追跡したり、イベントに対応する独自の動作をアプリケーション側で提供することができます。

Notification

Notification コントロールは、Pocket PC の通知機能をカプセル化します。これを使用すると、アプリケーションからユーザーに通知を送信できます。このとき、ユーザーの現在のアクティビティのコンテキストは変更されません。通知するテキストとしては、プレーン テキストか HTML を使用できます。通知は、情報を表示できるほか、通知する HTML テキストに HTML ボタンとリンクを含めることで、ユーザーからの入力を受け取ることもできます。

DocumentList

DocumentList コントロールは、ファイルの表示と管理用の標準のメカニズムを提供します。このメカニズムは、Excel Mobile や Word Mobile でファイルを開くときに使用されます。DocumentList コントロールは、ファイル システム内をあちこち移動する機能、および、ファイルを削除、コピー、移動したり、ファイル名を変更する機能をユーザーに提供します。また、DocumentList コントロールを使用して、電子メール メッセージを送信したり、他のデバイスに赤外線通信でファイルを送信することができます。

Smartphone の DataGrid

Smartphone は、DataGrid コントロールをサポートするようになりました。Pocket PC と同様に、Smartphone の DataGrid コントロールは、自由に設定できる列のサイズ、複数の表示スタイル、データ連結、null 値の取り扱い、およびユーザーのセルの選択を追跡するイベントをサポートします。

LinkLabel

LinkLabel コントロールは、1 つ以上のハイパーリンクを表示できるラベル コントロールです。

Splitter

Splitter コントロールは、ドッキングされたコントロールにサイズ変更機能を提供する分割バーです。

ToolBar

ToolBar コントロールは、画像をボタンとして表示できる Windows のツールバーです。

ユーザー コントロール

.NET Compact Framework 2.0 は、ユーザー コントロールをサポートするようになりました。ユーザー コントロールの追加によって、.NET Compact Framework 2.0 のアプリケーションでも、Visual Studio 2005 内でコントロールをグラフィカルに作成できるようになりました。また、.NET Compact Framework 2.0 のユーザー コントロールは、フル バージョンの .NET Framework と同様に、コントロール ツールボックス上に自動的に表示されてドラッグ アンド ドロップでフォームに配置できます。

表示とレイアウトの管理

利用できるようになった Windows Mobile の幅広いフォーム ファクタにより、アプリケーションの開発者は、これまでよりはるかに動的な ユーザー インターフェイスを開発することを要求されます。動的なユーザー インターフェイスの作成作業を簡略化するために、.NET Compact Framework 2.0 は、多くの新しいレイアウトと管理機能を提供します。

コントロールのドッキング

.NET Compact Framework 2.0 コントロールは、ドッキングをサポートするようになりました。コントロールをドッキングすると、コントロールは、親コントロールの端に(その端に隙間ができないように)配置されます。親コントロールのサイズが変更されると、ドッキングされたコントロールは、常に親コントロールの指定された端に隙間ができないように、自動的にサイズが変更されます。また、コントロールは、親全体を埋め尽くすようにドッキングさせることもできます。

コントロールの固定

.NET Compact Framework 2.0 のコントロールは、位置の固定もサポートします。コントロールを固定すると、コントロールの 1 つ以上の辺は、対応する親コントロールの端から一定の距離が維持されます。親コントロールのサイズが変更されると、コントロールのサイズが自動的に変更されて、コントロールの固定された辺は、親コントロールの対応する端から適切な距離が維持されます。

自動スクロール

Form および Panel コントロールは、ScrollableControl から継承される他のコントロールと同様に、AutoScroll プロパティを提供するようになりました。true に設定されると、コントロールは自動的にスクロール バーを提供します。ユーザーは、このスクロール バーを使用して、コントロールの表示領域の外側にある子コントロールまでスクロールできます。

自動サイズ調整

Form コントロールなど、ContainerControl から派生したすべてのコントロールは、AutoScaleMode プロパティを提供するようになりました。AutoScaleMode プロパティは、最初にデザインしたときの解像度とは異なる解像度で表示する場合のコントロールの表示方法を指定します。AutoScrollMode.Dpi に設定すると、コンテナ コントロールのすべての子コントロールは、実行時のディスプレイの解像度に合わせて調整されます。AutoScaleMode.None の値は、自動サイズ調整が行われないことを示します。これにより、別の解像度で正しく表示するのは、アプリケーション側の責任になります。

SuspendLayout と ResumeLayout

.NET Compact Framework 2.0 の Control クラスは、SuspendLayout メソッドと ResumeLayout メソッドをサポートするようになりました。フル バージョンの .NET Framework と同様に、このメソッドは、組み合わせて使用されて、複数のレイアウト イベントをグループ化します(一連の子コントロールの位置変更やサイズ変更など)。

Graphics の DpiX プロパティと DpiY プロパティ

Graphics クラスが現在のデバイス ディスプレイの解像度に関する情報を提供するようになりました。DpiX プロパティは水平方向の dpi 数を表し、DpiY プロパティは垂直方向の dpi 数を表します。

カスタム描画

多機能なユーザー インターフェイスの作成を簡略化するために、.NET Compact Framework 2.0 は、アプリケーションからカスタム描画をより簡単に扱える多くの機能を追加しました。

回転可能なフォント

LogFont クラスが .NET Compact Framework 2.0 に追加されたことにより、角度を付けてテキストを表示したり、その他の効果をテキストに組み入れることができるようになりました。

カスタム ペン

特定の色とサイズを持つペンを、アプリケーションで作成できるようになりました。

ビットマップ

.NET Compact Framework 2.0 は、ビットマップの操作に使用される多くの拡張機能を提供します。拡張機能は、ビットマップの作成時により多くのオプションを提供し、ビットマップをファイルまたはストリームに保存する機能も含みます。

LockBits メソッドおよび UnlockBits メソッドを、新しく追加された BitmapData クラスと組み合わせることで、アプリケーションでビットマップをより簡単に表示および操作できます。ビットマップをマネージ コードとネイティブ コードの間で共有する必要があるアプリケーションのために、GetHbitmap メソッドを使用して、ネイティブ ビットマップ オブジェクトへのハンドルを取得できるようになりました。

DirectX

Windows Mobile 5.0 ソフトウェアには、DirectX API(アプリケーション プログラミング インターフェイス)のネイティブ実装を通して、たくさんの多機能な 2 次元および 3 次元描画機能が含まれています。Windows Mobile 5.0 ベースのデバイスをターゲットにする .NET Compact Framework 2.0 開発者の場合、DirectX 機能のセットは、「Microsoft.Windows.DirectX」名前空間と、対応するアセンブリに含まれているクラスを通して使用できます。

キーボード管理

多くのスマート デバイスにキーボードが付属するようになりました。マネージ コードの開発者が利用可能なキーボードを活用できるように、.NET Compact Framework 2.0 は、キーボードの拡張サポートを提供します。

メモ   このセクションで説明する機能のいくつかは、.NET Compact Framework 1.0 サービス パックの一部として追加されたものですが、それらの機能が使用できることを知らないかたのために、ここで説明します。

タブ サポート

コントロールがタブ オーダーをサポートするようになりました。これにより、アプリケーションのユーザーは、タブ キーを押すことで、コントロール間を移動できます。

キーボード イベントと Form.KeyPreview

コントロールが KeyUpKeyDown、および KeyPress イベントを受け取るようになりました。さらに、Form コントロールが KeyPreview プロパティを提供するようになりました。false に設定すると、キーボード イベントは、フォーカスのあるコントロールに直接送られます。KeyPreviewtrue に設定すると、すべてのキーボード イベントは、現在フォーカスのあるコントロールに送られる前に Form のインスタンスに送られます。Form のインスタンスは、フォーカスのあるコントロールにイベントが送られないようにすることができます。これには、Form のインスタンスの対応するイベント ハンドラ内で KeyPressEventArgs.Handled プロパティを true に設定します。

データ

データは、どのようなアプリケーションにとっても中核をなす部分です。データ指向のクラスは、リレーショナル、XML のどちらにおいても、データにアクセスして操作するために必要なプログラミング作業のレベルに直接影響します。.NET Compact Framework 2.0 は、多くの新しいデータ クラスを提供するほか、既存のクラスにも新しい機能を提供します。

SQL Server 2005 Mobile Edition に対して更新とスクロールが可能なアクセス

.NET Compact Framework 2.0 は、SQL Server 2005 Mobile Edition(SQL Mobile)データベースにアクセスするための新しいクラス SqlCeResultSet を提供します。新しい SqlCeResultSet クラスは、SQL Mobile データベースに対して直接の、スクロールと、更新が可能なアクセスを提供します。このアクセスは、SQL Mobile データにアクセスするための DataSet クラスより高速でよりリソース効率が高いソリューションを提供します。DataSet クラスと同様に、SqlCeResultSet は、データ バインド ソースとして使用できます。

DataSet

DataSet クラスおよび関連するクラスは、多くの新しい機能を提供します。これらの機能は、拡張機能を提供するだけでなく、.NET Compact Framework の DataSet クラスとフル バージョンの .NET Framework の DataSet クラスの互換性をより高めます。

GetChanges メソッドと Merge メソッド

.NET Compact Framework 2.0 は、DataSet クラスに GetChanges メソッドと Merge メソッドを追加します。GetChanges メソッドは、最後に AcceptChanges が呼び出されてから行われたすべての変更を含む DataSet のコピーを返します。返される DataSet は、マージのために最適化されています。

Merge メソッドは、ある DataSet を別の DataSet にマージします。GetChanges が返す DataSet が含む変更を、別の DataSet にマージする場合に、特に役立ちます。

Copy メソッド

.NET Compact Framework の DataSet クラスは、Copy メソッドを提供するようになりました。Copy メソッドは、元の DataSet と同じ構造とデータを含む新しい DataSet を返します。

DataTable のシリアル化

DataTable クラスは、WriteXml メソッドと ReadXml メソッドを提供するようになりました。このメソッドは、個々のテーブルの XML シリアル化と逆シリアル化を提供します。また、シリアル化と逆シリアル化のサポートの追加により、DataTable を Web サービスの引数として渡すことができるようになりました。

XML

.NET Compact Framework 2.0 は、XML 関連のクラスに多くの拡張機能を提供します。この拡張機能は、XML データを操作するプロセスを簡略化し、.NET Compact Framework の XML 関連クラスとフル バージョンの .NET Framework 内のクラス間の互換性をより高めます。

XPath サポート

XmlDocument クラスは、SelectSingleNode メソッドと SelectNodes メソッドをサポートするようになりました。どちらのメソッドも、XPath を使用してドキュメントを検索する機能を提供します。

XML シリアル化

.NET Compact Framework 2.0 は、XmlSerializer クラスと、XmlElementXmlAttribute などの関連属性クラスを追加します。XmlSerializer を使用すると、クラスを XML に保存したり、XML から復元することができます。

また、新しい XmlSerializer クラスは、.NET Compact Framework 2.0 Web サービス プロキシの基本クラスによって内部で使用されます。新しい XmlSerializer クラスにより、Web サービスの引数をシリアル化したり逆シリアル化するパフォーマンスが、.NET Compact Framework 1.0 によって使用されるメカニズムより大幅に向上しています。このため、Web サービス呼び出しのパフォーマンスが向上します。

XML スキーマ

.NET Compact Framework 2.0 は、XML スキーマ ドキュメントの操作に使用される XmlSchema クラスと、関連するクラスを提供するようになりました。また、このクラスを使用して、スキーマを動的に生成できます。

データ連結

新しいデータ連結クラスである BindingSource が .NET Compact Framework 2.0 に含まれています。通常、BindingSource は、1 つ以上のデータ バインド コントロールと 1 つのデータ バインド ソースの間で層を形成します。BindingSource の使用により、間接層を提供したり、通貨管理、変更イベントなどを追加することで、データ バインドを簡略化することが可能です。

通信

通信は、事実上すべてのスマート デバイス アプリケーションの重要な部分です。.NET Compact Framework 2.0 は、いくつかの新しいクラスを追加して、通信の共通要件を簡略化しました。また、まったく新しい機能も提供します。.NET Compact Framework 2.0 には、新しい通信クラスのほかに、既存のクラスへの改良が含まれています。

Web サービス

前述したように、新しい XmlSerializer クラスは、Web サービスの引数の高速な XML シリアル化と逆シリアル化を提供することで、Web サービスの呼び出しのパフォーマンスを大幅に向上させます。

パフォーマンスの強化のほかに、.NET Compact Framework 2.0 の Web サービス クラスは、SOAP 1.2 をサポートするようになりました。

MSMQ

MSMQ の非同期メッセージ機能を利用するアプリケーション開発者のために、.NET Compact Framework 2.0 は、「System.Messaging」名前空間のクラスを提供します。このクラスは、トランザクションを使用してアトミック操作を作成するなど、メッセージの送受信用のサポートを提供します。

シリアル ポート

シリアル ポートを操作する場合に必要なプログラミング作業を削減するため、.NET Compact Framework 2.0 には、SerialPort クラスが含まれています。SerialPort クラスは、シリアル通信ポートを通した簡略化された抽象型を提供します。これは、シリアル ポートの監視や設定を簡略化する多くの機能を提供し、また、シリアル ポートを使用したデータの送受信を簡略化します。たとえば、ポートとの間で送受信されるデータのアトミック エンコーディングとデコーディングなどが含まれます。

IPv6 サポート

.NET Compact Framework 2.0 のネットワーク クラスは、IPv4 のほかに、IPv6 のサポートを提供するようになりました。

セキュリティ

セキュリティは、スマート デバイス上で実行されるアプリケーションなど、すべてのアプリケーションにとって重要な問題です。.NET Compact Framework 2.0 では、Windows Mobile プラットフォームによって提供されるセキュリティ機能のほかに、暗号化とネットワーク プロトコルが追加されます。

暗号化

.NET Compact Framework 2.0 は、MD5 および SHA1 のハッシュや、RC2、RC4、3DES、DES 対称型の暗号化や、RSA および DSA 非対称型の暗号化など、多くの暗号化サポートを追加しました。

ネットワーク プロトコル

.NET Compact Framework 1.0 によって提供されたダイジェスト認証のサポートに加えて、.NET Compact Framework 2.0 は、NTLM 認証および Kerberos 認証に対するサポートを提供するようになりました。

スレッド

スレッドは、多くの .NET Compact Framework アプリケーションにとって重要な部分です。.NET Compact Framework 2.0 は、スレッド関連のクラスにいくつかの改良を行いました。これにより、開発者は、より詳細にスレッドを制御できるようになり、スレッドの管理が簡単になります。

Thread クラス

.NET Compact Framework 2.0 で行われた変更のほとんどは、Thread クラス自体が対象です。この変更により、アプリケーションからより詳細にスレッドを制御できるようになり、.NET Compact Framework の Thread クラスとフル バージョンの .NET Framework の Thread クラスの互換性がより高まります。

バックグラウンド スレッド

.NET Compact Framework 2.0 は、バックグラウンド スレッドもサポートします。バックグラウンド スレッドは、プロセスが終了するのを妨げないスレッドです。一方、フォアグラウンド スレッドは、すべてのフォアグラウンド スレッドが終了するまで、プロセスをアクティブのままにします。スレッドの IsBackground プロパティを true に設定すると、そのスレッドはバックグラウンド スレッドになります。

スレッドの中止

.NET Compact Framework 2.0 のスレッドに、Abort メソッドが追加されました。呼び出されると、Abort メソッドは、ThreadAbortException を発生させて、スレッドを正常終了します。

スレッドの連係

スレッドは、別のスレッドの完了を待機することをブロックできるようになりました。これには、スレッドの Join メソッドを呼び出します。

スレッド名

スレッドの Name プロパティに文字列名を割り当てることで、スレッドに名前を付けることができるようになりました。スレッドに名前を付けることができるのは、一度だけです。

スレッドとユーザー インターフェイス

.NET Compact Framework 2.0 は、ユーザー インターフェイス スレッド上でのデリゲートの非同期実行をサポートするようになりました。Control.Invoke メソッド(コントロールが所有するスレッド上でデリゲートを同期実行します)だけをサポートする .NET Compact Framework 1.0 とは異なり、.NET Compact Framework 2.0 は、コントロールが所有するスレッド上でデリゲートを非同期実行する Control.BeginInvoke を提供します。また、Control.EndInvoke メソッドも提供します。EndInvoke メソッドは、呼び出されると、非同期操作の結果を返します。

パフォーマンスとリソースの管理

多くの新しい機能とクラス ライブラリの改良のほかに、.NET Compact Framework 2.0 は、パフォーマンスを .NET Compact Framework 1.0 よりかなり向上させました。このパフォーマンスの向上は、アプリケーションのリソースの回復など、アプリケーション実行の事実上すべての領域に影響します。

ランタイムのパフォーマンス

.NET Compact Framework 2.0 ランタイムは、パフォーマンスの向上を目標に、詳細に検査され、作り直されました。この改良は期待の成果を上げました。特定のアプリケーションのパフォーマンスがどのように影響を受けるかを特定することは難しいですが、.NET Compact Framework 2.0 ランタイムの多くの領域では、動作速度が .NET Compact Framework 1.0 の約 1.5 倍になりました。メソッドのディスパッチ(仮想と非仮想の両方)など、その他の領域では、さらに動作速度が向上しています。メソッドのディスパッチは、.NET Compact Framework 1.0 の約 2.5 倍です。

データ クラスのパフォーマンス

ランタイム全体のパフォーマンスの向上に加え、データ クラスのパフォーマンスの向上に努めました。.NET Compact Framework 2.0 の DataSet クラスは、最初のリリースの .NET Compact Framework 1.0 より 4 倍速くリレーショナル データを読み込みます。ReadXml メソッドを使用した DataSet への読み込みの場合でも、その速度は約 3 倍です。

XmlTextReader クラスでも、同様のパフォーマンスの改良が行われました。最初の .NET Compact Framework 1.0 リリースの約 3 倍の速度で XML ファイルのコンテンツを読み取ることができるようになりました。

アプリケーションのリソースの解放

.NET Compact Framework 2.0 において、パフォーマンスが最も向上した領域の 1 つは、ガベージ コレクタの内部です。.NET Compact Framework 2.0 の汎用ガベージ コレクタでは、.NET Compact Framework 1.0 のガベージ コレクタの 7 倍以上の速度でメモリを解放できます。100 個の整数の配列など、大きなオブジェクトの解放は .NET Compact Framework 1.0 でも十分高速でしたが、データ収集では .NET Compact Framework 2.0 で 4 倍以上に向上しました。

ネイティブとの対話処理

.NET Compact Framework 2.0 は、多くの拡張機能を提供しますが、マネージ アプリケーションは、ネイティブ アプリケーションと対話しなければならない場合もあります。.NET Compact Framework 2.0 は、ネイティブ コードとの対話を簡略化するいくつかの新機能と機能の拡張を含んでいます。

ウィンドウ ハンドル

すべてのコントロールは、Handle プロパティを通してネイティブ ウィンドウ ハンドルを公開するようになりました。ハンドルは、コントロールに対応するネイティブ Windows オブジェクトであり、ウィンドウ ハンドルを必要とするネイティブ メソッドに渡すことができます。

COM との対話処理

.NET Compact Framework 2.0 アプリケーションは、COM オブジェクトを作成したり、COM オブジェクトと直接対話できるようになりました。遅延バインドと事前バインド(vtable ベース)の両方のメソッド呼び出しがサポートされています。マネージ コンポーネントを作成したり呼び出す COM コンポーネントはサポートされていませんが、マネージ アプリケーションは、COM のコールバックを受け取ることができます。

データ マーシャリング

マネージ コードとネイティブ コードの間で行われる .NET Compact Framework 2.0 のデータ マーシャリングは、.NET Compact Framework 1.0 より多くのデータ型をサポートするようになりました。ネイティブ コードに渡されるパラメータは、4 つの型に限定されなくなりました。longfloat などのデータ型や、文字列や配列などの埋め込み型を含むクラスおよび構造体も、完全にサポートされるようになりました。マーシャリングの動作は、MarshalAs 属性を使用して、カスタマイズできるようになりました。

まとめ

この概要により、.NET Compact Framework 2.0 を使用するスマート デバイス開発者が利用できる多くの新しい機能について、よく理解できたことと思います。これらのトピックの詳細については、ドキュメントと MSDN を参照してください。ここに記述されている各トピックについての詳細な記事は、まもなく MSDN 上で公開されます。


Page view tracker