[英]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.