Jestem w początkowej fazie planowania projektu ponownego zapisu i decyduję między silverlight / silverlight oob / wpf. TL; DR na końcu.
Jest to aplikacja LOB, która obsługuje kalendarze potencjalnych klientów / klientów / spotkań. Niezbyt skomplikowane. Niezależnie badam te opcje gdzie indziej, ale pomyślałem, że zapytam. Niektóre wstępne wymagania / przewidywalne problemy to:
Muszę być w stanie wywołać exe w systemie za pomocą args wiersza poleceń (telefon sip).
Sprawia, że SL stanowi problem
Baza użytkowników jest rozproszona i chcę ograniczyć ruch, który przechodzi przez drut w jak największym stopniu i uniknąć pewnych nieprzyjemnych problemów z współbieżnością
Widzę, że jest to problem przy użyciu WPF
Wdrażanie / aktualizacja oprogramowania musi być bardzo proste . Niektórzy użytkownicy są wysoce nietechniczni (patrz: 70 lat, na komputerze po raz pierwszy)
To nie jest duży problem z aplikacją ClickOnce, którą zastępujemy, i mam kontrolę nad maszynami, na których się przyzwyczaja. Jednak użytkownicy są łatwiejsi, jeśli nie muszą nawet klikać przycisku „Zainstaluj”. Nie wiem, jak sobie z tym poradzić w Silverlight OOB.
Firma planuje twardą rozbudowę za 12 miesięcy, więc wdrożenie sprzętu powinno być szybkie / łatwe. Chodzi o to, aby uzyskać połączenie internetowe w nowej lokalizacji, podłączyć niektóre komputery i móc pracować bez potrzeby posiadania dedykowanych pracowników IT lub konfiguracji serwera.
Sprawia, że SL jest atrakcyjny
Integracja z innymi usługami (oprogramowanie finansowe, serwer Asterix) nie jest bezpośrednim celem, ale ostatecznym celem jest bycie częścią systemu. Jest to znacznie prostsze / bardziej wydajne, jeśli jedna usługa jest skonfigurowana do integracji z tymi usługami dodatkowymi i nie musi przesyłać wszystkich tych danych przewodowo
Sprawia, że SL jest atrakcyjny
Tworzenie wielu „wersji” jest niemożliwe. Nie wiem, jak to jest utrzymywać wersję Silverlight + Silverlight OOB (jeśli są jakieś problemy)
Może sprawić, że WPF będzie lepszą opcją.
TL; DR: Z mojego punktu widzenia aplikacja Silverlight ma najlepszy sens dla 90% użytkowników - pozostałe 10% nie może jej używać, ponieważ muszą uruchomić exe. Silverlight OOB może być szczęśliwym środkiem, ale w tej chwili nie wiem, jaki jest jego model wykonania (czy nadal istnieje koncepcja kodu po stronie serwera? Jeśli tak, to prawdopodobnie byłby idealny), a ja nie wiedzieć, jak działa wdrożenie / aktualizacja.
źródło
Odpowiedzi:
Cóż - ciekawy problem. Zapomniałeś wspomnieć, że możesz mieć aplikację pełnego zaufania Silverlight od wersji SL4, więc jeśli myślisz o WPF, możesz rozważyć to. Wymagałoby to instalacji (ClickOnce), ale wydaje się, że od tego odchodzisz.
Nie zrobiłem jeszcze nic z OOB, ale jestem prawie pewien, że ten sam plik binarny może być używany zarówno w przeglądarce, jak i poza przeglądarką, ponieważ jest to ustawienie projektu, a nie oddzielny cel kompilacji.
na karcie Silverlight projektu Silverlight.
Więc nie będzie tam osobnego problemu z konserwacją.
Możesz wbudować sporo kodu w aplikację internetową, która obsługuje aplikację Silverlight i komunikować się za pomocą usług WCF RIA - ponownie będziesz musiał korzystać z .NET 4 i SL 4, aby uzyskać wersję 1.0 tego. .NET 3.5 i SL 4 obsługuje tylko usługi betaF RIA w wersji beta. Zmniejszyłoby to a) rozmiar pobieranego pliku ib) ilość kodu, który musiałby zostać wykonany na kliencie, ale zwiększyłby ruch sieciowy.
Na podstawie tego wyniku możesz podzielić swój kod Silverlight na kilka zestawów i używając czegoś takiego jak Prism ustawić je do ładowania na żądanie. Oznacza to, że użytkownik pobiera tylko te części aplikacji, których faktycznie używa. Możesz dodatkowo zmniejszyć ilość pobranych plików, zaznaczając
opcja.
Jeśli masz plik „extmap”, który można połączyć z dowolnymi zewnętrznymi bibliotekami DLL (stron trzecich lub .NET), oznacza to, że są one pakowane w plik zip i pobierane osobno, aby można je było udostępniać we wszystkich plikach xap w projekcie. Dzięki temu poszczególne pliki xap mają minimalny rozmiar i zapewnia, że masz tylko jedną kopię tych innych bibliotek DLL na komputerze klienckim.
źródło
Twoja analiza jest bardzo dobra.
Jedyną rzeczą, o której chciałbym wspomnieć, jest to, że nie WSZYSTKIE ramy są dostępne w aplikacji Silverlight. To ograniczenie MOŻE przechylić twój wybór w kierunku WPF, ale musisz zobaczyć, jak to ograniczenie ma zastosowanie, czy nie, w zależności od potrzeb aplikacji.
źródło
Kilka szybkich rzeczy:
Wdrażanie i „kod po stronie serwera”: Aplikacja Silverlight to aplikacja po stronie klienta, prosta i prosta. Nie daj się zwieść samemu faktowi, że jest on dostarczany przez przeglądarkę - kiedy uruchamiasz aplikację SL w przeglądarce, pobierasz zestawy dla tej aplikacji w spakowanym pakiecie, rozpakowujesz je i uruchamiasz za pomocą wtyczki. Silverlight sam w sobie nie ma pojęcia „kod po stronie serwera” - jeśli chcesz, aby kod działał na zdalnym serwerze, napisz usługę WCF.
Aktualizowanie aplikacji: jest to częsty scenariusz dla aplikacji OOB, a SL ma wbudowaną obsługę. Google wokół CheckAndDownloadUpdateAsync.
Edycja: zapomniałem wspomnieć - instalacja aplikacji odbywa się z poziomu aplikacji. Domyślnie instalowalna aplikacja SL ma akcję menu kontekstowego, aby ją zainstalować. Instalację można jednak wykonać również programowo w odpowiedzi na kliknięcie przycisku przez użytkownika. Stan instalacji można również wykryć programowo, więc to, co widziałem, niektóre aplikacje SL, które są przeznaczone wyłącznie do uruchamiania OOB, najpierw wykrywają, czy są zainstalowane. Jeśli tak, uruchom aplikację. Jeśli nie, po prostu pokaż ekran powitalny z przyciskiem, który instaluje aplikację.
źródło