繁体   English   中英

作为Windows服务运行的Azure开发Storgare服务

[英]Azure development storgare service running as a windows service

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

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主机或mono守护程序中进行。

而且,如果您还对存储进行了适当的抽象,则将无需实际使用Azure存储(开发或生产)进行测试,从而可以有效地使用本地文件存储或适合的内存表示形式。

基本上,从一开始就将云架构设计为可移植的,可以简化很多事情,减少开发和维护成本。

注意:测试摘录来自Lokad.CQRS,适用于Windows Azure指导和框架

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM