に基づいてNET/C#はプラットフォームWindows Phone 7、iPhoneとAndroidを開発しています.

3298 ワード

要旨:近日開催されたModern.NET DDD Conference会議で、Chris Hardyは彼のスピーチでどのように基づいているかを示した.NET/C#は、Windows Phone 7、iPhone、Androidの3つのプラットフォーム向けのアプリケーションを開発しています.
近日開催のModern.NET DDD Conference会議で、Chris Hardyは彼のスピーチでどのように基づいているかを示した.NET/C#は、Windows Phone 7、iPhone、Androidの3つのプラットフォーム向けのアプリケーションを開発し、その中の注意事項を開発しています.
まずChrisは、3つのプラットフォームで使用されるツールやフレームワークなどの周辺環境を挙げました.
 
Windows Phone 7
iPhone(MonoTouch)
Android(MonoDroidプレビュー版)
オペレーティングシステム
Windows
Mac
クロスプラットフォーム
開発ツール
Visual Studio 2010
MonoDevelop
VS 2010/MonoDevelop
せっけいツール
Expression Blend 4
Interface Builder
XMLファイル/DroidDraw
開発フレームワーク
Silverlight for WP
Silverlight 3のスーパーセット
Silverlight 3のスーパーセット
コミュニティの状況
すばらしい
よりよい
まだ早い
MonoTouchは、Novell社が発売したMonoベースのiOSアプリケーション開発キットで、アップルのアプリケーションストアにアプリケーションを公開することができます.MonoはECMA規格に基づいて開発された.NET実行環境では、JIT(Just-in-time)コンパイル方式でILコードを実行しているが、iOSデバイスの制限により、MonoTouchはAOT(Ahead-of-time)コンパイル方式を使用し、iOSデバイス(iPhone、iPhone 4、iPad)に生コードを直接配備している.
MonoTouchはまた、SDKおよびプログラムコードで実際に使用されている一部の静的リンクをアプリケーションにリンクし、アプリケーションのボリュームを削減するLinkerを提供します.MonoTouchを使用して開発されたアプリケーションはiOSデバイス上で独立して実行できます.これは、MonoTouchが実行時にアプリケーション内部に挿入されるためです.Chrisによると、これはアプリケーションの体積に約6 MBの成長をもたらすという.
MonoTouchを使用する.NET/C#プログラマーは既存の知識を利用して開発することができ、反射、汎用、LINQ、Lambdaなど様々な高級なものを使用することができる.NET/C#特性.原生API向けバインディングはmonotouchに格納される.dll内のMonoTouchネーミングスペースの下で、CocoaTouch(iOS開発用のオリジナルObjective-Cフレームワーク)のネーミングスペースとマッピングされます.
バインド時、MonoTouchはCocoa Touchの機能を直接暴露するだけでなく、ある程度APIを書き換える傾向がある.NETプログラマーの形式.例えばUIViewのFrame属性はSystemである.Drawing.RecongleFタイプは、Cocoa Touchで本来使用されていたCGRectではありません.NSArrayのようないくつかのタイプでは、MonoTouchも適切な場所で強いタイプの配列に変換される.デバッグでは、MonoTouchはMonoのSoft-Debuggerを使用し、シミュレータ、実機、さらにはWIFIでのデバッグをサポートしています.
MonoDroidはAndroidシステム向けのアプリケーション開発キットで、ほぼMonoTouchと同じで、現在プレビューリリース段階にあり、少量の早期予約のユーザーだけがSDKを手に入れた.
Chrisによると、MonoTouchとMonoDroidがあれば、Jsonのような既存のオープンソースプロジェクトを含む相当部分のコードを多重化することができるという.NET、FlickrNetおよびXnaTouch.XnaTouchはMonoTouchベースのXNAフレームワークで実現され、XBoxおよびWP 7上のゲームのiOSへの移植作業を簡素化しています.ただし、多重化時にバイナリファイルを共有するのではなく、異なるプラットフォームに対してコードを再コンパイルする必要があります.
UIセクションでは、3つのプラットフォームにそれぞれオリジナルのソリューションがあります.WP 7のほか、iPhoneとAndroidはそれぞれMonoTouchとMonoDroidが提供するオリジナルAPIのC#バインドを使用して開発されている.例えば、MonoTouchがUI開発を行う際に使用するのはiOS標準のアプリケーションのアーキテクチャであり、そのMVCドライバ方式を含む.開発者はInterface BuilderでXIBファイルを編集することができ、MonoTouchは自動的にXIBの内容に基づいてローカルクラスでC#コードを生成し、すべてのoutlet、actionなどの要素がコードに反映されます.
Chrisはまた、プラットフォームに対して特定のコードを記述する必要がある他の場所についても言及しています.例えば、ファイルのストレージでは、MonoTouchとMonoDroidはローカルパスのように直接データを書き込むことができますが、WP 7では独立したストレージを使用する必要があります.
void
SaveLocal(
string
data) {
#if
(MonoTouch || MonoDroid)
File.WriteAllText(_localPath, data);
#elif
WINDOWS_PHONE
using
(var appStorage
=
IsolatedStorageFile.GetUserStoreForApplication()) { var file
=
appStorage.OpenFile(_localPath, FileMode.Create); FileExtension.WriteAllText(file, data); }
#endif
}
同様に、WebClientを使用してデータを取得する場合、MonoTouchおよびMonoDroidでDownloadFile関連メソッドを直接呼び出してファイルをダウンロードすることができ、WP 7ではOpenRead関連メソッドを使用してバイナリデータストリームを処理する必要がある.
Chris氏は講演で、プラットフォームにまたがるTwitterアプリケーションの開発過程を示し、彼のブログでWP 7とMonoDroidの開発ビデオ、および完全なスライドコンテンツにアクセスすることができます.Chrisは他の人と一緒にMonoTouchの開発を説明する本を著した.