「ServiceStack/はじめに/最初のWebサービスを作ってみる」の版間の差分
(ページの作成:「== ステップ1: プロジェクトを作る == ServiceStackはいくつかの方法でホストすることができる。 * コンソールアプリケーシ...」) |
|||
(3人の利用者による、間の4版が非表示) | |||
42行目: | 42行目: | ||
== ステップ3: Webサービスを作ってみる == | == ステップ3: Webサービスを作ってみる == | ||
+ | もし「Global.asax.cs」ファイルが無ければ手動で追加する。Xamarin Studioの新しいファイルダイアログでは「ASP.NET Web Forms」の「コードビハインド付きGlobal.asax」である。 | ||
+ | |||
+ | まず、ServiceStackのサービスは3つの要素から構成されるという基本を覚えよう。 | ||
+ | * リクエストDTO | ||
+ | * サービス実装 | ||
+ | * レスポンスDTO | ||
+ | |||
+ | これはServiceStackの根底にある[[ドメイン駆動設計]](通称[[DDD]])という[[哲学]]である。 | ||
+ | |||
+ | === 1: Webサービスを定義する(いわゆるリクエストDTO) === | ||
+ | <source lang="csharp"> | ||
+ | using ServiceStack.ServiceHost; | ||
+ | [Route("/hello")] | ||
+ | [Route("/hello/{Name}")] | ||
+ | public class Hello | ||
+ | { | ||
+ | public string Name { get; set; } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | === 2: Webサービスの戻り値を定義する(いわゆるレスポンスDTO) === | ||
+ | <source lang="csharp"> | ||
+ | public class HelloResponse | ||
+ | { | ||
+ | public string Result { get; set; } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | === 3: Webサービスを実装する === | ||
+ | <source lang="csharp"> | ||
+ | using ServiceStack.ServiceInterface; | ||
+ | public class HelloService : Service | ||
+ | { | ||
+ | public object Any(Hello request) | ||
+ | { | ||
+ | return new HelloResponse { Result = "Hello, " + request.Name }; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
== ステップ4: Webサービスを登録してみる == | == ステップ4: Webサービスを登録してみる == | ||
+ | 最後にWebサービスを初期化し登録する。 | ||
+ | Global.asax.csファイルを以下のように編集する。 | ||
+ | |||
+ | <source lang="csharp"> | ||
+ | using System; | ||
+ | using System.Collections; | ||
+ | using System.ComponentModel; | ||
+ | using System.Web; | ||
+ | using System.Web.SessionState; | ||
+ | |||
+ | using ServiceStack; | ||
+ | |||
+ | public class Global : System.Web.HttpApplication | ||
+ | { | ||
+ | public class HelloAppHost : ServiceStack.AppHostBase | ||
+ | { | ||
+ | //Tell Service Stack the name of your application and where to find your web services | ||
+ | public HelloAppHost() : base("Hello Web Services", typeof(HelloService).Assembly) { } | ||
+ | |||
+ | public override void Configure(Funq.Container container) | ||
+ | { | ||
+ | //register any dependencies your services use, e.g: | ||
+ | //container.Register<ICacheClient>(new MemoryCacheClient()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | protected void Application_Start(Object sender, EventArgs e) | ||
+ | { | ||
+ | new HelloAppHost().Init(); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | これで完成である。ServiceStackに関するすべての構成はAppHostで行われる。いわゆるアプリケーションのエントリポイントのようなものである。 | ||
== 動かしてみる == | == 動かしてみる == | ||
51行目: | 124行目: | ||
== 外部リンク == | == 外部リンク == | ||
* https://github.com/ServiceStack/ServiceStack/wiki/Create-your-first-webservice | * https://github.com/ServiceStack/ServiceStack/wiki/Create-your-first-webservice | ||
+ | |||
+ | == 参考文献 == | ||
+ | {{reflist}} | ||
{{stub}} | {{stub}} |
2015年10月19日 (月) 17:20時点における最新版
目次
ステップ1: プロジェクトを作る[編集 | ソースを編集]
ServiceStackはいくつかの方法でホストすることができる。
- コンソールアプリケーション
- Windowsサービス
- ASP.NETやASP.NET MVCなどの一部として同化する
このチュートリアルでは「空のASP.NET(ASP.NET MVCじゃないよ)」上にServiceStackを使ったWebアプリを作ってみる。
ステップ2: ServiceStackをインストールする[編集 | ソースを編集]
プロジェクトがServiceStackを使えるようにするには大きく2種類の方法がある。
NuGetを利用する[編集 | ソースを編集]
PM> Install-Package ServiceStack
これ一行でServiceStack関連のNuGetパッケージがどっさり再帰的にプロジェクトに追加され、Web.configなどある程度は自動設定される。なお、ServiceStackのNuGetパッケージは機能ごとに個別に提供されているので、本格的にServiceStackを使う際には必要なパッケージのみを入れるようにするとよい。
なお、MonoDevelopやXamarin StudioでもNuGet Addin for MonoDevelop and Xamarin Studioを用いることこの方法で簡単に環境構築することができる。
手動で頑張る[編集 | ソースを編集]
最新のソースコードをダウンロードして自分でビルドし、できあがったアセンブリをプロジェクトに追加する。
アセンブリを追加したら、次にWeb.configファイルを編集してServiceStackを登録する。ServiceStackを使ったWebアプリがWebサーバーのルートパスに配置されるのであれば以下のような感じである。
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 (and above?) -->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
他のWebフレームワーク(ASP.NET MVCを含む)と競合を避けつつカスタムパスにServiceStackアプリをホストする場合は以下を参照するとよい。 https://github.com/ServiceStack/ServiceStack/wiki/Run-servicestack-side-by-side-with-another-web-framework
ステップ3: Webサービスを作ってみる[編集 | ソースを編集]
もし「Global.asax.cs」ファイルが無ければ手動で追加する。Xamarin Studioの新しいファイルダイアログでは「ASP.NET Web Forms」の「コードビハインド付きGlobal.asax」である。
まず、ServiceStackのサービスは3つの要素から構成されるという基本を覚えよう。
- リクエストDTO
- サービス実装
- レスポンスDTO
これはServiceStackの根底にあるドメイン駆動設計(通称DDD)という哲学である。
1: Webサービスを定義する(いわゆるリクエストDTO)[編集 | ソースを編集]
using ServiceStack.ServiceHost;
[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
2: Webサービスの戻り値を定義する(いわゆるレスポンスDTO)[編集 | ソースを編集]
public class HelloResponse
{
public string Result { get; set; }
}
3: Webサービスを実装する[編集 | ソースを編集]
using ServiceStack.ServiceInterface;
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
ステップ4: Webサービスを登録してみる[編集 | ソースを編集]
最後にWebサービスを初期化し登録する。 Global.asax.csファイルを以下のように編集する。
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using ServiceStack;
public class Global : System.Web.HttpApplication
{
public class HelloAppHost : ServiceStack.AppHostBase
{
//Tell Service Stack the name of your application and where to find your web services
public HelloAppHost() : base("Hello Web Services", typeof(HelloService).Assembly) { }
public override void Configure(Funq.Container container)
{
//register any dependencies your services use, e.g:
//container.Register<ICacheClient>(new MemoryCacheClient());
}
}
protected void Application_Start(Object sender, EventArgs e)
{
new HelloAppHost().Init();
}
}
これで完成である。ServiceStackに関するすべての構成はAppHostで行われる。いわゆるアプリケーションのエントリポイントのようなものである。