Visual Studio.NETファースト・インプレッション
4.Visual C++でのアプリケーション作成の変化Win FormsとWeb Forms−VC++プログラマから見たVS.NET−槙邑 恭介 |
これまでVC++を利用してきたプログラマにとっては、今までのプログラミングから.NETプラットフォームに対応したプログラミングへの移行の必要性があるかどうかが気になるところだろう。このTech Preview版を試用した限りでは、VS.NETの中で従来のコードがそのまま利用できるのはVC++だけであった。VC++では、これまでのMFCベースのアプリケーションはそのままビルドできるし、MFCもこれまで通りサポートされている。ATLも拡張されている。ただしC++でもCLR上で動作するManaged Codeが生成できるようになっているので、Managed Codeによるアプリケーションを作成する場合は、今までのやり方とは、記述方法がずいぶん変わっている。
Managed Codeでは、MFCは使用せず、CLRで提供されるクラス・ライブラリを利用することになっている。そしてそのクラス・ライブラリを利用するためのディレクティブやキーワードが追加されている。
VC++でのManaged Codeの記述
VC++でManaged Codeを記述する際には、利用するクラス・ライブラリを「#using」ディレクティブを用いて指定する(このディレクティブの指定の方法はJavaのimportステートメントに似ている。これはC#でも同様である)。さらにクラスや構造体の宣言の際に、ガーベジ・コレクションの有無(__gc)やインターフェイスの指定(__interface)のためのキーワードを付加する(リスト「Visual C++によるManaged Codeの例」参照)
このような指定によってVC++で記述したコードがCLR上で正しく動作するようになる。このようにして、C#やVBと同様に、Web ServiceやASP+から参照するコンポーネントの作成が可能になる。当然ながらコンパイル時にはネイティブEXEではなく、CLR上で動作するコードを生成するスイッチを指定しておく必要がある。これはプロジェクト生成時に“Managed C++ Application”を選択することで、利用目的に応じたプロジェクトとスケルトンが作成されるので、これをベースにコードを記述してゆけばよいだろう。
MFCは変わるのか?
ドキュメントでは、かなりの機能が追加されるとされているが、具体的に示されているものは多くない。2038年以降の日付もサポートするCTimeクラスやDHTMLをサポートするCHtmlEditCtrlクラス、アプリケーションからHTML Helpを利用するためのサポートなどが追加されているようである。
ATL Server
Microsoftを含め、VS.NETの紹介記事では、Managed Codeによるアプリケーションを大々的に宣伝しているが、それに混じってなぜかVC++の新機能として「ATL Server」も取り上げられている。筆者はこのCLRの仮想環境と、(ある意味では非常に泥臭い)C++のクラス・テンプレートのギャップに違和感を感じていた(たったひとつのアプローチを強制することはせず、あらゆる手段を提供することによってユーザーがどれでも選択できるようにするという、Microsoftの全包囲網的な戦略としては理解できるとしても)。ATL Serverというのは、IIS(Internet Information Server)のISAPIを効率よくラップするクラスを作成するための機能である。これは、ASPやASP+、CGIといった既存のサーバ側の処理を利用せず、クライアントからのリクエストを直接自前のATL Serverで処理できるようにするものである。この利点はなんといっても、サーバ側での高速な処理が期待できることにある。それに、今後の.NETプラットフォームでは、IISはWebブラウザにHTMLファイルを返すだけの処理から、SOAPやXMLなどを扱う分散処理環境の窓口(インターフェイス)となる場合が多くなる。そのためのカスタム・インターフェイスを提供するための強力な手段として、ATL Serverが提供されているのではないだろうか。
INDEX | ||
[特集]Visual Studio .NETファースト・インプレッション | ||
1.Visual Studio .NETの概要 | ||
2.次バージョンの統合開発環境の概要 | ||
3.Win FormsとWeb Forms | ||
4.Visual C++でのアプリケーション作成の変化Win FormsとWeb Forms | ||
5.Visual Basicでのアプリケーション作成の変化 | ||
6.Webアプリケーション開発環境として見たVS.NETとC# | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|