OpenRasta поддерживает Mono? - PullRequest
       18

OpenRasta поддерживает Mono?

5 голосов
/ 26 марта 2010

Хотя поддержка Mono не имеет большого значения для нас, я полагал, что OpenRasta поддерживает ее, потому что у нее есть сообщения о коммите об этом ..

Что ж, я попытался построить его на Mono и получил ссылки на неоднозначные типы (после создания вручную, например, 10 obj каталогов.) Поэтому я попытался просто использовать готовые сборки, которые были у меня под рукой, и это дало мне Object Reference Not Set To Instance of an Object ( обычная ошибка у меня с моно ..) на OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll (с использованием xsp2)

Есть ли официальная поддержка Mono или я пропускаю какой-то дополнительный шаг для развертывания?

Ответы [ 3 ]

6 голосов
/ 18 апреля 2010

Мне удалось получить простой пример OpenRasta, обслуживающий тривиальное представление в XML / JSON и размещенный в OpenBastard.Envrionments.HttpListenerHostWithConfiguration, работающий в Mono (2.6.3) с небольшим набором изменений в его (OpenRasta; в частности, ветка 2.0.3000), исходный код.

Я сделал мой патч доступным здесь для всех, кто заинтересован. Изменения должны быть достаточно понятными (я включил комментарии), но я также опишу причины изменений ниже ...

  1. OpenRasta.Diagnostics.DebuggerLoggingTraceListener предполагает, что ему будет передана ссылка на экземпляр System.Diagnostics.TraceEventCache при вызове System.Diagnostics.TraceSource. Это предположение верно для платформы .NET, но реализация TraceSource в Mono всегда передает нулевую ссылку.

  2. Mono создает исключение NotImplementedException для методов get и set свойства System.Runtime.Remoting.Messaging.CallContext.HostContext, указанного в OpenRasta.Hosting.AmbientContext и OpenRasta.Hosting.ContextScope.

  3. Последующие запросы от клиента могут завершиться ошибкой, если объект System.Net.HttpListenerResponse или его основной поток, соответствующий предыдущему запросу, не был явно закрыт. Этот момент мне менее понятен, в документации MSDN говорится, что объект ответа должен быть закрыт, но проблема, с которой я столкнулся, не возникала при запуске в .NET Framework.

В настоящее время я работаю над хобби-проектом, предусматривающим разработку и создание веб-службы RESTful на Mono, я буду обновлять патч по мере необходимости; надеюсь, кто-то найдет это полезным.

Отказ от ответственности: я очень новичок в OpenRasta и относительно новичок в C # / "серьезной" разработке программного обеспечения в целом. Я не тестировал никаких других компонентов OpenRasta, кроме упомянутых выше, и модульные тесты продолжают сильно проваливаться; ваш пробег будет, вероятно, варьироваться.

5 голосов
/ 26 марта 2010

OpenRasta в настоящее время не тестируется на моно. Это меняется со следующей итерацией, но ответ «я не знаю».

DebuggerLoggingTraceListener записывает в вывод отладчика, моно может иметь разные ожидания того, как работает код.

2 голосов
/ 19 ноября 2010

Если вы хотите каркас веб-службы, который также работает на MONO, вы должны проверить http://www.servicestack.net

Он также может быть размещен в консольном приложении (независимо от веб-сервера) или в любом приложении ASP.NET, включая:

  • IIS 6.0 / 7.0
  • Apache + Mod_Mono XSP
  • Веб-серверы с поддержкой FastCGI, такие как Nginx, Cherokee и т. Д.
...