0

私は、Azure ストレージを使用して、サード パーティ アプリケーションによって消費されるすべての外部バイナリを格納する、非常に大規模な中央メディア リポジトリであるプロジェクトに取り組んでいます。アプリは azure で動作しますが、多くの新機能の追加に向けて前進しており、"ローカル ボックスから開発およびテストする" 形式のテストではもはや十分ではありません。クラウドで動作する必要があるメディアをフィードする一連の外部ソースがあるため、統合テスト環境のセットアップが必要です。すでに環境をセットアップしましたが、質問は、Azure 開発ストレージを起動して Windows サービスとして実行する方法はありますか? 現在、ログインして azure developmentmet ストレージを手動で開始する必要がありますが、ログアウトするとシャットダウンします。これは理想的ではありませんし、うまくいきません。開発ボックスなので、そして、データのほとんどはがらくたです。スペースと帯域幅を無駄にしたくありません。これを azure アカウントに送信すると、費用がかかります。ありがとう!

4

2 に答える 2

0

十分な権限を持つユーザーアカウントで、ホストをスケジュールされたタスクとして実行できる必要があります。

于 2010-08-24T11:22:22.547 に答える
0

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 ホスト、または Linux の mono デーモンでも同様の配線が行われます。

また、ストレージを適切に抽象化したままにしておくと、テストに実際に Azure Storage (開発または運用) を使用する必要がなくなり、ローカル ファイル ストレージまたは適切なメモリ内表現を効率的に使用できます。

基本的に、最初から移植可能なクラウド アーキテクチャを設計すると、多くのことが簡素化され、開発と保守のコストが削減されます。

注: テスト スニペットは、Windows Azureガイダンスおよびフレームワークの Lokad.CQRSから取得したものです。

于 2010-08-21T09:07:02.143 に答える