【发布时间】:2015-01-02 09:05:51
【问题描述】:
我有一个 OWIN/Katana 自托管服务应用程序。 它的功能之一是通过 WebAPI 为某些数据提供服务。 在这个应用程序中,我有一个名为 dataManager 的类,它负责检索数据,并将其传递给请求它的 API 控制器。 数据最终会提供给移动平台,因此尽可能多地缓存以提高性能非常重要。 有没有办法在应用程序启动时预加载我的 DataManager,并让它预执行它的 linq 查询?
Application 类如下所示:
namespace TaskManager
{
using System;
using Microsoft.Owin.Hosting;
public class TaskManagerApplication
{
protected IDisposable WebApplication;
public void Start()
{
WebApplication = WebApp.Start<WebPipeline>("http://*:8080");
}
public void Stop()
{
WebApplication.Dispose();
}
}
}
Program 类如下所示:
namespace TaskManager
{
using Topshelf;
internal class Program
{
private static int Main()
{
var exitCode = HostFactory.Run(host =>
{
host.Service<TaskManagerApplication>(service =>
{
service.ConstructUsing(() => new TaskManagerApplication());
service.WhenStarted(a => a.Start());
service.WhenStopped(a => a.Stop());
});
host.SetDescription("Task Manager");
host.SetDisplayName("Task Manager");
host.SetServiceName("TaskManager");
host.RunAsNetworkService();
});
return (int) exitCode;
}
}
}
DataManager 类中包含的数据检索语句如下所示:
var rawData = from data in new XPQuery<AccountView3.PipelineData>(uow)
where data.Stage.ToLower().Contains("won")
&& data.RevenueStartDate.Value.Year == DateTime.Today.Year
&& data.WeekOfTheYear >= priorWeekCutoff
select data;
【问题讨论】:
标签: c# linq katana self-hosting