我正在开发一个项目,它是一个非常大的中央媒体存储库,它使用Azure存储来容纳我们将由第三方应用程序承担的所有外部二进制文件。我们的应用程序使用azure,但现在正在向前添加一系列新功能,并且“从本地框开发和测试”形式的测试已经不够了。由于我们有一系列外部资源为我们提供需要在云中工作的媒体,因此我们需要集成测试环境设置。所以我已经设置了环境,我的问题是,有没有办法让Azure开发存储启动并作为Windows服务运行?目前,我必须登录,并手动启动azure developmet存储,但一旦我注销,它就会关闭。这不是理想的,也不行。由于这是一个开发盒,并且大多数数据都是垃圾,我们不想浪费我们的空间和带宽将这些东西发送到我们的帐户,这花费了我们的钱。谢谢!
答案 0 :(得分:0)
Windows Azure Development Fabric不会作为Windows Service开箱即用运行。
保持实际服务可移植且能够在Console,WinService或Azure Worker中运行的唯一方法是从头开始设计。
一旦您有适当的抽象,您的云应用程序就变得非常灵活。例如,您甚至可以编写如下单元测试:
[Test]
public void Test()
{
Host.Initialize();
Host.Start();
var client = Host.Resolve<IMessageClient>();
client.Send(new Hello {Word = "World"});
client.Send(new Hello {Word = Rand.String.NextText(6000, 6000)});
client.Send(new Bye {Word = "Earth"});
SystemUtil.Sleep(50.Seconds());
Host.Stop();
}
或者如果使用.NET 4.0 TPL:
[Test]
public void Test()
{
using (var host = BuildHost())
{
host.Initialize();
var client = host.Resolve<IMessageClient>();
client.Send(new Hello { Word = "World" });
client.Send(new Hello { Word = Rand.String.NextText(6000, 6000) });
client.Send(new Bye { Word = "Earth" });
using (var cts = new CancellationTokenSource())
{
var task = host.Start(cts.Token);
SystemUtil.Sleep(10.Seconds());
cts.Cancel(true);
task.Wait(5.Seconds());
}
}
}
类似的连接将在Linux上的控制台,WindowsService,Azure主机或单一守护程序中。
如果你保持存储器的正确抽象,那么就不需要实际使用Azure存储(开发或生产)进行测试,有效地使用本地文件存储或适合的内存表示。
基本上,将云架构设计为从一开始就可移植,简化了很多工作,降低了开发和维护成本。
注意:测试片段取自Lokad.CQRS for Windows Azure指导和框架
答案 1 :(得分:0)
应该可以在具有足够权限的用户帐户下将主机作为计划任务运行。