ようこそ。睡眠不足なプログラマのチラ裏です。

.NET Compact Framework2.0についてのだいたいのメモ

諸事情により、.NET Compact Frameworkを使うことになったので、
ちょっと適当にまとめてみる。


.NET Compact Frameworkとは

.NET Compact Frameworkとは、Microsoftから提供されている
携帯電話やPDAなどの携帯情報端末向けのクラスライブラリで、
Windows向けに提供している.NET Frameworkのサブセットである。
.NET Frameworkおよび、.NET Compact Frameworkを使って開発したソフトウェアは、
Microsoft社独自のMSILという中間言語によるプログラムに変換され、
Microsoft .NETの共通動作環境であるCLRがこれを解釈し実行する。


.NETとJavaの比較

アプリ .NETアプリケーション Javaアプリケーション
仮想マシン 共通言語ランタイム(Common Language Runtime:CLR) Java仮想マシン(Java Virtual MachineJVM)
プログラミング言語 C#/VB/C++/J# その他.Net対応言語 Java言語
中間言語 Microsoft中間言語(Microsoft Intermedia Language:MSIL) Javaバイトコード
クラスライブラリ .Net Frameworkクラスライブラリ Javaクラスライブラリ
携帯端末向けのクラスライブラリのサブセット .NET Compact Framework ←これ JavaME CDC

.NET Compact Framework2.0でできないこと

GDI+
GDI+がサポートされていない。Region が使えないのは痛い。
Direct3Dはサポートされている。

Method
.NET Frameworkに比べ、virtual(Overridable)なメソッドの減少している。
多くのメソッドについてオーバーライドができなくなっている。

コントロール
印刷系のクラスがだいぶ省かれている。
CrystalReportViewer, PageSetupDialog, PrintDialog, PrintDocument,
PrintPreviewControl, PrintPreviewDialogなどが利用できない。
他にも、コントロール自体同じ名前でも、プロパティなどがばっさりと省かれていたり、
中身がサポートされていない機能が結構ある。

Binaryシリアライズ
BinaryFormatter、SoapFormatterについてサポートされていない。

セキュリティ
アンマネージドコードへのセキュリティは提供されていない。
どのアプリケーションでもシステムAPIにアクセスが可能。
.NET Compact Framework ではロールベースのセキュリティは提供していない。

.NETリモーティング
.NETリモーティングはサポートされていない。
せっかくPDAと連携したかったりするのに・・・、これが使えないのはかなり痛い。

Web Service
System.Web では、クライアントは作れるがサービスは作れない。
普通はそんなことしないので問題ない。

Database
ローカルデータベースとして SQL Server CE がサポートされる。
また、SQL Server のクライアントとしても使える。


.NET CompactFramework2.0で主に強化された点

デバイス
吹き出し情報通知
ハードウェアボタン操作
ハードウェアリセットなしのスクリーンのアングル変更

描画
ビットマップ制御
ペン制御
Direct Draw
Direct 3D

イベント
クリップボード
キーボード

暗号化
X.509証明書
ハッシュ:MD5,SHA1
対称暗号方式:RC2,RC4,3DES,DES
非対称暗号方式:RSA,DSA

ネットワーク
NTLM認証
IPv6
SOAP

MSMQ
System.Messaging名前空間

レジストリ
RegistryKeyクラスが使える。
2.0の前バージョンでは、Microsoft.Win32.Registry 名前空間が使えない。
前バージョンでは、Windows CE のレジストリを扱うには、
Windows APIを経由してアクセスする必要があった。

シリアルポート
System.IO.Ports.SerialPortクラス

XML
XmlSerializerクラス。これは、オブジェクトから XML ドキュメントへのシリアル化および
XML ドキュメントからオブジェクトへの逆シリアル化、
また、オブジェクトを XMLエンコードする方法を制御きる。

開発言語
C#でいえば匿名メソッドやジェネリックなど
VBでいえばMyクラスなど


Visual Studio 2005 Standard Edition以降による開発環境の構築

Visual Studio 2005 Standard Edition以降(Express Edition以外)であれば、
Windows Mobile 5.0 SDK」を組み込むことができ、効率よく.Net Compactアプリを開発することができる。
単に「.Net Compactアプリ」を開発するだけであるならば、
「Standard Edition」で十分である(ただし、リモートデバッグはProfessionalから)。


Windows Mobile 5.0 PocketPC SDK
Net Compact Framework 2.0アプリの作成機能を付加するツール。無償。


Localized Windows Mobile 5.0 PocketPC Localized Emulator Image
エミュレータを各国の言語に対応させるためのツール。無償。


ActiveSync 4.5 - 日本語
PDAとPCを同期させるために必要。無償。

.NET CompactFrameworkを用いたアプリケーションの作成
まずはプロジェクトの作成、
Visual Studio 2005のメニュー「ファイル⇒新規作成⇒プロジェクト」を選択。
ツリー「Visual C#スマートデバイスWindows Mobile 5.0 Pocket PC」を選択。
右のウィンドウの「デバイスアプリケーション」を選択。
「デバイスアプリケーション(1.0)」と「1.0」が付いてるものは.NET Compact Framework1.0用なので注意。
ソリューションに「新しいソリューションを作成する」を指定しOKボタンを押す。 あとはコードを追加していく・・・。


.NET Compact Framework 3.5 について
質疑応答

.NET Compact Framework 3.5 の前のバージョンは 3.0ですか?
いいえ、ケフィアです。.NET Compact Framework 3.5 の前のバージョンは 2.0 です。
.NET Compact Framework 3.0 というバージョンはリリースされていません。大人の事情です。

.NET Compact Framework 3.5でどんな機能が増えましたか?
LINQ対応、WCF対応とのことですが、一般開発者にはあまり受けないかもしれません。

.NET Compact Framework 3.5 はすぐに入れたほうがいいですか?
いいえ、ケフィアです。すぐに入れる必要はありません。3.5 対応アプリケーションが出てきたら
必要に応じでインストールすればOKです。