ASP.Net czy WPF (C #)? [Zamknięte]

31

Nasz zespół jest w tej kwestii podzielony i chciałem uzyskać opinie stron trzecich.

Budujemy aplikację i nie możemy zdecydować, czy chcemy używać aplikacji .Net WPF Desktop z serwerem WCF, czy aplikacji sieci Web ASP.Net za pomocą jQuery. Pomyślałem, że zadam pytanie tutaj, z pewnymi specyfikacjami, i zobaczę, jakie byłyby zalety / wady korzystania z obu stron. Mam swoją ulubioną i czuję się stronniczy.

Idealnie chcielibyśmy zbudować pierwszą wersję oprogramowania tak szybko, jak to możliwe, a następnie zwolnić i poświęcić trochę czasu na zbudowanie dodatkowych funkcji / komponentów, które chcemy później. Przede wszystkim chcemy, aby oprogramowanie było szybkie. Użytkownicy przeglądają zapisy przez cały dzień, a opóźnienia w ładowaniu zapisów lub odświeżaniu ekranów zabijają ich produktywność.

Szczegóły aplikacji:

  • Szacuję około 100 różnych ekranów dla początkowej wersji, a plany dotyczące wielu dodatkowych ekranów zostaną dodane później po początkowej wersji.
  • Chcemy wykorzystać dwukierunkową komunikację w systemach przypomnień i zdarzeń
  • Obecnie musi obsługiwać około 100 użytkowników, chociaż powiedziano nam, że możemy pozwolić na wzrost do 500 użytkowników
  • Mamy wiele lokalizacji

Przedmioty do rozważenia (może początkowo nie w niektórych przypadkach, ale w przyszłych wydaniach):

  • Miejsce na dodatkowe komponenty, które zostaną dodane po początkowej wersji (jest ich wiele ... być może działają tutaj niż początkowa aplikacja)
  • Nawigacja za pomocą klawiatury
  • Wydajność jest koniecznością
  • Szybkość produkcji do wersji początkowej
  • Niskie koszty utrzymania
  • Przyszłe wsparcie
  • Integracja softphone / skanera

Nasi programiści:

  • Mamy 1 programistę, który uczy się WPF w ciągu ostatnich kilku miesięcy i był tym, który zasugerował, aby użyć do tego WPF.
  • Mamy drugiego programistę, który zna ASP.Net i który może pomóc w projekcie w przyszłości, chociaż nie będzie nad nim pracował aż do pierwszej wersji, ponieważ jego czas poświęca na utrzymanie obecnego oprogramowania.
  • Jestem ja, który pracował z oboma i czuję się swobodnie w obu
  • Mamy firmę zewnętrzną zajmującą się zarządzaniem projektami i są one firmą ASP.Net.
  • Planujemy zatrudnić 1-2 innych, jednak najpierw musimy wiedzieć, w jakim kierunku zmierzamy

Środowisko:

  • Użytkownicy ogólni korzystają z serwera Windows 2003 z usługami terminalowymi. Łączą się za pomocą cienkich klientów WYSE za pośrednictwem połączenia RDP. Pracownicy administracyjni mają własne komputery z XP lub wyższym. Użytkownicy mogą określać własną rozdzielczość, chociaż ograniczają się do używania IE jako przeglądarki internetowej.
  • Inne lokalizacje łączą się z naszą siecią za pośrednictwem połączenia MPLS

Na tej podstawie, co byś wybrał i dlaczego?

Rachel
źródło
Uwielbiam wszystkie głosy, ale naprawdę chciałbym usłyszeć więcej opinii na ten temat :)
Rachel
3
co robisz, co wymaga początkowo 100 ekranów ?
Steven A. Lowe
Szacunki te obejmują wiele ekranów częściowych. Na przykład główny ekran jest podzielony na kilka „kawałków”, które można dodawać / usuwać / przenosić / zmieniać rozmiar zgodnie z potrzebami użytkownika. Każdy ma własny zestaw danych, własny widok edycji i własny zestaw działań, które można wykonać. Liczę je jako osobne zamiast jednego ekranu, ponieważ każdy z nich jest zupełnie inny.
Rachel
Użyj .NET MVC 3, JQuery i HTML5
Oliver Picton
1
Cześć @kmote, skończyliśmy z WPF i byliśmy całkiem zadowoleni z tej decyzji. Pozwoliło to na znacznie większą elastyczność w tworzeniu interfejsu użytkownika, a ja odkryłem, że jego tworzenie było dość szybkie w porównaniu z rozwiązaniem internetowym. Niestety projekt został anulowany po roku z powodu innych priorytetów, jednak gdybym ponownie otrzymał ten sam wybór, podjąłbym tę samą decyzję.
Rachel

Odpowiedzi:

17

Z pewnością brzmi dla mnie jak aplikacja WPF, z dużą ilością interakcji użytkownika i potencjalnie interakcji ze sprzętem. Możesz dostarczyć aplikację za pomocą Click-Once, więc wdrożenie nie jest w większości kwestią. Twoja aplikacja WPF może uzyskać dostęp do usługi WCF i dostarczać dane w postaci binarnej, dzięki czemu wydajność będzie doskonała. Chciałbym zacząć czytać o WPF i jak najszybciej się z nim zapoznać.

Walter
źródło
+1 Ponadto, przy WSZYSTKICH tych ekranach, prawdopodobnie będziesz chciał wbudować w aplikację jak najwięcej możliwości ponownego wykorzystania (zarówno kodu, jak i GUI)
Jon Onstott,
+1 Myślę, że z wymaganą „integracją Softphone / skanera”, chyba jedynym sposobem jest WPF. A może można użyć Silverlight
Jiew Meng
15

Szaleńcza odpowiedź: oboje. Właściwa warstwa usługi, łatwo jest mieć grubego klienta, który robi wszystko (WPF) i szybkiego klienta WWW, który wykonuje najczęściej używane czynności (ASP.NET). Pozostawia drzwi otwarte dla klienta mobilnego itp. W dół drogi.

Wyatt Barnett
źródło
Właśnie o to chodzi ... Aplikacja kliencka WPF do większości zastosowań z lekką wersją internetową do raportów lub ograniczonego dostępu.
Rachel
2
+1 do tego, napisz wnętrzności nie-prezentacji w dowolnym języku .NET, w którym czujesz się komfortowo - a następnie użyj najlepszego narzędzia do każdego zadania prezentacji (tj .: aplikacja internetowa używa interfejsu ASP.NET do tej aplikacji, komputer stacjonarny WPF / Winforms / itp).
heretik
Początkowo użytkownicy mogą uznać program ASP.NET za „wystarczająco dobry”, zwłaszcza jeśli oznacza to, że szybciej zdobędzie więcej aplikacji.
JeffO
8

Jeśli masz tylko jednego programistę, który uczy się WPF i zastanawiasz się nad tym, aby Twój zespół skoczył na WPF, to dlaczego nie skorzystać z Silverlight? Dostajesz wiele zalet WPF, ale nadal możesz pozostawić swój projekt jako aplikację internetową. Ponieważ szukasz dużego projektu modułowego, warto zastosować PRISM z WPF lub Silverlight, aby uprościć MVVM.

Mój zespół niedawno zdecydował się na użycie Silverlight przez asp.net. To był dla nas fantastyczny wybór. Początkowo mieliśmy tylko jednego programistę, który znał jakieś srebrne światło. Potem wszyscy wzięliśmy tygodniowy kurs treningowy, który był w większości bezużyteczny, ale przynajmniej zmoczył nam stopy. Ostatecznie musieliśmy zatrudnić dwóch kontrahentów, którzy pomogliby nam w stworzeniu większości naszego środowiska interfejsu użytkownika. Większość naszego zespołu wciąż nie jest pewna swoich umiejętności w srebrnym świetle. Ja, początkowy członek zespołu ze znajomością Silverlight, i dwaj wykonawcy wykonują większość prac nad SL. Następnie mamy dwóch oddanych członków zaplecza. Powiedziałbym, że zajęło nam około 2 miesięcy po podjęciu decyzji o przeprowadzce do Silverlight, że naprawdę mieliśmy wszystko razem. Jednak, teraz mamy wspaniały produkt, który przypomina bardzo aplikację kliencką, która działa wewnątrz przeglądarki internetowej i nie jest instalowana na żadnej maszynie lokalnie. W sumie prace rozwojowe trwają krócej niż rok i jesteśmy prawie gotowi do wydania pierwszego kandydata.

Kilka rzeczy do rozważenia:

  • WPF lub silverlight, cokolwiek wybierzesz, będzie spora ilość, której Twoi programiści będą musieli się nauczyć.

  • W razie potrzeby Silverlight może zabraknąć przeglądarki. Jeśli to zrobisz, konfiguracja jest bardzo łatwa, więc jeśli kiedykolwiek uruchomisz nową wersję, zainstalowany program przeglądarki SL automatycznie się zaktualizuje.

  • Silverlight nie obejmuje wszystkich elementów sterujących, które ma WPF.

Moja ostatnia uwaga jest taka, że ​​jeśli chcesz usunąć kod tak szybko, jak to możliwe, to oczywiste, że powinieneś korzystać z ASP.NET. Moje główne problemy z ASP to to, że jeśli nie zdyscyplinujesz swojego zespołu, projekt ASP.NET łatwo jest zaśmiecony i bałagan. Jeśli uważasz, że będziesz w stanie poradzić sobie z początkowym narzutem związanym z przyspieszeniem z technologiami, wówczas Silverlight lub WPF da ci wiele wspaniałych możliwości.

Kavet Kerek
źródło
Jesteśmy w bardzo podobnej sytuacji i uważam, że ciekawie było usłyszeć twoją historię, dzięki. Rozważę Silverlight, chociaż do tej pory korzystałem tylko z WPF. Jeśli pójdziemy z WPF, planujemy zrobić naszą sekcję raportowania w Silverlight, więc planowałem się w końcu tego nauczyć
Rachel
Jestem w trakcie konwertowania (odczytu przepisywania) aplikacji ASP.NET w Silverlight - zasadniczo dlatego, że ASP.NET nie skaluje się do tego, co chcemy.
ChrisF
1
Tylko do waszej wiadomości: pamiętajcie, że Silverlight nie będzie głównym produktem stwardnienia rozsianego, a w niektórych przypadkach ludzie mówią, że może zostać wycofany. Zgadzam się, że dobrze byłoby rozważyć, po prostu dodaj tę informację do swojej listy możliwych wad.
Paige Watson,
1
Zdecydowanie rozważyłbym WPF nad silverlight dla tego rodzaju aplikacji. WPF można łatwo wdrożyć jako XBAP (aplikacja przeglądarki xaml), zwykle z kilkoma zmianami kodu w pliku konfiguracyjnym. WPF ma wszystko, co robi Silverlight i więcej, a ponadto WPF otrzymuje o wiele więcej wsparcia. Jedynym minusem jest to, że chociaż Silverlight można potencjalnie wdrożyć na większej liczbie systemów operacyjnych (nawet Linux z projektem Moonlight), WPF wymaga .Net na kliencie, więc ściśle Windows.
Morgan Herlocker
2
Nie wiem, czy Silverlight zostanie wycofany, ale coś z tym związanego to artykuł Mashable Microsoft przechodzi z Silverlight na HTML5 . Osobiście poważnie zastanowię się nad aplikacjami Pure Web Apps, jeśli jest to możliwe w przypadku wtyczek stacjonarnych lub zastrzeżonych, tam gdzie to możliwe
Jiew Meng
7

Ta część dotyczy:

Użytkownicy ogólni korzystają z serwera Windows 2003 z usługami terminalowymi. Łączą się za pomocą cienkich klientów WYSE za pośrednictwem połączenia RDP. Pracownicy administracyjni mają własne komputery z XP lub wyższym. Użytkownicy mogą określać własną rozdzielczość, chociaż ograniczają się do używania IE jako przeglądarki internetowej.

WPF nie jest świetny w przypadku połączeń pulpitu zdalnego / cienkiego klienta. Animacje nie będą płynne, a wszelkie złożone obrazy (nawet gradienty) spowolnią reakcję interfejsu użytkownika na indeksowanie. Pracownicy administracyjni z typowymi maszynami w stylu retro XP najprawdopodobniej również będą mieli problemy z wydajnością złożonych aplikacji WPF (z powodu niewielkiej ilości pamięci RAM i złych układów GPU).

Jeśli wybierzesz ścieżkę WPF, aby uzyskać bogatą grafikę, przygotuj się na hacki wydajności w ostatniej chwili, gdy dowiesz się, że docelowe maszyny mają dziesięć lat. Trzymaj się statycznych ekranów i używaj .NET 4.0, ponieważ wydajność WPF znacznie się poprawiła od wersji 3.5.

Ed Andersen
źródło
Dzięki ... to jest dla mnie naprawdę jeden wielki problem, chociaż do tej pory wygląda na to, że możemy przeskalować grafikę wsteczną, jeśli użytkownik korzysta z połączenia RDP, a testy przebiegły dobrze.
Rachel
2

Technicznie uważam, że połączenie WPF / WCF jest lepszym rozwiązaniem.

Jednak nie jestem przekonany, że twój istniejący programista WPF naprawdę ma doświadczenie w tym projekcie. WPF jest dość przesunięciem w programowaniu procesów myślowych od programowania Winform, więc musisz długo i intensywnie zastanowić się, czy naprawdę masz wystarczające umiejętności w zespole, aby zapewnić tę drogę.

Michael Shaw
źródło
1
+1 „Uczenie się przez kilka miesięcy” może znaczyć wszystko - być przygotowanym na stromą krzywą uczenia się.
Kirk Broadhurst
1

Ciekawy. To brzmi uderzająco dobrze w aplikacji, którą właśnie uruchomiliśmy w mojej firmie (integracja telefonu i skanera i wszystko inne).

Wybraliśmy opcję Silverlight ze szczególnym uwzględnieniem SOA, aby w razie potrzeby można było wykonać aplikację WPF.

Miejsce na dodatkowe komponenty, które zostaną dodane po początkowej wersji (jest ich wiele ... być może działają tutaj niż początkowa aplikacja)

Używamy MEF w warstwie usług i budujemy punkty rozszerzeń (interfejsy wtyczek opisujące niektóre punkty, w których planujemy rozszerzalność lub integrację z innymi systemami)

Nawigacja za pomocą klawiatury

Żaden problem.

Wydajność jest koniecznością

Jakiego rodzaju wydajność? Czy dostrzegasz wydajność (zgryźliwość) czy chrupanie liczb? To ostatnie może stanowić problem z aplikacją web / silverlight. W przypadku tych pierwszych nasza aplikacja przechodzi wiele rekordów, takich jak Twoja, ale jesteśmy w stanie je przewidzieć i pobrać rekordy, gdy użytkownicy pracują na bieżących. Czasy ładowania są zerowe dla tej sekcji naszej aplikacji.

Szybkość produkcji do wersji początkowej

Zależy od zestawu umiejętności. Ale realistycznie, każdy zawsze chce dostać się na rynek tak szybko, jak to możliwe, więc to nie jest argument.

Niskie koszty utrzymania

Podobnie jak szybkość produkcji, nie jest to również argument i sprowadza się do praktyk projektowania i kodowania. Jeśli mówisz o konserwacji sprzętu, możesz chcieć skorzystać z aplikacji w chmurze.

Przyszłe wsparcie

Nie jestem pewien, co to znaczy.

Integracja softphone / skanera

Silverlight 4 umożliwia teraz dostęp do kamery internetowej / mikrofonu (mamy nadzieję na przeprowadzenie wideokonferencji między aplikacjami, a także integrację sip), więc jeśli używasz serwera telefonicznego, możesz sam go napisać. Nie znam żadnych istniejących, ale to może pomóc.

W przeciwnym razie może być konieczne brzydkie włamanie (nie ma już odniesienia do artykułu / ów, przepraszam) lub nie masz innego wyboru, jak mieć aplikację WPF, która może współpracować z systemem plików. SL4 może wyjść poza przeglądarkę, ale może uzyskać dostęp tylko do niektórych części systemu plików. Żaden z nich prawdopodobnie nie będzie częścią, której potrzebujesz do interakcji z telefonem.

Masz na myśli skaner dokumentów? Nie jestem co do tego pewien. Używamy skanerów ręcznych / kodów kreskowych, które działają jak każde inne urządzenie wejściowe i nie stanowią problemu.

Steven Evers
źródło
1

czy potrzebujesz wysoce responsywnej aplikacji do korzystania przez cały dzień? użyj WPF; łatwiej będzie ponownie używać komponentów GUI w WPF przez ASP / MVC (IMHO)

tak, jquery i inni są świetni, silverlight jest fajny, ale aplikacje komputerowe są jeszcze bardziej wydajne

dla zaplecza, WCF jest w porządku

Steven A. Lowe
źródło
0

Będę musiał zalecić użycie WCF dla warstwy usług ze względu na skalowalność i bezpieczeństwo. Jeśli chodzi o warstwę prezentacji, której można użyć Silverlight lub ASP.NET, Silverlight jest podobny do Flasha, ale na początku jest trudny do zrozumienia i ma wysoką krzywą uczenia się, głównie podczas pracy z danymi. ASP.NET jest łatwiejszy w użyciu, ale będziesz potrzebował dużo ulepszeń i javascript, aby móc go efektywnie używać.

Victor Gil
źródło
1
Plan ma mieć warstwę usługi WCF niezależnie od tego, co wybieramy dla warstwy interfejsu użytkownika. Próbujemy zdecydować, czy chcemy WPF / Desktop czy ASP / Web dla aplikacji klienckiej. Nawet jeśli zdecydujemy się na aplikację komputerową, istnieje duża szansa, że ​​będziemy mieć portal internetowy, aby uzyskać dostęp do podzbioru elementów, takich jak raporty.
Rachel