Некоторый фон ....
Мы впервые попадаем в Azure и пытаемся сделать это по-детски. На данный момент нашими первыми приложениями будут очереди рабочих ролей, отслеживающие очереди для обработки запросов (таких как отправка электронной почты или выполнение некоторой очистки экрана), и мы просто вставим в очереди наши локальные приложения MVC и службы WCF. Позже мы переместим приложение MVC и службы WCF в Azure.
Наш рабочий процесс разработки, по сути, выглядит следующим образом (несколько измененным несущественными способами):
- Разработка локально и на некоторых общих серверах. Проверьте в систему контроля версий.
- Каждые 15 минут сервер сборки собирается и развертывается в среде «разработки» (удваивается как CI и покрывает на случай, если нам понадобится среда «разработки», отличная от локальной)
- Технические тестеры вручную запускают сервер сборки для развертывания последней успешной сборки "Dev" в тестовой среде (или, альтернативно, ранее развернутой тестовой сборки, включая / исключая базу данных).
- Технические тестеры и бизнес-тестеры вручную запускают сервер сборки для развертывания последней успешной сборки "Тест" (или, альтернативно, ранее развернутой сборки "Тест", включая / исключая базу данных) в среде QA.
- В какой-то момент мы объединяем набор изменений, который QA утверждает для развертывания.
- Позже наш сервер производственной сборки развертывает эту версию в стадии подготовки, а затем в наших производственных средах (мы размещаем ее N раз в параллельных / независимых средах).
Как вы можете сказать, у нас есть несколько версий нашего приложения с внутренним размещением, с которыми сотрудники службы внутренней поддержки могут столкнуться до начала производства. Мне бы хотелось, чтобы у них была достаточно низкая зависимость от Azure. Мне не нужно выполнять полную зависимость, поэтому мы продолжим использовать Очереди Azure и, возможно, некоторые другие механизмы только потому, что их легко продолжать использовать, но мы не хотим, чтобы наш сервер сборки был развернут в Azure. для каждой из этих сред (и, в качестве альтернативы, платить за весь этот хостинг).
Итак, как мы можем разумно разместить наши рабочие роли локально таким образом, чтобы мы фактически тестировали код, который развертывается в Azure?
Один из предложенных вариантов заключается в том, что мы создаем рабочую роль в качестве оболочки / фасада и выполняем всю реальную работу внутри библиотеки классов, что и было нашим планом. Тем не менее, последующее действие, которое позволит нам «разместить» это, будет заключаться в создании второго приложения-оболочки / фасада, которое выполняет ту же работу, что и рабочая роль, просто так, чтобы мы могли запустить его как запланированную задачу или окна. сервер. В конечном счете, мне не нравится эта опция, потому что весь проект никогда не тестируется, пока не достигнет стадии подготовки.
Можно ли сделать нечто подобное, когда мы создаем второе приложение-оболочку / фасад, которое вместо вызова библиотеки классов, на которую оно фактически ссылается, и вызова функции Run()
в рабочей роли?