代码之家  ›  专栏  ›  技术社区  ›  alanquillin

作为Windows服务运行的Azure Development Storgare服务

  •  0
  • alanquillin  · 技术社区  · 14 年前

    我正在做一个项目,这个项目是一个非常大的中央媒体存储库,它使用Azure存储来存储我们的所有外部二进制文件,这些二进制文件将被第三方应用程序所覆盖。我们的应用程序正在与Azure一起工作,但现在正着手添加一系列新功能,“从本地盒子开发和测试”的测试形式已不再足够。由于我们有一系列外部源向我们提供需要在云中工作的媒体,因此我们需要一个集成测试环境设置。所以我已经设置了环境,我的问题是,有没有一种方法可以让Azure开发存储作为Windows服务启动和运行?目前,我必须手动登录并启动Azure developmet存储,但一旦我注销,它就会关闭。这不理想,也不起作用。因为这是一个开发盒,而且大多数数据都是垃圾,所以我们不想浪费我们的空间,也不想把这些数据发送到我们的Azure帐户,这会让我们付出代价。谢谢!

    2 回复  |  直到 14 年前
        1
  •  0
  •   Rinat Abdullin    14 年前

    窗户 Azure Development Fabric将不作为Windows服务运行。 .

    保持实际服务可移植并能够在控制台、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 for Windows Azure 指导和框架

        2
  •  0
  •   maartenba    14 年前

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