我有OWIN /卡塔納自託管服務應用程序。 它的一個功能是通過WebAPI服務一些數據。 在這個應用程序中,我有一個名爲dataManager的類,它負責檢索數據,並將其傳遞到需要它的API控制器。 數據最終被提供給移動平臺,因此儘可能地緩存性能非常重要。 有沒有辦法在應用程序啓動時預加載我的DataManager,並讓它預先執行它的linq查詢?如何在OWIN自託管應用程序中預加載數據
的應用類看起來是這樣的:
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();
}
}
}
程序類看起來是這樣的:
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;
謝謝!我一定會盡快給它試一試 – 2014-11-06 01:04:27
它是否適合你?如果沒有,請告訴我。 – biscuit314 2014-11-07 01:39:41