суббота, 9 ноября 2013 г.

xsp4 vs. MonoDevelop.Xsp

Возникла задачка написать asp.net mvc3 сервер, такой, чтобы работал на Windows и Ubuntu. Выбор пал на mono, так как больше ему падать в рамках стека .net не на что. Еще один precondition - база на SQLite.

Последние версии mono поддерживают MVC3 с Razor. Начинаем разработку в Xamarin Studio, быстренько наваяли наш сайт, пользуемся всем, чем привыкли - Razor, jQuery, bootstrap, все хорошо, все работает, используем для запуска xsp4, который запускается из под Xamarin Studio.

Задумались о deployment. Xsp4 работает с написанным кодом под Убунтой "из коробки" (mono 2.10.8.1). Пробуем под Windows - начинаем долго огребать.

Начнем с того, что то, что запускается из под Xamarin Studio - это x64 приложение, использующее свои сборки (винда x64); запуск же xsp4 из комплекта mono - x86 процесс, так как mono x64 не существует.

Я сделал выбор в пользу System.Data.SQLite, а не в пользу pure-.net реализации, так как мне нужен отлаженный многопоточный доступ к базе. На Убунту работает только если собрать MSIL версию с загрузкой нативной динамической библиотеки sqlite3.

Особенность в том, что из x64 потока надо грузить x64 библиотеку, а из x86 надо грузить x86.
Таким образом, побочный эффект использования MonoDevelop.Xsp в том, что написанный код не работает потом в xsp4 от mono под Windows, и надо сделать еще 4-5 приседаний, чтобы заработало, на это уже тема отдельной статьи.

Комментариев нет:

Отправить комментарий