我正在为 ASP.NET MVC 4 后台操作寻找漂亮而优雅的架构解决方案。
我的目标是开发一个有自己的生活的世界,客户只能与之互动。现在让我们假设这将是一个简单的时钟,客户可以观看它。
现在我有 WebBackrounder + SignalR 包。
网络后台:
[assembly: PostApplicationStartMethod(typeof(WebBackgrounderSetup), "Start")]
[assembly: ApplicationShutdownMethod(typeof(WebBackgrounderSetup), "Shutdown")]
namespace LibcanvasStudy.App_Start
{
public static class WebBackgrounderSetup
{
static readonly JobManager _jobManager = CreateJobWorkersManager();
public static RedrawJob RedrawJob { get; private set; }
public static void Start()
{
_jobManager.Start();
}
public static void Stop()
{
_jobManager.Stop();
}
public static void Shutdown()
{
_jobManager.Dispose();
}
private static JobManager CreateJobWorkersManager()
{
RedrawJob = new RedrawJob(TimeSpan.FromSeconds(1));
var manager = new JobManager(new[] { RedrawJob }, new JobHost());
return manager;
}
}
RedrawJob 在其执行上升事件和 SignalR 集线器捕获它时:
public class CanvasHub : Hub
{
public CanvasHub()
{
if (WebBackgrounderSetup.RedrawJob != null)
WebBackgrounderSetup.RedrawJob.Executing += (sender, args) => Request(args);
}
public void Request(RedrawEventArgs eventArgs)
{
Clients.All.redraw(...);
}
}
我现在有一个主要问题 - 如何从我的 JobManager 中动态添加和删除作业?
我也不喜欢这个工作事件系统,对我来说有点尴尬。有什么建议吗?