ここの myList のように、サービススタックの自己ホスト型サーバーにいくつかの「グローバル」変数が必要です。
public partial class Main : Form
{
AppHost appHost;
public Main()
{
InitializeComponent();
appHost = new AppHost();
appHost.Init();
appHost.Start(ListeningOn);
appHost.Plugins.Add(new ProtoBufFormat());
appHost.ContentTypeFilters.Register(ServiceStack.Common.Web.ContentType.ProtoBuf, (reqCtx, res, stream) => ProtoBuf.Serializer.NonGeneric.Serialize(stream, res), ProtoBuf.Serializer.NonGeneric.Deserialize);
}
/// <summary>
/// Create your ServiceStack http listener application with a singleton AppHost.
/// </summary>
public class AppHost : AppHostHttpListenerBase
{
public int intAppHost;
/// <summary>
/// Initializes a new instance of your ServiceStack application, with the specified name and assembly containing the services.
/// </summary>
public AppHost() : base("CTServer HttpListener", typeof(MainService).Assembly) { }
/// <summary>
/// Configure the container with th e necessary routes for your ServiceStack application.
/// </summary>
/// <param name="container">The built-in IoC used with ServiceStack.</param>
public override void Configure(Funq.Container container)
{
Routes
.Add<ReqPing>("/ping");
}
}
}
public class MainService : Service
{
public RespPing Any(ReqPing request)
{
// Add a value to a global list here
myList.Add(myData);
RespPing response = new RespPing();
return response;
}
}
どこで myList を定義する必要があり、その場所からどのようにアクセスできますか? そして、どうすればスレッドセーフな方法でそれを行うことができますか? この場合の機能は、受信した特定の値を保存し、この値がすでにリストにあるかどうかを別のインスタンスでチェックすることです。これはインスタンス間でデータを共有する適切な方法ですか、それとも別の道をたどるべきですか?
ありがとう!マティア