2008-10-16 14 views
9

Moja firma ma istniejącą aplikację WinForm, która działa w systemie WinXP. Aplikacja wykonuje dużo przetwarzania dźwięku za pomocą DirectSound.Koszt rzeczywistego uruchomienia aplikacji WinForm na mono?

Moja firma chciałby oceniać Mono, jako alternatywa na stacji roboczej do kosztu Vista/Win Server 2008.

Słyszałem, że różnych szacunków, od „będzie działać łatwo na Mono”, aby "w niektórych przypadkach może upłynąć kilka miesięcy na przekodowaniu, aby aplikacja WinForm działała z Mono w systemie Linux".

Czy ktoś ma dobre doświadczenie w tym świecie? Dobry odnośnik do łącza? Chciałbym uzyskać lepszy pomysł, zanim przejdę do testowania.

Dzięki!

Odpowiedz

12

Część WinForm będzie łatwa, możesz zrobić to bardzo niewiele, ponieważ Mono twierdzi teraz, że obsługuje WinForm 100%, jednak wszystkie połączenia DirectSound będą musiały zostać przepisane, aby użyć API dostępnego w Linuksie, ALSA jest oczywiste wybór.

Napisałem małe aplikacje w VS 2005 i przeniesiono je z łatwością do Mono. Jeśli wykonujesz dużo P/Invokes, musisz wziąć to pod uwagę, ponieważ mogą one być całkowicie przepisane lub ponownie przemyślane.

Zobacz także MOMA: "Narzędzie Mmo Migration Analyzer (MoMA) pomaga zidentyfikować problemy, które mogą wystąpić podczas przenoszenia aplikacji .Net do Mono. Pomaga to zidentyfikować połączenia specyficzne dla platformy (P/Invoke) i obszary, które są jeszcze nie wspierane przez projekt Mono. "

+1

Chociaż Mono twierdzi, że obsługuje WinForm w 100%, miałem problemy z układem moich kontrolek różniących się pod względem Mono pod Linuksem od tego, co jest w systemie Windows (prawdopodobnie ze względu na użycie mniej typowych właściwości wyglądu kontrolnego). – Luke

+0

Zgadzam się, jest szansa, że ​​będziesz musiał poprawić niektóre rzeczy w swoim kodzie WinForm. Widziałem to sam. Dlatego powiedziałem "roszczenia do wsparcia" zamiast "popiera". – postfuturist

6

Mono może pomóc ci przenieść zarządzany kod, ale nie pomoże ci przenieść warstwy audio.

Niestety, framework .NET nie zapewnia kompleksowego API do przetwarzania dźwięku. Zapewnia jedynie sposób odtwarzania niewielkiej próbki dźwiękowej, a nie jest nawet bardzo dobry w tym (Zobacz post Jeroena dotyczący luk dźwiękowych podczas działania emulatora C64 pod IKVM).

Będziesz musiał zbadać, które Linux API najlepiej odwzorowuje, do czego służy aplikacja audio.

Lennart Poettering wpisu na blogu na dźwięk jest doskonałym punktem wyjścia:

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

Gdy zdecydujesz się na API, podobnie jak w systemie Windows, trzeba będzie P/Invoke API, który jest odpowiedni dla ty.

Powiązane problemy