Мой Опыт Работы С Веб-Сервером Cassini От Microsoft



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:

Кроме того, в Интернете можно найти информацию об успешной декомпиляции (и последующей успешной сборке для 32- и 64-битных платформ) версии Cassini, распространяемой вместе с Visual Studio. Вот основные различия между Cassini и IIS:
  • Размещение только одного приложения ASP.NET на каждом порту.

  • Нет поддержки HTTPS
  • Не поддерживает аутентификацию
  • Отвечает на запросы только с локальной машины
Работая над одним из проектов, я рассматривал возможность использования Cassini в демонстрационных веб-приложениях.

В этом документе предпринята попытка обобщить различную информацию о Кассини, найденную в Интернете и из личного опыта.



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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.