Возможность развертывания приложения в Azure или без него во многом зависит от того, как работает ваше приложение.Azure в значительной степени требует, чтобы ваше приложение не сохраняло состояния.Если это обычное веб-приложение, которое хранит данные только в кэше сеанса или приложения и сохраняет данные только в базе данных, вы можете развернуть их в Azure.
Если у вас есть службы с состоянием, работающие как фоновые потоки (которыеВ любом случае это плохо), или если вы сохраняете данные в файловую систему (помимо временного кэширования), у вас могут возникнуть проблемы.Действительно, проблемы, возникающие при переходе на Azure, на самом деле такие же, как при переходе на любое многосерверное решение с балансировкой нагрузки.Одна оговорка - постоянное хранение.
Если вам нужно хранить данные не в базе данных, а в другом месте, лучше всего работать с хранилищем Azure, в котором есть API и клиентская библиотека для хранения двоичных данных, данных ключ / значение (они вызываютэто таблицы, но на самом деле это не таблицы), а очереди.У них также есть прозрачная опция blob-as-file-system для совместимости.Если вы хотите использовать их в своем приложении, которое также используется за пределами Azure, вам нужно написать дополнительный слой между вашим кодом и клиентской библиотекой Azure, которая поддерживает как службы Azure, так и стандартную локальную службу.В Azure SDK включены эмуляторы для служб Azure, но они определенно не предназначены для производственного использования.
Что касается механики проектов, специфичных для Azure, то на самом деле это не так сложно.Да, вам нужно создать в своем решении специфичный для Azure проект, который определяет веб-роль и то, что развертывается, но он будет ссылаться на ваше существующее веб-приложение, а не наоборот.Вы можете развернуть веб-роль Azure в Azure или продолжить развертывание существующего приложения в IIS как обычно, так и одновременно.
Веб-сайт, веб-приложение, MVC действительно не имеет большого значения.На самом деле не обязательно должен быть .NET.Может быть PHP или Java или все, что вы хотите поставить на свою виртуальную машинуВсе это будет работать так же, как Azure.
MS любит выдвигать Azure как решение «Платформа как услуга» (Paas), где у них есть тонна предлагаемых ими услуг, и вы запускаете приложения на их стандартной платформе, и это контрастирует с Amazon AWS, которую ониназывать инфраструктуру как услугу (Iaas), которая является «просто» виртуальной машиной.Однако MS на самом деле является таким же решением для IaaS, как и AWS, возможно, даже более того.Единственное различие между AWS и Azure заключается в том, что AWS позволяет вам выбирать, что устанавливать на вашей виртуальной машине, а с Azure вы должны использовать Windows Server 2008 R2 в качестве основы для вашей виртуальной машины (но вы можете настроить образ виртуальной машины для установки пользовательского программного обеспечения поверхиз окон).Как в Azure, так и в AWS хосты предлагают дополнительные услуги PaaS, которые вы можете использовать для хранения данных и маршрутизации сообщений.AWS также предлагает множество дополнительных сервисов, таких как потоковое видео.
Также обратите внимание, что с Azure (и, как мне кажется, с AWS) вы можете использовать предлагаемые ими сервисы даже в не размещенном приложении.Если вы хотите использовать хранилище данных Azure из не-Azure приложения, вы можете сделать это, просто вызовы HTTP REST для получения / размещения данных.Единственные различия, которые вы платите за ввод / вывод данных между центром обработки данных и приложением, не размещенным в центре обработки данных, будут бесплатными, если приложение также находится внутри центра обработки данных (только вход / выход данных является бесплатным внутри центра обработки данных, у вас все еще есть хранилище икомиссионные сборы).