1. Что такое Кассини Cassini — простой и легкий веб-сервер для MS Windows, который, как нетрудно догадаться, обрабатывает запросы статических HTML-страниц и приложений ASP.NET. На момент написания Cassini распространяется как часть Visual Studio, и Microsoft не поощряет (но и не запрещает) его использование и распространение за пределами Visual Studio. Microsoft не предоставляет техническую поддержку Cassini за пределами Visual Studio. Однако бывают случаи, когда Microsoft включает Cassini в свои продукты, например, в ранние версии Microsoft CRM (теперь известные на рынке как Microsoft Dynamics CRM).
В марте 2006 года Microsoft открыла исходный код Cassini 2.1 по довольно либеральной лицензии, в которой говорилось, что код можно использовать «для любых коммерческих или некоммерческих целей, включая распространение производных работ».
На момент написания статьи мне удалось найти несколько альтернативных дистрибутивов Cassini:
- Веб-сервер UtilDev Cassini ( http://utildev.com )
- КассиниДев ( http://cassinidev.codeplex.com )
- Размещение только одного приложения ASP.NET на каждом порту.
- Нет поддержки HTTPS
- Не поддерживает аутентификацию
- Отвечает на запросы только с локальной машины
В этом документе предпринята попытка обобщить различную информацию о Кассини, найденную в Интернете и из личного опыта.
2. Почему Кассини? Почему Кассини?
Проект, над которым мы работали, включал установку веб-приложений и веб-сервисов на сервер пользователя.К сожалению, гарантировать наличие IIS на сервере не удалось (пользователи такие разные), поэтому пришлось обратить внимание на Cassini. Перечисленные выше ограничения нас не смутили — речь шла только о демо-приложениях.
Программа установки нашего продукта должна была установить Cassini и веб-приложения на машину пользователя, чтобы сразу после установки пользователь мог опробовать продукт в действии, зайдя в локальный хост/SomeDemoApplication .
Забегая вперед, скажу, что все получилось.
Но на дороге было несколько граблей, о которых хотелось бы рассказать.
3. Запустите Кассисни
Я использовал исполняемые файлы Cassini из Visual Studio 2010 и создавал их с помощью .NET 4.0:
- WebDev.WebHost40.dll — дополнительная сборка, необходимо установить в GAC (см.
«Проблемы» ниже)
- WebDev.WebServer40.exe — собственно исполняемый модуль веб-сервера, обычное Windows-приложение.
- Файлы конфигурации и манифеста WebDev.WebServer40
WebDev.WebServer40.exe /port:8111 /path:"c:\Projects\My Web Application"
и все работает: адрес локальный хост :8111/Home.aspx показывает мне домашнюю страницу моего веб-приложения.
Затем я включил исполняемые файлы Cassini в установщик нашего продукта с помощью WebDev.WebHost40.dll, установленного в GAC. Единственная проблема, которую осталось решить, — это запуск Кассини до того, как пользователь перейдет на страницу демо-приложения.
Родился этот скрипт, который использует простую утилиту PortQry для определения активности Cassini на порту 8111: portqry.exe -n localhost -e 8111
if ERRORLEVEL=1 goto nolisten
echo Cassini is already running
goto end
:nolisten
start WebDev.WebServer40.exe /port:8111 /path:"c:\Projects\My Web Application"
:end
start localhost:8111/Home.aspx
Остаётся только добавить скрипт в программу установки и ярлык этого скрипта в меню Пуск и установка готова.
4. Проблемы
Как всегда были вопросы.
WebDev.WebHost40.dll в GAC
На самом деле, это не большая проблема, но остается вопрос: зачем вообще эта сборка находиться в GAC? Я не просматривал исходный код Кассини, поэтому не знаю настоящей причины.
Если это всего лишь дешевый способ получить полное доверие, то следующий вопрос: зачем вообще игрушечному веб-серверу полное доверие? В общем, я буду чувствовать себя увереннее, используя Cassini в своих продуктах, если мне кто-нибудь внятно объяснит, почему WebDev.WebHost40.dll находится в GAC.
64-битная поддержка
На момент написания Visual Studio и Cassini являются 32-битными приложениями.Если вы попытаетесь разместить 64-разрядное приложение ASP.NET с помощью Cassini, будет выдано исключение.
У вас остается два варианта: либо перекомпилировать ваше приложение ASP.NET до 32-битной версии, либо попытаться использовать альтернативные дистрибутивы Cassini, поддерживающие 64-битную версию (см.
список выше).
Проблема с виртуальным путем
В Visual Studio Cassini есть удобный параметр /vpath, который позволяет указать виртуальную папку для вашего приложения.Но когда я попытался использовать эту опцию при запуске Кассини и запуске моего приложения из локальный хост :8111/MyAppVirtualFolder/Home.aspx, то я получил ошибку: WebConfigurationManager.OpenWebConfiguration() выдает исключение «Не удалось сопоставить путь '/'».
Единственное решение, которое я нашел, — это запустить Cassini с параметром /vpath с повышенными привилегиями, тогда виртуальный путь заработает. Этот вариант подходит для тестирования, но вряд ли подойдет для коммерческого продукта.
Как и в случае с GAC, было бы интересно объяснить такое странное поведение.
5. Рекомендации
Бывают случаи, когда Кассини может быть чрезвычайно полезен, но его следует использовать с осторожностью.Тестируйте итоговое решение в как можно большем количестве конфигураций и ни на секунду не забывайте, что Cassini не является полноценным коммерческим продуктом.
Удачи! Теги: #Cassini #microsoft #web #server #IIS #webdev #.
NET
-
Как Выбрать Подходящую Марку Ноутбука
19 Oct, 24 -
Корпорация Goodness На Подъеме
19 Oct, 24 -
Необычная Корова И Причем Здесь Интернет?
19 Oct, 24 -
Карта Гравитационного Поля Земли
19 Oct, 24 -
Как Я Писал Ии Для Пошаговой Стратегии
19 Oct, 24 -
Мы Используем Google Trends В Полной Мере
19 Oct, 24 -
Recs Компенсирует Перерывы В Работе
19 Oct, 24