はじめに C++、C++/CLI、C# の比較 生産性 拡張性 規模感 得意分野 3人がこう思う使いどころ まとめ.

Slides:



Advertisements
Similar presentations
マイクロソフトがホスティングする拡張性に優れたサービス ベース アプリケーション プラットフォーム.
Advertisements

この部分こそが必 要とされている ! Runtime 自身と Expression が カバーする!
Windows Azure ハンズオン トレーニング Windows Azure Web サイト入門.
Oscar Koenders Principal Group Program Manager Microsoft Corporation
第28回codeseek勉強会 WPF で簡単ビデオ再生 2008年5月27日(火)
D2-301 現時点の本資料は 完成版のスライドではありません。
MSON-B2 .NET Framework Web アプリケーション開発
Microsoft Consumer Channels and Central Marketing Group
Windows Summit /1/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Windows Summit /1/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Windows Summit /1/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
C# Programming .NET / C# Group 検索ワードでみる C#の困り事とその対策
3/2/2017 9:01 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Windows Phone アプリケーションでの データ視覚化
3/3/2017 8:49 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
3/4/ :37 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Expression Blend 3で始めるSilverlight 3アプリケーション開発
ParadoxのLiveScripting事情
Using connected devices in Metro style apps Metro スタイル アプリで デバイスを使用する
3/11/2017 7:02 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
WindowsストアアプリをC++/CXで作る
Windows Summit /13/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
クラウド開発の高速道路 ~Visual Studio 2010 による Windows Azure アプリケーション開発~
MIX 09 3/14/2017 9:51 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Microsoft Consumer Channels and Central Marketing Group
3/17/2017 1:49 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
データはお客様に属し、かつ、コントロール可能
HP ProLiant DL980 G7 SQL Server 2008 R2 NUMA 環境 ベンチマークテスト結果報告書
ビジネスにおける オープンソースの利用価値
XAML の勉強不要! WPF アプリケーションは作れます
大学におけるクラウド活用の 最新動向と先進ソリューションの 事例
3/21/2017 3:39 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Using tiles and notifications タイルと通知の使用
[コース: A1] .NET Framework の基礎
Windows Summit /6/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Windows Summit /8/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Windows Summit /9/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Microsoft Consumer Channels and Central Marketing Group
9/17/ :17 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Microsoft Partner Network Office 365 社内使用ライセンスの有効化
Microsoft Consumer Channels and Central Marketing Group
Azure Pack そして災害対策 日本マイクロソフト株式会社 エバンジェリスト 高添 修
11/9/2018 3:35 AM Windows Azure Platform ハンズオン トレーニング Windows Azure アプリケーション開発概要 ~ Windows Azure 入門編 ~ © 2007 Microsoft Corporation. All rights reserved.
Windows Summit /22/2018 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
Windows Summit /11/23 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
Windows Summit /24/2018 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
Expression Blend 3で始めるSilverlight 3アプリケーション開発
Chad Siefert Senior Test Lead Microsoft Corporation
Windows Azure 通知ハブ.
12/9/ :14 AM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Windows Summit /31/2018 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
suppose to be expected to be should be
Microsoft Visual Studio 2005 Tools for
.NET Framework 3.0 概要 (旧称 : WinFX)
Windows Summit /21/2019 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Windows Summit /22/2019 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
MIX 09 2/23/2019 1:22 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Max Morris Principal Program Manager Microsoft Corporation
Windows Summit /24/2019 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
主要関係者の特定用テンプレート Windows 10 and Office 365 導入ステップ 2/24/2019
Yochay Kiriaty Senior Technical Evangelist Microsoft® Corporation
~ 第5回 認証のためのプロキシー Web Application Proxy
Windows Summit /4/10 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
Craig Rowland Senior Program Manager Microsoft Corporation
Microsoft Consumer Channels and Central Marketing Group
C++/CLI カクテル・レシピ episthmh (゚Д゚)ウマー Microsoft MVP, Visual C++
Windows Summit 2010 © 2010 Microsoft Corporation.All rights reserved.Microsoft、Windows、Windows Vista およびその他の製品名は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
Windows Summit /22/2019 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
MIX 09 8/2/2019 8:06 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Windows Azure メディアサービス
Presentation transcript:

はじめに C++、C++/CLI、C# の比較 生産性 拡張性 規模感 得意分野 3人がこう思う使いどころ まとめ

C++ 、 C++/CLI 、 C# は、兄弟のような存在 ではあるが、各々が現役で置き換わるような言語 ではない。 επιστημηの勉強会では、 C++/CLI を native / managed の仲介役として紹介した。 だとしたら、 C++ 、 C++/CLI 、 C# はそれぞ れにいいところや得意とするところがあり、多言 語開発環境の良さも、技術者の皆さんも分かって いるんじゃないか。 皆さんも我々と一緒に欠点の指摘ではない C++ 、 C++/CLI 、 C# の適材適所を話し合っていきま しょう。

生産性 拡張性 規模感 得意分野

既存資産をそのまま利用可能 個人のスキルに強く依存 言語仕様の複雑化 多重継承 例外 Template

RAD 環境で簡単に実装 MVC パターン・基盤整備などに分離できる 初心者から熟練者まで活躍できる コンポーネントを購入してUIを拡充しやすい 言語仕様の複雑化 例外 Generics あまり使わない機能もある( yield return とか) データベースとの親和性 DataSet Linq

既存資産をそのまま利用可能 個人のスキルに強く依存 言語仕様の複雑化 多重継承 例外 Template 言語仕様のさらなる複雑化 Managed object Generics などなど、.NET とのハイブリッド構造 ( Managed C++ よりマシ) ここまでは C/C++ と同じ。これに加えて

OS に依存しないポータビリティ C は C で、C++ は C++ で作成可能 実行時イメージ(メモリイメージ)が同じであればクラスメ ソッドであっても追加できる拡張性の高さ 下位互換を維持したまま拡張ができる メンテナンス性が著しく下がる 具体例:MFC4.2~6.0までの各バージョン

購入したりWebサイトから情報を得てコンポーネントを拡 張できる 新技術のターゲット言語になりやすい LINQ AJAX WPF・WCF・WF SQL CLR VSTO.NET Framework が Win32API ベースでなくなると C++ の代わりに基盤言語として存在可能か?

必要に応じて C, C++, C++/CLI を自由に混在可 native / managed 双方のライブラリが呼べる 拡張性は相当のキャパあるけど…やりすぎは禁物? 無理して使うもんじゃないよ

少人数でのスペシャリストによる開発 コアコンポーネントの開発 全体性能(レスポンスとパフォーマンス)を必要とするもの

多人数での画面・帳票を多く含む開発 UIベースで高速性能を求められないもの 画面・帳票とデータベースを中心とする業務 Webによる多画面の開発 3層構造やSOAP・SOAなど多くの資源を必要とする開発

(C/C++と同じく)少人数でのスペシャリストによる開発 nativeなコアコンポーネントと.NETとの仲介役 IDEの生成するUIコードには問題あり → 「すべてをC++/CLIで実装」はお勧めしない! (WPFとほほ-だし…)

OS やドライバとの直接的な連携部分 OLE クライアント/サーバー/オートメーションサーバー Shell - Extension グローバルフック デバイスドライバ インストーラ Bootstrapper (インストーラ起動アプリ)

なんといっても RAD 環境による簡単な開発 多人数でのチーム開発 UIとデータベース中心の開発 新技術のおためしの場として

なんといっても native / managed の仲介役 既存 legacy ライブラリの.NET での利用.NET 化のための薄いラッパー C/C++ コードの.NET への移植 ↑ 文法は C# チックなC++ STL/CLR, marshaling library など、手駒は十分♪ C++感覚で.NET Programming まずは名脇役として

DEMO

C++C#C++/CLI 1.1 ドライブ検出 1.2 ドライブ検出 2.1 列挙開始 2.2 列挙開始 3.1 ファイル追加 3.2 列挙完了 4. ファイル群取得 Windows メッセージ Managed 呼び出し MFC (exe) アセンブリ (dll)

class CMainFrame : public CFrameWnd { // 省略 … afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD_PTR dwData); }; BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) // 省略 … ON_WM_DEVICECHANGE() END_MESSAGE_MAP()

BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData) { BOOL bResult = CFrameWnd::OnDeviceChange( nEventType, dwData ); // メディアが挿入されたことをビューに通知 return bResult; }

class CDevChangeHint : public CObject { public: CDevChangeHint( UINT nEventType, DWORD dwUnitMask, WORD nFlags ); ~CDevChangeHint(); boolIsInserted() const; CStringTargetVolume() const; boolIsVolumeTypeMedia() const; boolIsVolumeTypeRemote() const; boolIsVolumeTypePhysical() const; };

CDevChangeHint hint(nEventType, pDBCV->dbcv_unitmask, pDBCV->dbcv_flags ); CDocument* pDoc = GetActiveDocument(); pDoc->UpdateAllViews( NULL, WM_DEVICECHANGE, &hint );

private ElementHost ctrlHost; private MnowTechedBofWpf.TechedBofWpf techedBofWpf; private void UserControl1_Load (object sender, EventArgs e) { ctrlHost = new ElementHost(); ctrlHost.Dock = DockStyle.Fill; panelWpf.Controls.Add(ctrlHost); techedBofWpf = new MnowTechedBofWpf.TechedBofWpf(); techedBofWpf.InitializeComponent(); ctrlHost.Child = techedBofWpf; }

public void DoEmbossBitmapEffect() { this.image1.BitmapEffect = new EmbossBitmapEffect(); } public void SetBitmapFileName (string source) { this.image1.Source = source; }

class Native { … }; ref class Managed { Native* native; public: Managed() { native = new Native(); } ~Managed() { this->!Managed(); } !Managed() { delete native; } … }; クラスの場合、ポインタに限る new/delete をお忘れなく auto_ptr 使用不可 インスタンスのコピー時に注意 !

#include しませう! ref class Managed { … }; class Native { gcroot managed; public: Native() { managed = gcnew Managed(); } ~Native() { /* delete managed; は不要 */} … }; クラスの場合、直接メンバになれない gcnew をお忘れなく インスタンスのコピー時に注意 !

ref class Proxy { HWND hWnd; // PostMessage 先 UINT Msg; // PostMessage コード IList files; // 列挙ファイル群 public: void AddFile(wchar_t* file) { files.Add(gcnew String(file)); } IEnumerable GetFiles() { return files; } void StartEnumeration(Char drive) { PostMessage(hWnd,Msg,0,drive); } … };

生産性 拡張性 規模感 得意分野

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.