0

我正在开发一个项目,它是一个非常大的中央媒体存储库,它使用 Azure 存储来存放我们所有将由 3rd 方应用程序使用的外部二进制文件。我们的应用程序与 azure 配合使用,但现在正在继续添加一系列新功能,并且“从本地机器开发和测试”形式的测试不再足够。由于我们有一系列外部资源为我们提供需要在云中工作的媒体,因此我们需要一个集成测试环境设置。所以我已经设置了环境,我的问题是,有没有办法让 Azure 开发存储启动并作为 Windows 服务运行?目前,我必须登录并手动启动 azure developmentmet 存储,但一旦我注销,它就会关闭。这并不理想,也不起作用。由于这是一个开发箱,而且大部分数据都是垃圾,我们不想浪费我们的空间和带宽将这些东西发送到我们的 azure 帐户,这会花费我们的钱。谢谢!

4

2 回答 2

0

应该可以在具有足够权限的用户帐户下将主机作为计划任务运行。

于 2010-08-24T11:22:22.547 回答
0

Windows Azure Development Fabric 不会作为开箱即用的 Windows 服务运行

保持实际服务可移植性并能够在 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 Guidance and Framework

于 2010-08-21T09:07:02.143 回答