2010-03-26 27 views
5

Aunque Mono, no es un gran problema para nosotros, pensé OpenRasta apoyado causa que tiene algunos mensajes de confirmación sobre esto ..¿OpenRasta es compatible con Mono?

Bueno, he intentado construir en Mono y tengo referencias de tipo ambiguas (después de crear manualmente como 10 obj directorios.) Así que he intentado simplemente usando los conjuntos creados previamente que tenía en la mano y eso me dio un Object Reference Not Set To Instance of an Object (el error habitual que tengo con mono ..) en OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll (usando xsp2)

¿hay apoyo oficial para ¿Mono o me falta algún paso adicional para el despliegue?

Respuesta

5

OpenRasta no está siendo probado en mono por el momento. Esto está cambiando con la próxima iteración, pero la respuesta es "No sé".

DebuggerLoggingTraceListener está escribiendo en la salida del depurador, mono puede tener diferentes expectativas de cómo funciona el código.

+0

Hey no estaba seguro de dónde pedir con el sitio web estar bajo migración y tal, pero ¿cuándo exactamente es la "próxima iteración"? ¿Estás probando con Mono ahora y funciona? – Earlz

+0

Ah, principalmente compatible aparece en twitter: http://twitter.com/serialseb/status/14623498399911936 – Earlz

6

He logrado obtener un ejemplo simple de OpenRasta, sirviendo una representación trivial en XML/JSON y alojado a través de OpenBastard.Envrionments.HttpListenerHostWithConfiguration, ejecutándose en Mono (2.6.3) con un pequeño conjunto de cambios en su (OpenRasta's ; específicamente, el código fuente de la rama 2.0.3000).

He hecho mi patch available here para cualquier persona que esté interesada. Los cambios deben ser bastante explica por sí mismo (He incluido comentarios) pero también a esbozar las razones por las modificaciones siguientes ...

  1. OpenRasta.Diagnostics.DebuggerLoggingTraceListener asume que se pasa una referencia a una instancia de System.Diagnostics.TraceEventCache cuando se invoca por System.Diagnostics.TraceSource. Esta suposición se cumple en el marco .NET, pero la implementación de TraceSource de Mono siempre pasa una referencia nula.

  2. mono lanza una NotImplementedException tanto para los métodos get y set de la propiedad System.Runtime.Remoting.Messaging.CallContext.HostContext referencia en OpenRasta.Hosting.AmbientContext y OpenRasta.Hosting.ContextScope.

  3. Las solicitudes posteriores de un cliente pueden fallar cuando el objeto System.Net.HttpListenerResponse, o su flujo subyacente, correspondiente a la solicitud anterior no se ha cerrado explícitamente. En este punto estoy menos claro, la documentación de MSDN indica que el objeto de respuesta debe estar cerrado, pero el problema que encontré no se presentó cuando se ejecuta en .NET Framework.

estoy trabajando actualmente en un proyecto de pasatiempo que implica el diseño y la construcción de un servicio web REST en Mono, voy a actualizar el parche como y cuando necesito; con suerte alguien lo encontrará útil.

Descargo de responsabilidad: Soy muy nuevo en OpenRasta y relativamente nuevo en C#/desarrollo de software "serio" en general. No he probado ningún otro componente de OpenRasta fuera de los mencionados anteriormente y las pruebas unitarias continúan fallando; su kilometraje probablemente varíe.

+0

¿Aún tenía ese parche a mano? El enlace está muerto ahora – firegrass

2

Si quieres un marco de servicios web que también se ejecuta en MONO que debe salir http://www.servicestack.net

También puede alojarse en una aplicación de consola (independiente de un servidor web) o cualquier ASP.NET incluyendo:

  • IIS 6.0/7.0
  • Apache + Mod_Mono XSP
  • permitido FastCGI servidores web como Nginx, Cherokee, etc