「NServiceKit/はじめに/最初のWebサービスを作ってみる」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
(他の1人の利用者による、間の5版が非表示)
12行目: 12行目:
 
*NServiceKit.Host.AspNet
 
*NServiceKit.Host.AspNet
  
2015年10月時点のNServiceKitは本家ServiceKitほど親切ではないのでweb.configは自分で用意する必要がある。
+
2015年10月時点のNServiceKitパッケージは本家[[ServiceStack]]ほど親切ではないのでweb.configは自分で用意する必要がある。
 
<source lang="xml">
 
<source lang="xml">
 
   <system.web>
 
   <system.web>
59行目: 59行目:
  
 
==ステップ4:サービスを作ってみる==
 
==ステップ4:サービスを作ってみる==
NServiceKitのサービスはドメイン駆動設計(通称DDD)という哲学に従い以下の3つの要素から構成される。
+
NServiceKitのサービスは[[ドメイン駆動設計]](通称[[DDD]])という哲学に従い以下の3つの要素から構成される。
 
*リクエストDTO
 
*リクエストDTO
 
*レスポンスDTO
 
*レスポンスDTO
65行目: 65行目:
  
 
===リクエストDTO===
 
===リクエストDTO===
サービスの引数に相当する。Route属性で呼び出し用のURLがどうなるかもここで決まる。
+
サービスの[[引数]]に相当する。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.NETASP.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 で実行してみるとSafariChromeVivaldiなどのデフォルトブラウザが立ち上がると思われる。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]