2014-06-17 23 views
5

Piszę aplikację, która zostanie wdrożona zarówno w chmurze, jak i centrach danych na miejscu (dla tych klientów, którzy zasadniczo nie ufaj jeszcze chmurom ich danymi:Czy Azure Worker Rola dla lokalnego rozwiązania dostępnego przez Windows Azure Pack lub App Fabric

Jeśli zdecyduję się na MS Azure, mogę używać nowych typów projektów chmury z ich rolami Web i Worker, ale w jaki sposób mogę uzyskać role pracujące dla założeniem wariant?

Czy muszę napisać własny hosta (powiedzmy jako usługa Windows)? to nie jest idealna, ponieważ wymaga dodatkowego kodu i wdrażania.

Czy istnieje podejście zgodne z platformą Azure, na przykład w pakiecie Windows Azure lub materiałach App Fabric (czy aplikacja App Fabric jest wciąż aktualna?), Która nie wymaga pełnej konfiguracji chmury prywatnej?

Odpowiedz

4

To nie istnieje w pakiecie Azure.

Nie ma potrzeby, aby próbować mieć rolę pracownika na założeniu. Wszystko, co musisz zrobić, to mieć maszynę wirtualną, na której instalujesz usługę Windows.

Łatwo jest utworzyć usługę Windows, używając Topshelf.

Wdrożenie usługi systemu Windows przy użyciu półki głównej jest w rzeczywistości znacznie łatwiejsze niż wdrożenie dla ról roboczych, ponieważ po prostu uruchamiasz .exe utworzony za pomocą install, a następnie z argumentami start.

Z tego powodu potrzebujesz mniej kodu niż dla roli pracownika, ponieważ nie potrzebujesz drugiego projektu opakowania.

+0

Jeśli próbujesz uruchomić ten sam kod w chmurze i na poziomie lokalnym, możesz nadal utworzyć aplikację konsoli usług systemu Windows, a następnie wdrożyć ją w roli sieciowej (tak samo jak Rola pracownika dla wszystkich celów i celów) przy użyciu czegoś takiego jak [AzureWebFarm.OctopusDeploy] (https://github.com/MRCollective/AzureWebFarm.OctopusDeploy) lub można wdrożyć aplikację konsoli jako zadanie sieciowe (które prawdopodobnie jest dostępne w AzurePack , a jeśli nie, to TopShelf .exe działa jak normalny .exe mimo to bez argumentów). –

+0

Przyjemnie jest więc nigdy nie trzeba odwoływać się do ServiceRuntime lub używać RoleEnvironment lub innych rzeczy specyficznych dla platformy Azure - kod jest niezależny od miejsca, w którym został wdrożony :)) –

0

Chociaż nie korzystałem z Windows Azure Pack, zanim wydaje się, że jest w stanie zapewnić tę funkcjonalność w domu, jednak wymagania i procedury konfiguracyjne są intensywne i z pewnością nastawione na przedsiębiorstwa.

Lepszym rozwiązaniem jest utworzenie aplikacji konsolowej, która uruchamia funkcje OnStart() i Run() dla WorkerRole na podstawie Harmonogramu zadań OS.

Nie za dużo pracy w mojej opinii, a ty utrzymasz swoje WorkerRoles, jak jest, ale po prostu dodaj aplikację konsoli do dowolnych rozwiązań lokalowych.

+0

Zazwyczaj używa się RoleEnvironment w metodzie OnStart i Run, więc to by nie działało. –

+0

Można użyć wartości boolowskiej RoleEnvironment.IsAvailable, aby przełączać się między działaniami zależnymi od miejsca pobytu (np. Azure lub Local). –

+0

Tak. Wymaga to jednak zainstalowania pakietu Azure SDK w celu przeprowadzenia instalacji onpremise, której zazwyczaj nie potrzebujesz. –