2009-06-28 13 views
5

Moje pytanie jest podobne do this one i this one, ale jest niewielka różnica. Dlatego proszę o to tutaj.Ograniczenie Mono Runtime

Mam błyszczącą usługę .Net 3.5 Windows (z NHibernate, LINQ, wyrażeniem lambda) itp., Działającą w systemie Windows. Teraz planuję przenieść moją aplikację na Linuksa, więc myślę o Mono.

Czy mogę po prostu skompilować moją aplikację .net w systemie Windows i skopiować ją na komputer z systemem Linux z zainstalowaną wersją .Net (wersja mono) i oczekiwać, że będzie działała sprawnie? Jeśli nie, czy jest coś, co powinienem zrobić?

Wszelkie odpowiedzi lub wskaźniki są mile widziane.

+0

Myślę, że jest to w istocie duplikat pytania, które łączysz, i inne, takie jak http://stackoverflow.com/questions/549166/how-mature-is-mono i http: // stackoverflow.com/questions/204709/is-mono-robust-wystarczy-dla-poważnego rozwoju przedsiębiorstwa –

+0

Nie sądzę, że to pytanie jest bardziej szczegółowe niż te dwa, o których wspomniałeś. – Graviton

+0

To nie jest dupek, on pyta jak przenieść swoją aplikację, nie jeśli Mono jest stabilny/wystarczająco dojrzały, by użyć go w produkcji. – Treb

Odpowiedz

7

Uruchom za pomocą MoMA tool

Mono Migration Analyzer (MoMA) narzędzie pomaga zidentyfikować problemy możesz mieć przy przenoszeniu aplikacji .Net mono. Pomaga to zidentyfikować obszary specyficzne dla połączeń platformowych (P/Invoke) i , które nie są jeszcze obsługiwane przez projekt Mono w wersji . MoMA może pomóc pokazać potencjalne problemy, istnieje wiele czynników, które nie mogą być pokryte za pomocą prostego narzędzia. MoMA może nie punktu na zewnątrz obszarów, które spowodują problemy i może wskazać obszary które nie będą faktycznie problem

Z punktu Osobowych: Wszystkie C# 3.0 cechą są obsługiwane dobrze, nie miałem problemu z LINQ (do obiektów, nie wiem o LINQ do SQL lub do XML) i NHiberinate również działa dobrze (chociaż nie skończyłem używać)

8

Czy to wystarczy? Naprawdę musisz mieć, aby go przetestować. Niedawno włożyłem wysiłek w sprawienie, aby bufory protokołów działały na Mono. Dotychczas miałem bardzo mało problemów z czasem wykonania; kompilator był dla mnie większym problemem. Musiałem jednak tymczasowo wyłączyć jeden z testów jednostkowych (za pomocą szyderstwa), ponieważ powoduje on, że sama Mono 2.4 VM zaczyna działać. Nie zbadałem jeszcze dlaczego, ale tego rodzaju rzeczy są w zasadzie niemożliwe do przewidzenia.

Wszystko, co wykorzystuje "głębokie" aspekty CLR - takie jak drzewa ekspresji i metody dynamiczne - prawdopodobnie będzie mieć więcej problemów niż proste biblioteki, IMO.

Teraz mówisz, że jest to usługa Windows - oczywiście Linux nie ma usług w taki sam sposób jak Windows, więc musisz ustalić, jak ma działać. Zaczynam od uruchomienia go jako prostej aplikacji konsolowej, gdybym był tobą ... kiedy to wszystko działa, możesz pomyśleć o zintegrowaniu go z innymi kontrolerami "usług" itp. - jeśli znajdziesz to, czego potrzebujesz.

pewnością wykorzystywane być tak, że xbuild nie zapewniają bezproblemową migrację z systemu Windows do budowy na budowę na Linuksie ... jednak to miało wiele uwagi niedawno, więc warto spróbować jeszcze raz. ..

+0

Wow, więc faktycznie przeprowadziłeś testy w Mono? Czy skompilowałeś swój kod i testy również w mono? – Graviton

+1

Tak, wszystko teraz buduje się w mono - ale musiałem rozwiązać kilka problemów z kompilatorem, a "build system" jest po prostu skryptem powłoki z liberalnym użyciem 'find. -name '* .cs'. Powinieneś * zdecydowanie * przeprowadzić testy jednostkowe w Mono ... ale to tylko pierwszy krok, oczywiście. Musisz też przetestować całą aplikację ręcznie. –

+0

Co ciekawe, w trakcie protobuf-net dostałem sporą liczbę błędów związanych z kompilatorem monokryształów. Oczywiście, nadal istnieją pewne problemy. –