オープンソースCMS「DotNetNuke」のセットアップ
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Jonathan Allen , 翻訳者 尾崎 義尚 投稿日 2011年10月14日
非同期テクノロジは、アプリケーション全体のスループットを大幅に向上するが、それはタダではない。非同期機能は、同期の代替よりも遅いことがあり、また注意を払わないと大幅にメモリを圧迫することになる。MSDN MagazineのStephen Toub氏は、先日「非同期のパフォーマンス:AsyncとAwaitのコストを理解する」というタイトルの記事で、このトピックについて取り上げた。
マネージドコードがネイティブC++を超えて、最も優れている機能のひとつは、実行時の関数埋め込みである。CLRのJITコンパイラは、アセンブリをまたいで関数埋め込みができ、OOPプログラマが好む細かいメソッドのオーバーヘッドを大幅に削減することができる。残念ながら、非同期呼び出しの本質は、委任で、埋め込みができないことを意味する。さらに、非同期呼び出しの準備をするための複雑な定型コードが必要になる。Stephen氏の最初の提案は、「よく喋るのではなく、大きく考えよう」。COMとp/invoke境界をまたぐ必要があるとき、小さく大量にではなく、少量の大きな非同期呼び出しをするべきである。
非同期パターンには開発者が明示的にnewオペレーター使うことなく、メモリを確保するいくつもの方法が存在している。このチェックを怠ると、メモリを過剰に圧迫して、ガベージコレクタが回収するために予期しない遅延が発生するだろう。Streamのサブクラスからの戻り値について考えてみよう。
public override async Task<int> ReadAsync(…)
return this.Read(…)
Readメソッドによって返されたintegerをラップして暗黙的に作られたTaskオブジェクトが示されていない。Stephen氏の記事の中では、最後のTask<int>をキャッシュした上で、それを再利用して、メモリのオーバーヘッドを削減する方法を紹介している。
他の想定外のオブジェクトが確保されて、保持される理由は、クロージャーの利用である。C#とVBのクロージャーは、メソッドの匿名と非同期関数を含む、匿名クラスとして実装される。これらの関数に必要なローカル変数は、匿名クラスに「クローズオーバー」または、「リフト」と言われる。このクラスのインスタンスは、親メソッドが呼ばれるたびに作成される。
しかし、余計なメモリ確保の問題はこれだけではない。通常のローカル変数によるのオブジェクト参照は強く主張しており、現在の関数で使わないことが明らかになるとすぐにGCが回収することができる。匿名関数によって使われる“ローカル変数”は、実際には非同期クラスのフィールド変数であり、呼び出しの間、保持されなくてはならない。もし、数秒かかる場合、一般的な非同期呼び出しではなく、匿名クラスは予期せずに、より高価な第1または2世代に昇格してしまうかもしれない。Stephen氏は、これが問題になる場合、不要になった時点で明示的にローカル変数にnullをセットすることを推奨している。
Stephen氏の3番目の問題として、コンテキストの概念、特にsynchronization contextとexecution contextについて議論している。 彼の記事では、どうやってライブラリコードがConfigureAwaitメソッドを使って、意図的にsynchronization contextを無視し、execution contextがキャプチャが必要なことを避けることによって、パフォーマンスを向上することができるかを示している。
前回はMicrosoft Web Platform Installerを利用して、DotNetNukeとWebMatrixをインストールする方法を紹介した。今回は、DotNetNukeのインストール方法を紹介する。
DotNetNukeは、Windows Serverで動作するCMS(Contents Management System)である。この記事ではWeb Platform Installer を利用して人気CMS「DotNetNuke」と無償Web開発環境「WebMatrix」のインストールする方法を紹介する。
クラウドコンピューティングを前提とした大規模データ技術が利用可能となってきています。Big Dataが一過性のブームで終わるかどうかにかかわらず、スケーラブルな分散アーキテクチャーの基盤はデータベース技術に主導されつつあります。RDBとORM主体のエンタープライズシステムは、HadoopやNoSQLとの組み合わせにより複合的なデータモデルに発展しました。
2011年12月8日~2011年12月9日に、ロンドンのSkills Matter eXchangeにて開催された「Groovy & Grails eXchange 2011」の参加報告を、日本Grails/Groovyユーザーグループのメンバーが3回に渡って紹介します。
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続���開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
No comments
スレッド表示 返信