Служба storgare для разработки Azure, работающая как служба Windows - PullRequest
0 голосов
/ 20 августа 2010

Я работаю над проектом, который представляет собой очень большой центральный медиа-репозиторий, использующий хранилище Azure для размещения всех наших внешних двоичных файлов, которые будут создаваться сторонними приложениями.У нас есть приложение, работающее с лазурью, но сейчас мы добавляем кучу новых функций, и форма тестирования «разработай и протестируй на локальном компьютере» больше не подходит.Поскольку у нас есть множество внешних источников, которые передают нам носители, которые должны работать в облаке, нам нужна настройка среды интеграционного тестирования.Итак, я уже настроил среду, у меня вопрос: есть ли способ запустить хранилище разработки Azure и запустить его как службу Windows?В настоящее время я должен войти в систему и запустить хранилище Azure Developmet вручную, но как только я выйду из системы, он отключится.Это не идеально, и не работает.Поскольку это блок разработки, и большая часть данных является ненужной, мы не хотим тратить свое пространство и пропускную способность, отправляя эти данные на наш аккаунт Azure, что стоит нам денег.Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

Должна быть возможность запуска хоста как запланированного задания под учетной записью пользователя с достаточными правами.

0 голосов
/ 21 августа 2010

Windows Фабрика разработки Azure не будет работать как служба 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());
        }   
    }
}

аналогичная проводка будет в консоли, WindowsService, Azure Host или моно-демоне в Linux.

И если вы также сохраняете хранилище должным образом, тогда вам больше не нужно будет использовать хранилище Azure (для разработки или производства) для тестов, эффективно используя локальное хранилище файлов или представления в памяти, где оно подходит. *

По сути, разработка облачной архитектуры, которая с самого начала была бы переносимой, упрощает многие вещи в будущем, сокращая затраты на разработку и обслуживание.

Примечание: тестовые фрагменты взяты из Lokad.CQRS для Windows Azure Руководство и структура

...