次に、Webサービスの通信インターフェースであるエンティティクラスを作成します。DTO(Data Transfer Object)とも呼ばれるクラスになります。2つのクラスを作成します。それぞれ一覧取得処理のインターフェースとして利用します。一覧取得時にリクエストパラメータがないのでリクエストDTOの中身は空、レスポンスDTOはカードの一覧(今回は乱数の一覧)を保持するリストを持っているものとします。また、クラスはGameWebRoleプロジェクト直下に「Model」フォルダを作成して、その下に作るものとします。Modelフォルダを右クリックし、追加>クラスで作成していってください。
GameServiceRequest.cs
using System.Runtime.Serialization;
namespace GameWebRole.Model
{
[DataContract]
public class GameServiceRequest
{
}
}
GameServiceResponse.cs
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace GameWebRole.Model
{
[DataContract]
public class GameServiceResponse
{
[DataMember(Name = "cardList")]
public List CardList { get; set; }
}
}
using System.Collections.Generic;
using System.ServiceModel.Activation;
using GameWebRole.Data;
using GameWebRole.Model;
namespace GameWebRole.Service
{
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public class GameService:IGameService
{
public int GetCard()
{
int newCardNumber = DataHelper.GetCard();
DataHelper.SaveCard(newCardNumber);
return newCardNumber;
}
public GameServiceResponse GetCardList(GameServiceRequest request)
{
GameServiceResponse response = new GameServiceResponse();
List cardList = DataHelper.SelectCard();
response.CardList = cardList;
return response;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace GameWebRole.Data
{
public class DataHelper
{
private static List CardList;
public static int GetCard()
{
Random random = new Random();
int newCardNumber = random.Next(1, 10);
return newCardNumber;
}
public static void SaveCard(int newCardNumber)
{
if (CardList == null)
{
CardList = new List();
}
CardList.Add(newCardNumber);
}
public static List SelectCard()
{
List returnValue = new List();
if (CardList != null)
{
var orderdCardList = from card in CardList
orderby card ascending
select card;
returnValue = orderdCardList.ToList();
}
return returnValue;
}
}
}