簡體   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