イントレ。
Tag for ".NET"
Microsoft WebMatrix beta
新しいWeb開発環境らしい。
以前あったWebMatrixとも、ASP.NETホスティングサイトとも違う。
WebPlatformInstaller3を使って、PHPとかSQLServerExpressなどとまとめてインストール出来る。
で。今回は本気度がパネェっす。
ASP.NETの新しい表記方法 razor に対応したIIS Express(7.5相当品?)、SQLCE4.0、
・・・を統合した軽くてシンプルなIDEがWebMatrixらしい。
まず目をひくのがrazor。
HTMLにC#(やVB)のコードを混在出来るようになった感じ。(.cshtml/.vbhtml)
@をひとつ入れるだけ(複数行は@{})というシンプルさで見通しがいい。
これだけだとASP.NETやPHPと一緒に思えるけど、最大の違いはテンプレート機能が埋め込まれてること。
レイアウト用ページ(旧ASP.NETでいうマスタページ)にRenderBody()が仕込んでおいて、
表示用ページにレイアウト用ページを指定するだけで、展開してページを生成してくれる感じ。
フォームでポストされた処理も同じページ内に記述するので、とにかく見通しがいい。
DBを使う場合も、コード上から気軽にアクセスできて、WebMatrix上から気軽に作成・編集ができる。
また、サイトのレポート機能があって、アクセスエラーしたページとかfavicon読めなかったよとか教えてくれる。
自分はMS製ツール/フレームワークは複雑でクセが強いというイメージがあるんだけど、
WebMatrixは必要な機能だけに絞られているので、迷うことなく使える感じがする。
SQLCE4に関しては詳しい情報が謎なのでパス。COLLATE周り強化されてるといいけど・・・。
IISExpressはコンソールから動かせるIISサーバーで、サービスベースのIISとほぼ同じコードを使っているらしい。
SQLCE同様にインストール不要で再配布OKらしいので、アプリケーション用組み込みサーバーとしていいかも。
そんな感じで、ASP.NET開発環境が一気にグレードアップしそうです。
Razorみたいな見通しの良さはWPFにも是非欲しいなぁ。
新しいWeb開発環境らしい。
以前あったWebMatrixとも、ASP.NETホスティングサイトとも違う。
WebPlatformInstaller3を使って、PHPとかSQLServerExpressなどとまとめてインストール出来る。
で。今回は本気度がパネェっす。
ASP.NETの新しい表記方法 razor に対応したIIS Express(7.5相当品?)、SQLCE4.0、
・・・を統合した軽くてシンプルなIDEがWebMatrixらしい。
まず目をひくのがrazor。
HTMLにC#(やVB)のコードを混在出来るようになった感じ。(.cshtml/.vbhtml)
@をひとつ入れるだけ(複数行は@{})というシンプルさで見通しがいい。
これだけだとASP.NETやPHPと一緒に思えるけど、最大の違いはテンプレート機能が埋め込まれてること。
レイアウト用ページ(旧ASP.NETでいうマスタページ)にRenderBody()が仕込んでおいて、
表示用ページにレイアウト用ページを指定するだけで、展開してページを生成してくれる感じ。
フォームでポストされた処理も同じページ内に記述するので、とにかく見通しがいい。
DBを使う場合も、コード上から気軽にアクセスできて、WebMatrix上から気軽に作成・編集ができる。
また、サイトのレポート機能があって、アクセスエラーしたページとかfavicon読めなかったよとか教えてくれる。
自分はMS製ツール/フレームワークは複雑でクセが強いというイメージがあるんだけど、
WebMatrixは必要な機能だけに絞られているので、迷うことなく使える感じがする。
SQLCE4に関しては詳しい情報が謎なのでパス。COLLATE周り強化されてるといいけど・・・。
IISExpressはコンソールから動かせるIISサーバーで、サービスベースのIISとほぼ同じコードを使っているらしい。
SQLCE同様にインストール不要で再配布OKらしいので、アプリケーション用組み込みサーバーとしていいかも。
そんな感じで、ASP.NET開発環境が一気にグレードアップしそうです。
Razorみたいな見通しの良さはWPFにも是非欲しいなぁ。
どっちが早いのか気になったので、ちょっとテストしてみた。
フィールドとプロパティの通常・リフレクション経由の読み書きを100万回行って時間計測。
read-field(normal): 27.3012ms
read-property(normal): 58.4602ms
read-field(reflection): 395.7991ms
write-property(normal): 397.8156ms
write-field(normal): 398.9727ms
write-field(reflection): 1005.3316ms
read-property(reflection): 2019.6969ms
write-property(reflection): 3130.8138ms
やっぱりフィールドへの読み書きは早いですね。
そして、プロパティへのリフレクション経由読み書きは絶望的なほど遅いですね・・・。
ついでにLambdaExpressionのメンバー名取得も計測。
INotifyPropertyChangedのいけてる実装とかでつかってるやつ。
GetName(() => PROPERTY); // == "PROPERTY"
みたいな感じで、ラムダ式で指定したプロパティ名を取得するってコードになります。
VSのリファクタ機能とか使えるので名前変更とか使ってる場所特定とか、文字リテラルを使うよりメリットは多いです。
が。10万回のテストで2019msとハンパなく遅いです。(文字リテラル指定だと2ms程度)
リフレクション絡む部分はコストが高いってことで、使い方をちゃんと考えなければいけないなぁ。
フィールドとプロパティの通常・リフレクション経由の読み書きを100万回行って時間計測。
read-field(normal): 27.3012ms
read-property(normal): 58.4602ms
read-field(reflection): 395.7991ms
write-property(normal): 397.8156ms
write-field(normal): 398.9727ms
write-field(reflection): 1005.3316ms
read-property(reflection): 2019.6969ms
write-property(reflection): 3130.8138ms
やっぱりフィールドへの読み書きは早いですね。
そして、プロパティへのリフレクション経由読み書きは絶望的なほど遅いですね・・・。
ついでにLambdaExpressionのメンバー名取得も計測。
INotifyPropertyChangedのいけてる実装とかでつかってるやつ。
GetName(() => PROPERTY); // == "PROPERTY"
みたいな感じで、ラムダ式で指定したプロパティ名を取得するってコードになります。
VSのリファクタ機能とか使えるので名前変更とか使ってる場所特定とか、文字リテラルを使うよりメリットは多いです。
が。10万回のテストで2019msとハンパなく遅いです。(文字リテラル指定だと2ms程度)
リフレクション絡む部分はコストが高いってことで、使い方をちゃんと考えなければいけないなぁ。
WPFのコンテキストメニューの見た目がなんか嫌。なの。
↓
WinFormsの使えばいいじゃん?
↓
WinForms.ContexuMenu.Show()がWinForms.Control要求する。なの。
↓
WinForms.ContextMenuStrip使えばいいじゃん?
↓
独自な外見は嫌。なの。
↓
じゃ、WinForms.ContextMenuのハンドルもらってAPIで表示すればいいじゃん?
↓
TrackPopupMenuExで実行してもクリックイベント発行されない。なの。
という経緯で、調査したらリフレクションでコマンドディスパッチャを呼び出せばOKっぽい。
具体的には、System.Windows.Forms.Command.DispatchID()メソッドを呼び出す。
Commandクラスはinternalで、DispatchIDメソッドはstatic。
DispatchIDはコマンドIDを引数にとるので、
TrackPopupMenuEx()にTPM_RETURNCMD(0x100)を指定して、コマンドIDを返すようにしてもらう。
var menu = new WinForms.ContextMenu(...);
var id = TrackPopupMenuEx(menu.Handle, 0x100, x, y, hWnd, IntPtr.Zero);
if (id != 0)
{
var asm = typeof(WinForms.ICommandExecutor).Assembly;
var type = asm.GetType("System.Windows.Forms.Command");
var method = type.GetMethod("DispatchID");
method.Invoke(null, new object[]{ id });
}
これでMenuItem.Clickイベントが発動するようになった。
とはいえinternalクラスを使ってる以上、WinFormsの中身の構成が変わったら使うものにならなくなるわけだが。
↓
WinFormsの使えばいいじゃん?
↓
WinForms.ContexuMenu.Show()がWinForms.Control要求する。なの。
↓
WinForms.ContextMenuStrip使えばいいじゃん?
↓
独自な外見は嫌。なの。
↓
じゃ、WinForms.ContextMenuのハンドルもらってAPIで表示すればいいじゃん?
↓
TrackPopupMenuExで実行してもクリックイベント発行されない。なの。
という経緯で、調査したらリフレクションでコマンドディスパッチャを呼び出せばOKっぽい。
具体的には、System.Windows.Forms.Command.DispatchID()メソッドを呼び出す。
Commandクラスはinternalで、DispatchIDメソッドはstatic。
DispatchIDはコマンドIDを引数にとるので、
TrackPopupMenuEx()にTPM_RETURNCMD(0x100)を指定して、コマンドIDを返すようにしてもらう。
var menu = new WinForms.ContextMenu(...);
var id = TrackPopupMenuEx(menu.Handle, 0x100, x, y, hWnd, IntPtr.Zero);
if (id != 0)
{
var asm = typeof(WinForms.ICommandExecutor).Assembly;
var type = asm.GetType("System.Windows.Forms.Command");
var method = type.GetMethod("DispatchID");
method.Invoke(null, new object[]{ id });
}
これでMenuItem.Clickイベントが発動するようになった。
とはいえinternalクラスを使ってる以上、WinFormsの中身の構成が変わったら使うものにならなくなるわけだが。
Visual Studio 2010 and .NET Framework 4 Release Candidate
ということで英語版が公開されました。
今のところ日本語版の提供予定はないそうです。残念。
最終リリースを延期してまで改善してきたメモリ使用量とパフォーマンスですが、すこぶる良好。
メモリ使用量はそれほど気にはしていなかったのでわかりませんが・・・。
それでも、VS2008と比べると重たいと感じる部分はありますが十分我慢できる範囲です。
これ以上求めるなら、まずはPCスペックを上げないと・・・。
.NET Frameworkの起動速度もかなりマシになっています。
WPFアプリケーションは・・・簡単な計測の結果は初期化に関わる部分(InitializeComponent)の速度が落ちていました。
それでも.NET自体の起動高速化もあってコールドブートでは.NET3.5よりは確実に早いです。
今回のリリースからGo-Liveライセンスが付与されるので、.NET4向けアプリケーションを本格始動させるのもありですね。
今までと違って内部クラスにもかなり手が入っているみたいですし、ClientProfileもかなり使い物になるはず。
System.DataがClientProfileに入ったのでSystem.Data.SQLiteもClientProfileで配布出来ますね。
そういえば、.NET4のMixedMode(混在モード)DLLが読めない件。の記事で載せてたXMLが大文字小文字の違いで無効になってた。
具体的にはuselegacyv2runtimeactivationpolicy → useLegacyV2RuntimeActivationPolicy 。
コードハイライター使わないと大丈夫なのかな?
<configuration>
ということで英語版が公開されました。
今のところ日本語版の提供予定はないそうです。残念。
最終リリースを延期してまで改善してきたメモリ使用量とパフォーマンスですが、すこぶる良好。
メモリ使用量はそれほど気にはしていなかったのでわかりませんが・・・。
それでも、VS2008と比べると重たいと感じる部分はありますが十分我慢できる範囲です。
これ以上求めるなら、まずはPCスペックを上げないと・・・。
.NET Frameworkの起動速度もかなりマシになっています。
WPFアプリケーションは・・・簡単な計測の結果は初期化に関わる部分(InitializeComponent)の速度が落ちていました。
それでも.NET自体の起動高速化もあってコールドブートでは.NET3.5よりは確実に早いです。
今回のリリースからGo-Liveライセンスが付与されるので、.NET4向けアプリケーションを本格始動させるのもありですね。
今までと違って内部クラスにもかなり手が入っているみたいですし、ClientProfileもかなり使い物になるはず。
System.DataがClientProfileに入ったのでSystem.Data.SQLiteもClientProfileで配布出来ますね。
そういえば、.NET4のMixedMode(混在モード)DLLが読めない件。の記事で載せてたXMLが大文字小文字の違いで無効になってた。
具体的にはuselegacyv2runtimeactivationpolicy → useLegacyV2RuntimeActivationPolicy 。
コードハイライター使わないと大丈夫なのかな?
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedruntime version="v4.0" />
</startup>
<supportedruntime version="v4.0" />
</startup>
</configuration>
しっかし、VS2010でMeiryoKe_Consoleが使えなくなったのはチト辛いなぁ。
しっかし、VS2010でMeiryoKe_Consoleが使えなくなったのはチト辛いなぁ。
まずはIE9。
・開発開始からまだ3週間程度だそうで、UIも最低限の技術プレビュー版のお披露目。
・HTML5への対応、CSSの改良、JavaVMの高速化、Direct2Dのサポート。
・他のブラウザと肩を並べる程度のレンダリング速度になった。
デモで気になったのはDirect2D版のパフォーマンスですね。
DirectWriteを使ってると思うんですが、おかげでテキストのレンダリング品質は十二分に良好。
スクロールもスムーズになって、描画でもたつくことはないみたいです。
Direct2Dって結構凄いのね。
でも、今のレンダリング品質等がDirect2Dによる恩恵だとすると、Direct2D使えないXPは・・・。
そろそろ非サポートのコースですかね?
で。Silverlight 4。
IE9より優先してリソースを割いたおかげか、もうベータ版がリリースされました。
[PDC09]Webカメラやローカルファイルが使える「Silverlight 4」、ベータ版を公開
・プリンタのサポート
・カメラ・マイクのサポート
・60以上のコントロール追加
・クリップボードのサポート
・右クリックやホイールのサポート、右クリックメニューも
・Google Chromeサポート
・DeepZoomのハードウェアアクセラレーション
・WPFとの親和性向上
- データバインディング強化
- Commandサポート
- 再コンパイルなしで.NET FrameworkアセンブリがSilverlight CLRで動かせる
・WebBrowser
- Silverlight内部でFlashを動かすことも可能
- WebBrowserの画面をHtmlBrushとして描画に使用することが可能
- デモではYouTUBEのビデオ再生しながらジグソーパズルやってました
・Out-of-Browserの信頼実行モード
- ローカルのファイル列挙、読み書き
- デジカメから画像拾ってくるとか
- エクスプローラからファイルをドラッグ&ドロップして開いたり
- COMでOfficeアプリを操作したり
- クロスドメインの制約も無くなる
- UDPブロードキャストもサポート
まだちゃんと情報集めきってないけど、気になった部分はこんな感じ。
OOBのウィンドウをカスタマイズしたり、通知ウィンドウを出したり出来るみたいです。
Adobe AIRに対抗心むき出しな感じが凄いw
すでにツール群はリリースされているのですが、
VisualStudio2010がフリーズしてまともに動かせない。
再インストールしてもどうにもならなかったので、OSの再インストールから始めようかな・・・。
ちなみに、日本語版のVS2010だとやっぱり駄目です。
日本語版のToolkitが12月上旬にリリースされるらしいので、それまで英語版を使うしかないご様子。
しっかし、近年のMSの本気っぷりは凄いなぁ・・・。
・開発開始からまだ3週間程度だそうで、UIも最低限の技術プレビュー版のお披露目。
・HTML5への対応、CSSの改良、JavaVMの高速化、Direct2Dのサポート。
・他のブラウザと肩を並べる程度のレンダリング速度になった。
デモで気になったのはDirect2D版のパフォーマンスですね。
DirectWriteを使ってると思うんですが、おかげでテキストのレンダリング品質は十二分に良好。
スクロールもスムーズになって、描画でもたつくことはないみたいです。
Direct2Dって結構凄いのね。
でも、今のレンダリング品質等がDirect2Dによる恩恵だとすると、Direct2D使えないXPは・・・。
そろそろ非サポートのコースですかね?
で。Silverlight 4。
IE9より優先してリソースを割いたおかげか、もうベータ版がリリースされました。
[PDC09]Webカメラやローカルファイルが使える「Silverlight 4」、ベータ版を公開
・プリンタのサポート
・カメラ・マイクのサポート
・60以上のコントロール追加
・クリップボードのサポート
・右クリックやホイールのサポート、右クリックメニューも
・Google Chromeサポート
・DeepZoomのハードウェアアクセラレーション
・WPFとの親和性向上
- データバインディング強化
- Commandサポート
- 再コンパイルなしで.NET FrameworkアセンブリがSilverlight CLRで動かせる
・WebBrowser
- Silverlight内部でFlashを動かすことも可能
- WebBrowserの画面をHtmlBrushとして描画に使用することが可能
- デモではYouTUBEのビデオ再生しながらジグソーパズルやってました
・Out-of-Browserの信頼実行モード
- ローカルのファイル列挙、読み書き
- デジカメから画像拾ってくるとか
- エクスプローラからファイルをドラッグ&ドロップして開いたり
- COMでOfficeアプリを操作したり
- クロスドメインの制約も無くなる
- UDPブロードキャストもサポート
まだちゃんと情報集めきってないけど、気になった部分はこんな感じ。
OOBのウィンドウをカスタマイズしたり、通知ウィンドウを出したり出来るみたいです。
Adobe AIRに対抗心むき出しな感じが凄いw
すでにツール群はリリースされているのですが、
VisualStudio2010がフリーズしてまともに動かせない。
再インストールしてもどうにもならなかったので、OSの再インストールから始めようかな・・・。
ちなみに、日本語版のVS2010だとやっぱり駄目です。
日本語版のToolkitが12月上旬にリリースされるらしいので、それまで英語版を使うしかないご様子。
しっかし、近年のMSの本気っぷりは凄いなぁ・・・。
Utilities
- タグ
- カレンダー
- 最近の更新
- Adsense