2012-01-09 6 views
0

Мы готовимся к созданию веб-ориентированной платформы для школ, и мы планировали разместить ее в Azure. Тем не менее, государственные школы имеют определенные ограничения, которые препятствуют открытому доступу к Интернету, а это означает, что система на основе Azure не будет работать там.Развертывание приложений Azure на серверах Windows

Возможно ли развертывание одного и того же проекта на локальных серверах и облако Azure без фрагментации нашей кодовой базы?

+0

Столько хороших ответов на выбор! StackOverflow в лучшем случае :) –

ответ

7

Это зависит от того, какие аспекты Azure вы используете в своем решении. Если у вас есть приложение ASP.NET Manilla и не использует зависимости Azure, такие как AppFabric или любой из Azure SDK, например, хранилище blob, вы сможете развернуть его на стандартный экземпляр IIS.

Если вы используете зависимости Azure, я постараюсь изо всех сил отделить их в вашей кодовой базе, как в практике, чтобы абстрагировать любые зависимости. Затем вы сможете отключиться на основе изменения конфигурации, чтобы не использовать их, и при развертывании в Windows вернитесь к локальной или заглушенной альтернативе. Это будет то же самое и при запуске CI/builds.

+0

Это то, что я бы сказал. Если Azure сильно интегрирована с вашим приложением, например, Table Storage был вашим основным механизмом хранения, а не SQL Azure, это может быть сложно. Но если вы просто его окропите в нескольких местах, не следует с трудом абстрагироваться. – Craig

3

Это действительно зависит от того, что делает ваше приложение. Проект развертывания Azure (проект .ccproj) и связанный пакет .cspkg не будут применяться к развертыванию Windows Server.

Если вы используете приложения Windows Azure (например, хранилище таблиц), то вам придется как-то обрабатывать это на месте. Если вы хотите иметь одну базу кода, которая работает как на месте, так и на Windows Azure, одним из вариантов может быть подход с подзарядкой зависимостей, который может ввести правильную реализацию функции, основанной на целевом развертывании.

1

У меня был сценарий реального мира с клиентом. У них есть клиенты, которые хотят продолжать использовать свой продукт, установленный на своих серверах. В то же время у них есть новые клиенты, которые хотели бы арендовать свое приложение как услугу и использовать модель «оплата по ходу».

Означает ли это две базы кода? Нет, но это означает, что вы должны быть готовы пойти на дополнительные мили в отношении абстракций развития и инверсии контроля.

Вообще говоря, я бы об этой проблеме так:

  • Дизайн для Windows Azure, а это означает Используйте API для Windows Azure SDK.
  • Добавьте слой абстракции между реальным SDK для Windows Azure и вашим кодом.
  • Предоставьте альтернативную реализацию для зависимостей Windows Azure для локальных установок.

Также ...

  • Используйте код, который уже там, как Azure Contrib. Этот проект OSS содержит начало такого уровня абстракции наряду с другим, надеюсь, полезным кодом Windows Azure.

И не забывайте получать удовольствие! ;)

Смежные вопросы