主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

ASP.NET on Linux

                
 .NET CoreのLinux対応によってASP.NETがクロスプラットフォームでもということで、ASP.NETアプリをLiinuxで動かしてみる。以前にもASP.NET + NancyをLinux上で動かしてみたりしたが、それはコンパイル済みの実行ファイルにして動作させていた。今回は実行ファイルではなくコードのままLinux環境へ持っていきそのままWebアプリとして動くようにしたい。

 とりあえず動くことを確認したいのでHelloWorld程度のものでいい。MSの記事を参考にやってみる。ありがたいことにDockerfileまでついたサンプルを紹介してくれているのでそれを使う。
http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications-in-linux-containers-with-docker.aspx


 まずはASP.NETから。下記からサンプルとしてBeta6をもってきて解凍する。自分のマシンでは既にBoot2Dockerが使えるようにしてある。
https://github.com/aspnet/Home/releases
 解凍したらBoot2Dockerを立ち上げてそこにlatest/HelloWebをマウントし、HelloWebへ移動する。あとはdocker buildする。Dockerfile内では、project.jsonを参考に依存パッケージがこのプロジェクト用にダウンロードするコマンドを実行している”dnu restore”。これがタイムアウトになってエラーでDockerイメージのビルドが中断されたりするが、あきらめずに2、3回程度ビルドを実行したら最後まで通った。……NuGet安定してないんだろか?それともこっちの問題だろか。同様のエラーケースの報告は簡単に見つかったが。
 Dockerイメージのビルドが済んだらあとは走らせるだけ。特にファイル編集もなく問題なし?でASP.NET on Linuxが動作確認できた。
1508111230175.jpg


 続いてASP.NET MVCのサンプルを動かす。上で解凍したサンプルの中にlatest/HelloMvcというのがある。これをDockerで動かそうとしたところ、依存パッケージ収集コマンドであるdnu restoreが成功しなかったのでDockerでなく仮想マシンで用意したLinuxMint環境でファイルをいじって試行錯誤しながら進めた。
 まずドキュメントに従ってもろもろインストール。.NET系の実行環境としてMono、ASP.NET 5が依存のあるlibuv、.NETのバージョンマネージャを入れ、NuGetの設定ファイルを用意する。
http://docs.asp.net/en/latest/getting-started/installing-on-linux.html
 NuGetの設定ファイルはドキュメントにのったままのものではdnu restore実行時にエラーが出たので内容を追加したものを用意した(参考)。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" />
<add key="NuGet" value="https://nuget.org/api/v2/" />
<add key="Roslyn" value="https://www.myget.org/F/roslyn-nightly/" />
<add key="DotNet" value="https://www.myget.org/F/dotnet-corefx/" />
</packageSources>
</configuration>


 必要なものがそろったらdnvmのアップデート。
dnvm update

 Mint内でサンプルを落としてきて解凍し、HelloMvcディレクトリへ移動。
https://github.com/aspnet/Home/releases

 dnu restoreを実行。エラーで失敗するかもしれない。単純なサーバーとの通信のタイムアウトもあるし、もうちょい別の理由もある。エラー内容でぐぐったりGithubのissuesを見ればどうにかなった。とりあえず依存パッケージが落ちてくるまでめげずにdnu restoreすること、NuGet.configの書き換え(上で既に説明済み)などで解決できた。

 ここまできたらあとはWebアプリとして実行するだけである。コマンドは"dnx kestrel"。Dockerfikeにはあいだに"."が入っていたりしたが、「"."? dnxでは引数をWebかkestrelで実行せんか」とメッセージをもらったので"dnx kestrel"として実行した。これでWebサーバとして動くはずである。もし実行環境がdnvmの最新版を求めていたりしたら下記コマンド。
dnvm upgrade -u

1508121351102.jpg


 とりあえずLinuxにコードを持って行ってもASP.NET、ASP.NET MVCが動くことは確認できた。ただこれはまだベータ段階である。この先の正式リリースで細かいコマンドが変わることは考えられる。
スポンサーサイト



ASP.NET 5の情報を探っておく

                
 次期リリースされるASP.NET 5ではLinux、Mac対応の.NET Coreの登場やらなんやらで、これまでを踏襲しつつもまた新しい変化が盛り込まれている様子。Windows 10が出たときにぼくはそれなり早く移行したいと考えている。なので開発環境はVisual Studio 2015になり、ASP.NET 5開発を行えるので、それがどんなものになっているかを調べておく。
 Webアプリケーション作成にはスクリプト言語が人気だが、TwitterはRubyから移行があったしFacebookもPHPの独自の実行環境を用意した。一方でStackOverflowはASP.NET MVCを使い続けているので、それでやりたいことはできているということだろう。それを考えるとASP.NETを選択の一つとして持っておくのはありだ。ということで最新版となるASP.NET 5。


1..NET Framework上でも.NET Core上でも、つまりWindows上でもLinux上でも動くASP.NET 5
 マイクロソフトは従来の.NET Frameworkに加え、オープンソースの.NET Coreを発表した。.NET CoreはASP.NET 5も走らせることができる.NET Frameworkのサブセットとされていて、動作環境にはLinuxとMacを含んでいる。つまりはサーバとしてよく使われているLinuxでもASP.NETアプリケーションを動かすことができる。Windows専用?そんなことはない。
 一つのフォルダに必要なファイルをすべてまとめられるので、Windowsで作っておいてLinuxに移すというのも楽だろう。ファイルをまとめておけばいちいち.NET Coreなどをインストールしなくても済む。
http://www.publickey1.jp/blog/15/macos_xlinuxnet_core.html


2.MVC、Web API、Webページの統合
 ASP.NETを動かせる環境に変化があった。ではASP.NET自体はなにが変わったか。
 これまではASP.NETでWebアプリを作ろうとすると、Visual Studioから「MVC、Web API、Webページのどれにする?」と問われた。ASP.NET 5ではWebアプリを作る機能が統合されたので、この問いがない。これまで分離していたものが相補的に使える。
https://weblogs.asp.net/scottgu/introducing-asp-net-5
http://codezine.jp/article/detail/8537


3.Visual StudioによるBower、Grunt、Gulpのビルトインサポート
 クライアントサイドのJavaScriptやCSSをもにょもにょしたいときに使うBower、Grunt、GulpがVisual Studioのビルトインサポートとなった。このあたりのものはそれぞれ日本語解説が出てきたので使いたければ学ぶ。GruntとGulpは似ていて競合しているようなのでとりあえずどっちかだけ学んでもOKだろう。


 とりあえずASP.NET 5がどんなものか動かして試したいという場合はドキュメントを参照。
http://docs.asp.net/en/latest/index.html#
……ドキュメントがSphinxのReadtheDocsテーマで作られている。ぼくも自作ライブラリのドキュメント作成に使って便利さを痛感していたのでなるほどなーと感じる。AzureでDjangoデモの記事があったりPythonのVisual Studioサポートツール作ったりで、MSのPython利用?がかなり表に出てきているようにも思う。Windowsユーザがスクリプト言語選びで迷ってたらPythonもありと言えるかもしれない。
プロフィール

h

Author:h

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon