2008-10-16 25 views
9

Công ty của tôi có một ứng dụng WinForm đã được thiết lập hiện có đang chạy trên WinXP. Ứng dụng thực hiện rất nhiều việc xử lý âm thanh bằng DirectSound.Thế giới thực chi phí để chạy các ứng dụng WinForm trên mono?

Công ty của tôi muốn đánh giá Mono, như một sự thay thế trên mỗi máy trạm phí cho Vista/Win Server 2008.

Tôi đã nghe nói rằng ước tính khác nhau, dao động từ 'nó sẽ làm việc một cách dễ dàng trên Mono' để 'có thể mất hàng tháng để giải mã trong một số trường hợp nhất định để có được một ứng dụng WinForm chạy với Mono trên Linux'.

Có ai có trải nghiệm thực tế tốt về điều này không? Tham chiếu liên kết tốt? Tôi muốn có một ý tưởng tốt hơn trước khi tôi cam kết thử nghiệm.

Cảm ơn!

Trả lời

12

Phần WinForms sẽ dễ dàng, bạn có thể phải làm rất ít khi Mono bây giờ tuyên bố hỗ trợ Winforms 100%, tuy nhiên tất cả các cuộc gọi DirectSound sẽ phải được viết lại để sử dụng API có sẵn trên Linux, ALSA là hiển nhiên lựa chọn.

Tôi đã viết các ứng dụng nhỏ trong VS 2005 và chuyển chúng dễ dàng sang Mono. Nếu bạn thực hiện rất nhiều P/Invokes, thì bạn sẽ phải tính đến điều đó, vì chúng có thể được viết lại hoàn toàn hoặc được suy nghĩ lại.

Ngoài ra, hãy kiểm tra MOMA: "Công cụ phân tích di chuyển mono (MoMA) giúp bạn xác định các vấn đề bạn có thể gặp khi chuyển ứng dụng .Net sang Mono. chưa được dự án Mono hỗ trợ. "

+1

Mặc dù Mono tuyên bố hỗ trợ 100% cho WinForms, tôi đã gặp vấn đề với bố cục các điều khiển của tôi khác với Mono trong Linux từ những gì trong Windows (có thể do sử dụng một số thuộc tính điều khiển ít phổ biến hơn). – Luke

+0

Đồng ý, có một cơ hội mà bạn có thể phải tinh chỉnh một số thứ trong mã WinForms của bạn. Tôi đã nhìn thấy điều này bản thân mình. Đó là lý do tại sao tôi nói "yêu cầu hỗ trợ" thay vì "hỗ trợ". – postfuturist

6

Mono có thể giúp bạn di chuyển mã được quản lý, nhưng nó sẽ không giúp bạn di chuyển lớp âm thanh.

Đáng buồn thay, .NET framework không cung cấp API toàn diện để xử lý âm thanh. Nó chỉ cung cấp một cách để phát lại một mẫu âm thanh nhỏ, và nó thậm chí không phải là rất tốt ở đây (Xem bài viết của Jeroen về khoảng trống âm thanh khi chạy giả lập C64 dưới IKVM).

Bạn sẽ phải nghiên cứu bản đồ API Linux nào tốt nhất cho ứng dụng âm thanh của bạn đang làm gì.

Lennart Poettering blog entry về âm thanh là một điểm khởi đầu tuyệt vời:

http://0pointer.de/blog/projects/guide-to-sound-apis.html

Khi bạn quyết định về một API, giống như trong Windows, bạn sẽ phải P/Gọi API đó là đúng cho bạn.

Các vấn đề liên quan