2010-03-26 34 views
5

Mặc dù hỗ trợ Mono không phải là một vấn đề lớn đối với chúng tôi, tôi đã tìm OpenRasta hỗ trợ nó vì nó có một số thông báo cam kết về nó ..OpenRasta có hỗ trợ Mono không?

Vâng, tôi đã cố gắng xây dựng nó trên Mono và có tham chiếu kiểu mơ hồ (sau khi tạo thủ công như 10 obj thư mục.) vì vậy, tôi cố gắng chỉ sử dụng các hội đồng được xây dựng sẵn tôi đã có trên tay và điều đó đã cho tôi một (lỗi thông thường Object Reference Not Set To Instance of an Object tôi có với mono ..) tại OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll (sử dụng xsp2)

có hỗ trợ chính thức cho Mono hoặc tôi thiếu một số bước bổ sung sorta để triển khai?

Trả lời

5

OpenRasta hiện không được thử nghiệm trên mono. Điều này đang thay đổi với lần lặp tiếp theo, nhưng câu trả lời là "tôi không biết".

Trình gỡ lỗiLoggingTraceListener đang ghi vào đầu ra trình gỡ lỗi, mono có thể có những kỳ vọng khác nhau về cách mã hoạt động.

+0

Hey là không chắc chắn nơi để hỏi với trang web đang được di chuyển và như vậy, nhưng khi chính xác là "lần lặp tiếp theo"? Bạn đang thử nghiệm với Mono ngay bây giờ và nó hoạt động? – Earlz

+0

Ah, chủ yếu được hỗ trợ nó xuất hiện từ twitter: http://twitter.com/serialseb/status/14623498399911936 – Earlz

6

Tôi đã quản lý để có được một ví dụ đơn giản OpenRasta, phục vụ một đại diện tầm thường trong XML/JSON và được lưu trữ thông qua OpenBastard.Envrionments.HttpListenerHostWithConfiguration, chạy trên Mono (2.6.3) với một bộ thay đổi nhỏ (OpenRasta của nó) ; cụ thể là mã nguồn 2.0.3000).

Tôi đã tạo patch available here cho bất kỳ ai quan tâm. Những thay đổi nên được khá tự giải thích (Tôi đã bao gồm ý kiến) nhưng tôi cũng sẽ vạch ra những lý do cho sự thay đổi dưới đây ...

  1. OpenRasta.Diagnostics.DebuggerLoggingTraceListener giả định rằng nó sẽ được thông qua một tham chiếu đến một thể hiện của System.Diagnostics.TraceEventCache khi được gọi bởi System.Diagnostics.TraceSource. Giả định này giữ trên khung công tác .NET nhưng việc thực thi TraceSource của Mono luôn vượt qua một tham chiếu null.

  2. Mono ném NotImplementedException cho cả phương thức get và set của thuộc tính System.Runtime.Remoting.Messaging.CallContext.HostContext được tham chiếu trong OpenRasta.Hosting.AmbientContext và OpenRasta.Hosting.ContextScope.

  3. Yêu cầu tiếp theo từ ứng dụng khách có thể không thành công khi đối tượng System.Net.HttpListenerResponse hoặc luồng cơ bản của ứng dụng tương ứng với yêu cầu trước đó chưa được đóng một cách rõ ràng. Điểm này tôi ít rõ ràng hơn, các tài liệu MSDN nói rằng đối tượng phản ứng phải được đóng lại nhưng vấn đề tôi gặp phải không xuất hiện chính nó khi chạy trên khuôn khổ .NET.

Tôi hiện đang làm việc trên một dự án sở thích đòi hỏi thiết kế và xây dựng một dịch vụ web RESTful trên Mono, tôi sẽ cập nhật bản vá và khi tôi cần; hy vọng ai đó sẽ thấy nó hữu ích.

Tuyên bố từ chối trách nhiệm: Tôi rất mới đối với OpenRasta và tương đối mới đối với phát triển phần mềm C#/"nghiêm trọng" nói chung. Tôi đã không kiểm tra bất kỳ thành phần nào khác của OpenRasta bên ngoài những phần đã đề cập ở trên và các bài kiểm tra đơn vị tiếp tục thất bại; số dặm của bạn có thể là khác nhau.

+0

Bạn vẫn có bản vá đó có tiện dụng không? Liên kết đã chết ngay bây giờ – firegrass

2

Nếu bạn muốn có một khuôn khổ dịch vụ web mà còn chạy trên MONO bạn nên kiểm tra http://www.servicestack.net

Nó cũng có thể được lưu trữ trong một ứng dụng Console (không phụ thuộc vào một Web Server) hoặc bất kỳ ASP.ứng dụng NET bao gồm:

  • IIS 6.0/7.0
  • Apache + mod_mono XSP
  • FastCGI kích hoạt máy chủ web như Nginx, Cherokee, vv