Każdy ma doświadczenie z architekturą dla cross platform WP7 Android iOS mobile development (monotouch, monodroid, C#)

to pytanie jest szczególnie związane z zalecaną architekturą i wcześniejszymi doświadczeniami ludzi dla wieloplatformowych aplikacji WP7, iOS, Android opracowanych odpowiednio przy użyciu C#, Monotouch i Monodroid. Zapoznałem się z poprzednimi pytaniami TUTAJ, TUTAJ i TUTAJ . Dostarczają dobrych odpowiedzi, ale nie do końca tego, czego szukam. Znalazłem również to doskonałe pytanie , które idzie do korzyści kosztowej, więc istnieje pewne nakładanie się.

Mam wymóg opracowania wieloplatformowej aplikacji na iPhone/iPad, WP7 i android dla firmy health & fitness, która zintegruje się z ich stroną internetową. Aplikacja wymaga niewielkiej ilości lokalnego przechowywania danych w trybie offline i synchronizacji ze stroną internetową, gdy dostępna jest sieć. Jestem programistą Windows (C#/c++) na wskroś i naprawdę nie chcę iść w dół trasy trzech Objective C, Java i C# aplikacje, chociaż będę, jeśli będę musiał. Ja też będę pracując jako lider technologiczny i dostarczając część pracy zespołowi przy tym projekcie.

Chciałbym się dowiedzieć, czy ktoś z Was ma doświadczenie w rozwoju wieloplatformowym przy użyciu Monotouch, Monodroid i WP7 i podzielić się swoim doświadczeniem w architekturze aplikacji, aby ponownie wykorzystać jak najwięcej kodu. Architektura, którą rozważam jest następująca:

Proponowana Architektura dla aplikacji Wp7, Monotouch, monodroid

Moje pytanie jest następujące:

  • czy ktoś tu próbował czegoś takiego to?
  • czy te frameworki (Monotouch, monodroid) są warte swojej soli do tego typu prac?
  • Czy mogę skonfigurować cały projekt w Visual Studio 2010 z oddzielnymi projektami (DLL / exe)Dla celu Monotouch, Monodroid i Wp7 (ale współdzielony kod za pomocą "Dodaj jako Link")?
  • jakiego rodzaju ponownego użycia kodu mogę realistycznie oczekiwać w tej (lub podobnej) architekturze? czyli jakich strategii / wzorców mogę użyć do ponownego wykorzystania lokalnego dostępu do danych, usług internetowych i logiki biznesowej?

Pozdrawiam,

Author: Community, 2012-01-06

4 answers

Warto przyjrzeć się projektowi MonoCross, który ma pomóc w ponownym użyciu kodu C# z wieloma warstwami prezentacji:

Http://code.google.com/p/monocross/

Autorzy MonoCross (ITR Mobility) stworzyli wiele mobilnych rozwiązań wieloplatformowych dla różnych klientów i napisali dwie książki na temat jednej z nich jest "iPad w przedsiębiorstwie" ( http://amzn.to/zAhQK6 [[4]}) oraz nadchodzący " Cross-Platform Mobile Development with C#" ( http://amzn.to/wM6RsF).

W międzyczasie możecie obejrzeć prezentację Scotta Olsona na Monospace 2011, która opisuje, jak używać MonoCross do kierowania na wiele platform mobilnych i stacjonarnych jednocześnie, wykorzystując logikę biznesową:

Http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise

Wymuszają ścisły podział MVC w kodzie:

Wzór Monocross MVC http://tirania.org/s/0e187c1c.png

The największą zaletą projektowania aplikacji z tym modelem jest to, że można uruchomić tę samą aplikację z natywnymi interfejsami użytkownika na każdej platformie. Dostajesz natywny interfejs iOS, Android, Windows, a nawet mają ASP.NET front-end, który umożliwia publikowanie internetowych wersji tej samej logiki biznesowej.

Ta technologia została z powodzeniem wykorzystana przez aplikację Medtronic sample, która jest prezentowana przez Apple na iPadzie biznes:

Http://www.apple.com/ipad/business/profiles/medtronic/

Proponuję również zajrzeć na blog Scotta, gdzie regularnie publikuje swoje doświadczenia z architekturą wieloplatformową.

 25
Author: miguel.de.icaza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-08 14:34:28

Na podstawie Twoich komentarzy twoje wymagania dotyczą platformy mobilnej, która będzie integrować się z istniejącymi usługami, ale także działać offline. Jesteś szczególnie zainteresowany C# via mono, jednak zaznaczyłeś, że nie dyskontujesz innych podejść.

Uważam, że HTML / PhoneGap / JavaScript jest trasą, którą powinieneś szczegółowo zbadać. Wersja WP7 tego frameworka właśnie została wydana, a ja miałem doświadczenie z wydaniem aplikacji do Rynek z wykorzystaniem tego podejścia.

PhoneGap zawija Twój kod HTML / JavaScript, w przypadku WP7 jest on ładowany do lokalnej pamięci masowej. Dzięki temu aplikacja może pracować całkowicie w trybie offline. Dotyczy to wszystkich wersji (iOS, Android itp...)

Prawdopodobnie największym problemem z PhoneGap / HTML5 jest ten sam problem, który mamy podczas tworzenia złożonych aplikacji internetowych dla przeglądarki. Narzędzia dla JavaScript nie jest wielki i różnice w przeglądarce są stałym problemem. Jest to jednak sprawdzone rozwiązanie.

Wreszcie, możliwe jest stworzenie interfejsu aplikacji, który jest zupełnie inny dla każdej platformy. Korzystając z wzorca MVVM udało mi się udostępnić całą moją logikę biznesową JavaScript między aplikacjami WP7 i iOS, mając jednocześnie zupełnie inny interfejs:

Tutaj wpisz opis obrazka

Porównaj to z ekranami WP7:

Tutaj wpisz opis obrazka

Uwaga: planuję mieć wersję iOS Property Finder w AppStore wkrótce, po prostu muszę pracować jak korzystać z PhoneGap Build!

 9
Author: ColinE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-06 10:16:44

Po prostu dodanie innej alternatywy dla mix-mvvmcross

Ten projekt został opracowany w oparciu o doświadczenia z monocross, mvvmlight i opennetcf.

To dość opiniotwórczy Framework mvvm (z moimi opiniami w nim!), zawiera wsparcie wiązania danych dla Droida i dotyku, i naprawdę zachęca do ponownego użycia kodu między platformami.

Źródło jest dostępne od https://github.com/slodge/MvvmCross , został użyty w co najmniej kilku dużych projektach już i jest nadal w fazie aktywnego rozwoju.

Na slideshare jest prezentacja wprowadzająca: http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding

Jednym z bardziej w pełni funkcjonalnych próbek jest aplikacja konferencyjna:

aplikacja SQL bits

 9
Author: Stuart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-19 14:04:32

Pytanie jest bardzo trudne do odpowiedzi, ale chciałbym podzielić się kilkoma przemyśleniami.

Sytuacja z rozwojem mobilnym jest bardzo podobna do rozwoju w pierwszej połowie lat 90. telefon ma ograniczone zasoby, jak komputery, mobilne osy robią swoje małe kroki, stąd ekosystem jest stosunkowo mały. Mają własną filozofię, Narzędzia, a nawet języki. I to jest dobra rzecz, ale prowadzi do bólu głowy w rozwoju międzyplatformowym. W rezultacie istnieje wiele próbuje to trochę wyjaśnić. Ludzie budują frameworki, wrappery itp. który jest rodzajem abstrakcji i abstrakcje są nieszczelne . Jest to niezwykle ważne dla urządzeń mobilnych nie tylko wydajność jak liczba cykli procesora, ale także wydajność baterii, która jest znacznie ważniejsza dla użytkownika.

Na Twoim miejscu zbudowałbym aplikacje w środowisku natywnym, zwłaszcza jeśli masz jakieś względy wydajności. Najlepsze wsparcie, narzędzia, zasoby edukacyjne itp. pays do zduplikowanej logiki biznesowej. Podsumowując, nie jest to system operacyjny ani System zarządzania bazami danych, Baza kodowa nie będzie duża;)

To powiedziane. Jeśli chodzi o Monotouch i Monodroid, byłbym bardzo ostrożny, ponieważ Apple blokuje aplikacje iPhone OS tworzone przez wiele kompilatorów stron trzecich i Król nie dba o deweloperów. Bardzo prawdopodobne jest, że mono zostanie spłukane przez naruszenie patentów lub producentów oprogramowania własnościowego. To jest dla mnie smutne bo C# to mój ulubiony język.

PS. Nie wierzę, że HTML5 dla urządzeń mobilnych zajmie W najbliższym czasie.

 1
Author: Lukasz Madon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:00