Javaの背景を持つ開発者のために、ASP.NETツール/プラットフォームを使用したソフトウェア開発の調査にも興味があります。
Java Webアプリケーション(.jspおよびサーブレット)は、多くのサーバープラットフォームで実行できます。
質問:Linuxベースのサーバーで.NET Webアプリケーションを実行できますか?WebサーバーをホストするためにWindowsサーバーを使用できないシナリオを検討します。
回答:
使用している特定の.NETテクノロジによって異なります。モノラルプロジェクトは、 ASP.NETのサイトを実行するためのApacheモジュール(mod_mono)を提供し、私が集めるものから、それがうまく動作します。
ただし、Monoはすべての.NET APIをサポートしているわけではありませんが、特にWPF(そしておそらくWCFも覚えていない)ですが、他の多くのフレームワークに対しては十分なサポートを提供しています。
最初から始めて、特にWindows以外のサーバーをターゲットにする場合は、プロジェクトがMonoで動作することを確認することを目標とすることをお勧めします。ただし、Monoでサポートされていない特定のAPIまたは言語機能が必要な場合は、Windowsサーバーを使用して展開する必要があります。これは、設計時またはアーキテクチャ上の選択であり、最初に構成する必要があります。
だから私はこれが古い質問であることを知っていますが、私はそれが更新された答えに耐えられると思います。
マイクロソフトはasp.net vnextとそのオープンソースを正式にリリースし、LinuxとMacの両方に展開できます。そのすべてはかなり新しいですが、最新のモノのビルドに依存しているため、現在コンパイルする必要がありますmono-framework
が、やがて、さまざまなLinuxディストリビューションがモノの更新バージョンをリリースするため、より簡単にアクセスできるようになると思います。セットアップ方法ガイドです
この情報は多少変動する可能性があり、更新は変更によるものです。
Windows開発者がコードをMono / Linuxに移植するのに役立つこのガイドを検討することをお勧めします。
私は経験から話すことができます。ASP.net WebサイトがMonoでサポートされている.NETライブラリのみを使用している場合でも、Hello Worldを超えるものを実行するのは困難です。
多くのコードを書き直す必要はありませんが、mod_mono / xsp / apacheの構成とファイルのアクセス許可とエラー処理、および大規模なWebサイトに入るすべての小さな問題に対処するために、数時間/数日/数週間を費やします。(serverfaultについて質問するのに多くの時間を費やす準備をしてください:))
問題は、多くの人がMono for ASP.netのWebサイトを使用していないため、バグを報告する人が少ないため、マイナーなバグの多くが長い間修正されないままになっていることです。
これで、Visual Studioを使用してLinux上のDockerにASP.NET 5アプリを公開できます。Scott Haselmanからの以下の投稿を参照してください
http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx
テクノロジーが進化し、この質問がグーグルで上位にランクされているので、モノを超えて新しいasp.netコアを含める必要があります。これは、asp.netを完全に書き直したもので、LinuxとWindowsでの運用とLinuxの開発で実行されます。 、WindowsおよびMac:
Windows、Mac、LinuxでクロスプラットフォームのASP.NET Coreアプリを開発して実行できます。ASP.NET CoreはGitHubのオープンソースです。
Linux上のASP.NETについては、Monoをチェックしてください。
つまり、何千ものサイトがWindows Server上で問題なく実行されています。OSが適切に構成されていないサーバーは脆弱です。Linuxは貧弱な管理者からあなたを救うことはありません。
したがって、ASP.NETアプリを提供するための "ベストプラクティス"は、Windows Server 2008(おそらくWebエディション)を使用することだと思います。そして、良い管理者を雇います。
Monoを使用して、Apache / LinuxでASP.NETアプリケーションを実行できますが、Windowsで実行できる機能のサブセットは限られています。「彼らは」Windowsが攻撃に対してより脆弱であると言っていることに関して-それは本当ではありません。IISは、Apacheよりも過去2年間でセキュリティの問題が少なくなっていますが、どちらの場合も、すべてをボックスの管理に任せています。両方のOSを簡単に保護できます。最近の攻撃ポイントは、OSやWebサーバーソフトウェアではなく、アプリケーション自体です。
現在、.NETはLinuxやMac OSなどの複数のプラットフォームで実行されていますが、モノは完全にプラットフォームに依存していません。
JITが異なるOSにあるため、Monoは異なるプラットフォームで実行されています。
Monoは月光(.NETではシルバーライト)で完全に成功するわけではありません。研究だけではありません。
MonoはXSP2サーバーまたはApacheを使用します。大企業の一部はこのプロジェクトを使用しています。ロボットプロジェクトの一部もモノで実行しています。
ApacheでASP.Netを実行できるようにするNovellのMonoプロジェクトがあります。
Monoプロジェクトが最良のオプションです。ただし、(一部の領域での不完全なAPIサポートのように)多くの落とし穴があり、法的に灰色です(Richard Stallmanのような人々は、Microsoftが特許権を使用してMonoに参入する可能性があるため、Monoの使用を無視していますが、それは別の話です)。
とにかく、Apacheはモジュールを介して.NET / Monoをサポートしますが、前回Debianで提供されたバージョンを確認したときは、Perl言語サポートのみを提供していました。それが変更されたかどうかはわかりませんが、おそらく誰かがそこで修正してくれるでしょう。