「NServiceKit/はじめに/最初のWebサービスを作ってみる」の版間の差分
(他の1人の利用者による、間の5版が非表示) | |||
12行目: | 12行目: | ||
*NServiceKit.Host.AspNet | *NServiceKit.Host.AspNet | ||
− | + | 2015年10月時点のNServiceKitパッケージは本家[[ServiceStack]]ほど親切ではないのでweb.configは自分で用意する必要がある。 | |
<source lang="xml"> | <source lang="xml"> | ||
<system.web> | <system.web> | ||
59行目: | 59行目: | ||
==ステップ4:サービスを作ってみる== | ==ステップ4:サービスを作ってみる== | ||
− | + | NServiceKitのサービスは[[ドメイン駆動設計]](通称[[DDD]])という哲学に従い以下の3つの要素から構成される。 | |
*リクエストDTO | *リクエストDTO | ||
*レスポンスDTO | *レスポンスDTO | ||
65行目: | 65行目: | ||
===リクエストDTO=== | ===リクエストDTO=== | ||
− | + | サービスの[[引数]]に相当する。Route属性で呼び出し用の[[URL]]がどうなるかもここで決まる。 | |
<source lang="csharp"> | <source lang="csharp"> | ||
using ServiceStack.ServiceHost; | using ServiceStack.ServiceHost; | ||
81行目: | 81行目: | ||
===レスポンスDTO=== | ===レスポンスDTO=== | ||
− | + | サービスの[[戻り値]]に相当する。 | |
<source lang="csharp"> | <source lang="csharp"> | ||
using ServiceStack.ServiceHost; | using ServiceStack.ServiceHost; | ||
112行目: | 112行目: | ||
==動かしてみる== | ==動かしてみる== | ||
− | [[Xamarin Studio]] で実行してみると[[Safari]] | + | [[Xamarin Studio]] で実行してみると[[Safari]]や[[Chrome]]、[[Vivaldi]]などのデフォルトブラウザが立ち上がると思われる。 |
==関連項目== | ==関連項目== | ||
121行目: | 121行目: | ||
{{stub}} | {{stub}} | ||
+ | |||
+ | [[category: NServiceKit]] | ||
+ | [[category: Xamarin.Studio]] |
2016年5月30日 (月) 01:04時点における最新版
目次
ステップ1:プロジェクトを作る編集
NServiceKitはいくつかの方法でホストすることができる。
- コンソールアプリケーション
- Windowsサービス
- ASP.NETやASP.NET MVCなどの一部として同化する
このチュートリアルでは「空のASP.NET(ASP.NET MVCじゃないよ)」上にNServiceKitを使ったWebサービスを作ってみる。
ステップ2:NServiceKitをインストールする編集
NuGetでNServiceKitの主要パッケージを一気にぶちこむ。
- NServiceKit.Host.AspNet
2015年10月時点のNServiceKitパッケージは本家ServiceStackほど親切ではないのでweb.configは自分で用意する必要がある。
<system.web>
<httpHandlers>
<add path="*" type="NServiceKit.WebHost.Endpoints.NServiceKitHttpHandlerFactory, NServiceKit" verb="*"/>
</httpHandlers>
</system.web>
ステップ3:NServiceKitの初期化コードを準備する編集
プロジェクトに「Global.asax.cs」ファイルが無ければ手動で追加する。Xamarin Studioの新しいファイルを追加するダイアログでは「ASP.NET Web Forms」の「コードビハインド付きGlobal.asax」がこれに該当する。
Global.asax.csファイル を追加したら以下のように編集する。 この例では指定したクラスと同一のアセンブリ内にあるサービス(NServiceKit.ServiceInterface.Serviceクラスを継承したクラス)を登録している。
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
namespace WebApiServerV1
{
public class Global : System.Web.HttpApplication
{
public class AppHost : NServiceKit.WebHost.Endpoints.AppHostBase
{
//NSerivceKitではAppHostBaseの引数に指定されたアセンブリの中にあるサービスが自動的に列挙される。
public AppHost() : base("Hello Web Services", typeof(AppHost).Assembly) { }
public override void Configure(Funq.Container container)
{
//register any dependencies your services use, e.g:
//container.Register<ICacheClient>(new MemoryCacheClient());
}
}
protected virtual void Application_Start (Object sender, EventArgs e)
{
var app = new AppHost();
app.Init();
}
}
}
ステップ4:サービスを作ってみる編集
NServiceKitのサービスはドメイン駆動設計(通称DDD)という哲学に従い以下の3つの要素から構成される。
- リクエストDTO
- レスポンスDTO
- サービス実装
リクエストDTO編集
サービスの引数に相当する。Route属性で呼び出し用のURLがどうなるかもここで決まる。
using ServiceStack.ServiceHost;
namespace WebApiServerV1
{
[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
}
レスポンスDTO編集
サービスの戻り値に相当する。
using ServiceStack.ServiceHost;
namespace WebApiServerV1
{
public class HelloResponse
{
public string Result { get; set; }
}
}
サービス実装編集
サービスの本体を実装する。GetだのPostだのを実装する。なんでも受け付ける場合はAnyとなる。
using ServiceStack.ServiceInterface;
namespace WebApiServerV1
{
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
}
動かしてみる編集
Xamarin Studio で実行してみるとSafariやChrome、Vivaldiなどのデフォルトブラウザが立ち上がると思われる。