Думаю, я бы попытался решить проблему по-другому. Развертывание нового экземпляра может занять от 15 до 30 минут. Добавление дополнительных экземпляров к уже запущенной рабочей роли выполняется немного быстрее, но ненамного. Я предполагаю, что вам нужны результаты быстрее, чем этот, и этот процесс часто выполняется.
У меня был бы только один тип рабочей роли, который выполняет существующую логику, и столько экземпляров этой рабочей роли, которые вы определили, которые вам понадобятся. Какой бы ни был ваш клиент, он решит, что ему нужно разбить работу на определенное количество частей, скажем, 10 для аргументации. Каждому фрагменту работы будет присвоен идентификатор (например, гид), а затем помещено 10 сообщений, содержащих параметры и идентификатор, в очередь. Экземпляры вашей рабочей роли извлекают сообщения из очереди, выполняют свою работу и записывают свои результаты в хранилище (SQL Azure, хранилище таблиц Azure или, возможно, даже хранилище больших двоичных объектов в зависимости от результатов). Клиент опрашивает это хранилище, чтобы дождаться завершения всех результатов, а затем продолжает работу.
Если это процесс, который запускается редко, то вместо того, чтобы рабочие роли были развернуты постоянно, вы можете использовать тот же метод, который я описал, но в дополнение получите код клиента для deploy рабочие роли при запуске и затем удаление их по завершении через API управления. Есть образцов на MSDN о том, как использовать это.