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

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

.NET Framework, C#: SinatraインスパイアのWebフレームワークNancyを試す

                
 SinatraはRubyの軽量Webフレームワーク。公式ページトップにあるHelloWorldは下記のとおりで、ほんの数行しか必要ない。
require 'sinatra'

get '/hi' do
"Hello World!"
end

 まるでおもちゃのようだが、イギリス政府のWebページに使われたことがあったりと実用性はあなどれない。

 以前にC#でASP.NET MVC 5入門をしてみた。とても便利だが、抽象化してフレームワーク内部で扱うものがそれなり多いので、独特のパターン(と言ってもWebフレームワークではほぼデファクトスタンダートのパターンになっていたりするが)の勉強が必要になってくる。もっと軽量でコンパクトな開発ができるそれなり著名なフレームワークが.NET環境の開発のためにないかと探してみたところ、SinatraインスパイアのNancyというものがあった。で、実用性どの程度なのというところ。
 一般的に不安に思われるのは、C#なんだしWindowsサーバでしか動かないんではというあたり。しかしプロジェクトページを見ると、ASP.NETを初めとして、Ubuntu上のnginXで、RaspberryPiでというように、Monoを利用してクロスプラットフォームで動かしている。そこらの軽量言語みたいにクロスプラットフォームができているなんてなかなか便利。
 というわけで今回は本当にこのC# with Nancyでクロスプラットフォームで動くWebアプリができるかをGetting Startedがてら試してみる。単純にWindowsで動かしてみるって記事はほかにすでにあるので。
 ちなみ下記がNancyでのHelloWorld。やっぱりシンプル。
public class SampleModule : Nancy.NancyModule
{
public SampleModule()
{
Get["/"] = _ => "Hello World!";
}
}



 開発はWin7のVS2010で行うことにする。Nancyを使った開発に便利なプロジェクトテンプレートをダウンロードして、インストールする。
http://visualstudiogallery.msdn.microsoft.com/f1e29f61-4dff-4b1e-a14b-6bd0d307611a
 VS2010を選び、テンプレートからNancy Application with self hostingを選ぶ。
1408210200138.jpg
 このself hostingというのがクロスプラットフォーム化のキーだ。このプロジェクトを実行ファイル化し、Windowsでは.NET Framework、LinuxではMonoに実行してもらうことでクロスプラットフォーム化を実現している。
 今回の目的はこれがWindows上でもLinux上でも動くか確認すること。デフォルトのコードでもルートページに画像が一枚表示されるようになっているので、今回はコードに触れない。そのままデバッグを開始する。

 VSのメニューからデバッグを実行したらエラー。名前空間予約のエラーで、下記のようなコマンドを打てと指示されるのでそのとおりに。管理者権限も要求されるので、管理者権限でコマンドプロンプトを開いて実行する。
netsh http add urlacl url=http://+:9999/ user=Everyone
上記のようなコマンド実行をすれば、デバッグが可能になる。ブラウザを開いて、プロンプトに表示されているアドレスにアクセスし、画像が表示されることを確認する。
 デバッグが成功しているならプロジェクト内のbin\Debugディレクトリに、実行ファイルやプロジェクトに必要なファイルが置かれている。Debugフォルダごとコピー。ここまでがWindows。NancyのドキュメントページではプロジェクトのビルドにプロンプトからMonoのxbuildを使っていたが、VSに任せてビルドしても今後に問題は起きなかった。

 ここからLinux。VMPlayerに入れたMintを使う。MintにはMonoをインストールしておく。共有フォルダを使うなどして、さきほどコピーしたDebugフォルダをMint内に持ってくる。持ってこれたらMonoを使って実行ファイルを動かす。
mono [project name].exe
ターミナルにアドレスが表示されるだろうから、ブラウザからアクセスしてみる。Windowsでやったときと同様に画像が一枚表示される。
14082101352060.jpg

 とりあえずNancyがクロスプラットフォームで使えることはわかった。これからさらに実用性や有用性を探っていきたい。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

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

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。