web-dev-qa-db-ja.com

LinuxにASP.NET MVCを展開する:ベストプラクティス、ツール、および驚き

Linuxに展開するオプションを備えたASP.NET MVCアプリを開発するためのベストプラクティスについて疑問に思っています。これらの種類のMVCアプリを作成する場合、

  • どのLinux/Monoプラットフォームをターゲットにしていますか?
  • Windowsでどの程度の開発を行っていますか?
  • ORMを使用してデータベースを抽象化していますか?どれ?
  • Linuxでビルドエンジンを実行していますか?テストはどうですか?
  • 他にどのようなツールを使用していますか?
  • Windowsに加えてLinuxをターゲットにするためにどれだけの追加作業が必要ですか?
  • あなたはどんな醜いまたは楽しい驚きに遭遇しましたか?
66
keithm

私が働いている会社は、Linuxのメインをデプロイメント環境としてターゲットにしています。したがって、「追加の」作業はありません。ハードウェアからオペレーティングシステム(カスタマイズおよびトリミング)を介してアプリケーションまで、スタック全体を提供します。オープンソースを使用すると、私たちとクライアントに多大な節約をもたらします(もちろん、私たちは依存しているOSプロジェクトに貢献しています)。

重要なことは、実際のターゲットを使用して常にテストすることです(申し訳ありませんが、Windows上のMonoはカウントされません)。もちろん、開発者はVisual Studioを使用しますが、継続的な統合( CruiseControl.Net を使用して、Linuxで実行するにはMono 2.4.2が必要です)はWindowsとLinuxの両方で行われ、すべてのMonoバージョンをテストします作業する予定です(最近はより安定していますが、それでもリリース間でリグレッションが発生します)。 1つの* nixシステムで 並列Monoバージョン を実行するのは非常に簡単です。上流のリグレッションを早期にキャッチしたい場合は、svnスナップショットビルドを含めることもできます。独自のディストリビューションを展開しない場合、ほとんどのLinuxベンダーがMonoにカスタムパッチを同梱していることを忘れないでください。また、多くのディストリビューションにはMonoの更新に多くの遅延があり、これは急速に進歩しているプロジェクトです。

データベースレイヤーには、主に「プレーン」なADO.NETを使用します-Oracle( dotConnect for Oracle を使用すると、MonoはMonoをサポートします)およびSQLite(Monoには動作するコネクタが付属しています)。また、公式の MySQL用のADO.NETドライバー(コネクター/ NET) も使用しましたが、これもうまく機能します。 ORMマッピングはよりトリッキーですが、NHibernateは使用可能です(それらはMonoを公式にサポートしていないことに注意してください)。

ビルドエンジンとテストについては、 NAntNUnit はよく知られており、十分にテストされています。 Mono xbuild(MSBuildのクローン)の最新バージョンでは実際に使用できるようになりましたが、より複雑なシナリオで使用する場合は、パッチをたくさん提供する準備をしてください。

テストを記述します。それらの多くは。パッチとバグレポートを提供する準備をしてください。商用コンポーネントを使用している場合は、サプライヤがMonoを正式にサポートしていることを確認してください。

34
skolima

Nathan Bridgewaterのブログには、特にいくつかの素晴らしい記事があります。

  • モノでカミソリを使ってMVC3を実行する
  • windows/SQL ServerからLinux/MySQLへのASP.NET MVCの移行
  • monoDevelopのインストールと実行
  • ソースからモノをインストールする

http://iws.io/get-mvc3-razor-running-on-mono/

4
Drew Noakes

Mono project を見てください。そのような音はあなたが探しているものです。私の記憶が正しければ、ASP.NET MVCが統合されています。

私はMonoを使ったことがありませんが、私の理解では多くの違いはありません。

1
mkchandler