2011-01-07 13 views
5

Stary system klienta oparty na Delphi 5, tysiące linii kodu, zaczyna się rozkładać. Problemy z nowymi sterownikami i systemami operacyjnymi to podstawowe problemy.Środowisko programowania interfejsu sieciowego w celu zastąpienia starego systemu opartego na Delphie

Przyjmujemy kompletny przepis, moduł na raz i chcemy spojrzeć na interfejs oparty na przeglądarce. Baza danych to Oracle 10, którą możemy zastąpić, jeśli ma to sens.

Podstawowe wymagania to:

  • pochodzące od firmy lub społeczności użytkowników, które jest wystarczająco wytrzymałe, aby być w pobliżu przez następne 5-7 lat (jesteśmy realistami na ten temat).

  • Potrafi szybko interfejs do korzystania z procedur przechowywanych z Oracle i usług internetowych produkowanych w ASP.NET i ColdFusion jako źródła danych.

  • Możliwość wdrażania na klientach zwirtualizowanych, a także na grubych komputerach klienckich Windows i Apple.

  • Dodatkowe punkty, jeśli istnieje sposób na ponowne użycie starego kodu Delphi (ale znowu jesteśmy realistami, więc nie spodziewamy się, że tak się stanie).

Patrzymy na Silverlight, Flex i Ruby jako możliwe środowiska programistyczne. Czy ktoś ma jakieś inne zalecenia lub uwagi na temat powyższego?

Dzięki za pomoc.

Odpowiedz

2

Jeśli szukasz szeroko obsługiwanej platformy, która będzie dostępna przez jakiś czas, która może łatwo łączyć się z usługami sieciowymi, prawdopodobnie zatrzymałbym się na ASP.NET z C#.

.NET ma ogromną społeczność programistów, może z łatwością współpracować z bazami danych Oracle i ma świetną obsługę serwisów internetowych.

Prawdopodobnie przylegałbym do interfejsu HTML (zamiast polegać na Flashu lub Silverlight, ponieważ żadna z nich nie jest szeroko rozpowszechniona po sfinalizowaniu HTML5). Możesz teraz zacząć integrować funkcje HTML5, ponieważ większość platform obsługuje niektóre z nich.

Jeśli chodzi o integrację ze starym kodem Delphi, można spróbować przekształcić różne moduły w komponenty COM. Następnie można użyć tych komponentów COM w kodzie .NET za pośrednictwem COM Interop.

... wygląda na to, że omówiłem wszystkie podstawy.

+0

Myśl o HTML5. Przeglądarki obecnie nie implementują istniejących konstrukcji HTML. Jedną z zalet Flash/Silverlight jest spójność w różnych przeglądarkach. Nic nie sprawia, że ​​myślę, że HTML5 przyniesie spójność między przeglądarkami. Jeśli oryginalny plakat może standaryzować w pojedynczej przeglądarce, to HTML (i JavaScript) będzie doskonałym wyborem. Ponieważ chce obsługiwać urządzenia Windows i Apple, prawdopodobnie nie jest w stanie ustandaryzować w jednej przeglądarce. Podejrzewam, że przejście z Delphi do "starej szkoły" aplikacji HTML będzie koszmarem użyteczności. – JeffryHouser

+0

Dziękuję bardzo za odpowiedź Justin. Nasz sklep to przede wszystkim C#, ale chciałem przyjąć agnostyczne podejście do wyboru nowego środowiska. Oczywiście, jeśli wszystkie odpowiedzi potwierdzą to, co powiedziałeś, nie będę rozczarowany! – ProgramsUnlimited

6

Jest wiele czynników związanych z dokonaniem wyboru. Pierwszą rzeczą, o którą chciałbym zapytać, jest to, co wiesz? Jeśli odpowiedź brzmi "Utrzymanie dotychczasowego systemu", to w gruncie rzeczy zaczynasz od zera, jeśli chodzi o znajomość nowych technologii.

Po pierwsze, chcę wyjaśnić, co postrzegam jako błędne w oryginalnym pytanie:

patrzymy na Silverlight, Flex i Ruby

  • Silverlight jest technologia klienta, zasadniczo środowisko uruchomieniowe.
  • Flex to nazwa SDK używana do tworzenia aplikacji dla platformy Adobe Flash Adobe Flash .
  • Ruby to język programowania .

Wygląda na to, że badasz wiele różnych technologii zaprojektowanych do bardzo różnych celów. Nie będą porównywać bardzo dobrze.

Bardziej bezpośrednim porównaniem byłoby porównanie Silverlight z Flash Player do HTML/JavaScript. Lub porównać MXML Flexa z XAML .NET. Ruby, o ile mi wiadomo, jest głównie używana po stronie serwera, często z interfejsem HTML i JavaScript jako interfejsem. Jeśli Twoje rozwiązanie front-end jest wymagane do interakcji z usługami sieci .NET i ColdFusion, nie jestem pewien, dlaczego włączysz technologię trzecią po stronie serwera.

To powiedziawszy, zalecam używanie Flex/The Flash Payer jako technologii front end i ColdFusion jako technologii po stronie serwera. Jest jeden powód, dla którego polecam to i to dlatego, że to jest to, co wiem. Mam nadzieję, że ktoś bardziej kompetentny na platformie .NET/Silverlight/Ruby będzie mógł głosować na temat korzyści każdego z nich.

będę rozpatrywać bardziej w swoich punktach, jeden po drugim:

Sourced by a company or user community that is robust enough to be 

dookoła przez najbliższe 5-7 lat (jesteśmy realiści na ten temat).

Oczekuję, że Silverlight, Flash Platform i Ruby będą żywe i będą kopać przez następną dekadę.

Flash Platform, a konkretnie Flex, ma żywą społeczność. Wierzę, że jedną z najlepszych rzeczy, jakie robi Adobe, jest wspieranie społeczności programistów wokół ich platformy i narzędzi.

Flex jest wciąż nowy i rośnie, ale w ciągu ostatnich kilku lat odnotował ogromny wzrost. Chociaż Adobe jest mocno pomylony co do liczby programistów, większość szacunków widzę w przedziale między 250K-350K, czyli ponad dwukrotnie więcej niż 3 lata temu. Istnieje podcasts, dużo blogs, więcej frameworków niż możesz wstrząsnąć patykiem (RobotLEgs jest bieżącym Ulubione), mnóstwo konferencji (My Favorite to 360|Flex) i lots of open source projects.

ColdFusion ma ponad 10 lat, jest w tej chwili w to 9-cia wersja i ma ogromną społeczność rozwija list adresowych (takich jak House of Fusion i forach Adobe), mnóstwo podcastów (takich jak CFHour i cfconvesations), blogs, książki, frameworki (takie jak Fusebox, Model Glue i Mach-II), open source projects i conferences.

Niektórzy mówią, że trudno jest znaleźć programistów ColdFusion, a to niekiedy prawda, ponieważ społeczność jest stosunkowo niewielka w porównaniu do .NET. Ostatnim razem, gdy zobaczyłem dane szacunkowe, oszacowali oni 750 tys. Programistów na całym świecie. Możesz mieć podobne problemy z programistami Flex. Wygląda jednak na to, że masz już zespół, który chcesz szkolić, więc może nie szukasz nowych pracowników, a to nie będzie problemem.

Na całym świecie jest także wiele grup użytkowników Adobe. Zapraszam do zatrzymania się przez jednego i/lub zapytam kierownika grupy o wybraną technologię. Większość grup, o których wiem, to Flex lub ColdFusion.

Dodam, że platformy ColdFusion i Flex/Flash pochodzą od Adobe, a Adobe dołożyło wszelkich starań, aby zapewnić ich dobrą współpracę. Uważam, że ich integracja jest niezrównana.

Wszystko to powiedziawszy, .NET ma również dużą firmę wspierającą i większą bazę programistyczną niż ColdFusion i/lub Flex. Uważam, że istnieje większe prawdopodobieństwo znalezienia obsługiwanych komercyjnych rozwiązań w świecie .NET niż w przestrzeni Flex lub ColdFusion; ale nie może mówić z osobistego doświadczenia.

Nie sądziłem, że Ruby ma firmę, ale zrozumiałem, że ma bardzo żywą społeczność. Możesz łatwo użyć Ruby do zbudowania backendu do aplikacji Flash Platform lub Silverlight.

Able to quickly interface to use stored procedures from Oracle and web 

usługi wytwarzane w ASP.NET i ColdFusion jako źródła danych.

Wspomniał Pan o możliwości zastąpienia Oracle. Polecam przeciw temu. Wygląda na to, że masz dużo pracy do wykonania. Jeśli możesz przejść tylko zmieniając jedną "warstwę" swojej aplikacji na raz, zrób to.

ColdFusion może szybko i łatwo uzyskać dostęp do danych w Oracle przy użyciu procedur składowanych lub bezpośrednich zapytań. Nie mam wątpliwości, że .NET może zrobić to samo. [i zakładam, że Ruby też nie powinien mieć z tym problemu].

Silverlight i Flash Player (Flex) są zaprojektowane jako technologie front end i nie polecam próby uzyskania dostępu do bazy danych bezpośrednio z nich. Większość aplikacji, które widziałem, używa warstwy pośredniej (takiej jak ColdFusion lub .NET) do dostępu do baz danych, a następnie Flash będzie miał dostęp tylko do tej warstwy środkowej. W architekturze usługi widoku kontrolera modelu często można wdrożyć model jako pamięć bazy danych (Oracle), usługi w oprogramowaniu pośrednim (ColdFusion/.NET) oraz widok w technologii front end (Flash Player/Flex lub Silverlight lub HTML/AJAX). Kontroler w aplikacji Flex/Flash najprawdopodobniej zostanie utworzony w technologii Flash/Flex. Zakładam, że Silverlight jest podobny.

Korzystając z ColdFusion, będziesz używał cfstoredproc do uzyskiwania dostępu do procedur składowanych lub cfquery do uruchamiania kwerend bezpośrednio do bazy danych. Wstawiasz te zapytania do usługi, a następnie z Flex/Flash Playera uzyskasz dostęp do tych danych za pomocą RemoteObjects (który jest zalecanym przez AMF protokołem) lub WebService (dla wywołań SOAP) lub HTTPService (dla wywołań REST). AMF jest formatem binarnym, który może prowadzić do znacznie szybszego transferu danych między klientem a serwerem. IT automatycznie przetłumaczy obiekty po stronie serwera na obiekty po stronie klienta i na odwrót. To bardzo miłe akcentowanie i uniemożliwia pisanie własnych procedur konwersji.

Deployable on virtualized clients as well as thick client 

maszyny Windows i Apple.

Chyba nie jestem pewien, co rozumiesz przez zwirtualizowanych klientów w porównaniu z grubymi klientami.

Flash Player i środowisko AIR są łatwo wdrażane zarówno w systemach Windows, jak i na komputerach Mac. Adobe robi dużo pracy, aby przygotować się na falę urządzeń mobilnych, jeśli jest to dla ciebie ważne. Nawet pomimo argumentów Adobe/Apple zeszłego roku, Adobe ma pakiet do wdrożenia na urządzeniach z iOS. Jest na wczesnym etapie, ale spodziewam się, że w pierwszej połowie tego roku pojawią się poważne aktualizacje.

Adobe zostało skrytykowane pod względem wydajności na komputerach Macintosh i wynika to z różnych przyczyn. Ale rzeczy stale się poprawiają.

Wiem, że Silverlight ma wsparcie dla komputerów Mac, ale nie wiem w jakim stopniu. Nie spodziewam się, że zobaczę Silverlight na urządzeniach mobilnych poza systemem Windows Phone.

Jeśli chodzi o Ruby, prawdopodobnie nie chciałbyś wdrożyć Ruby na komputerze stacjonarnym w jakiejkolwiek formie. Ale możesz stworzyć AJAX/HTML, który działa z wybraną przeglądarką (i/lub użyć frameworka AJAX, który zajmuje się problemami ze zgodnością przeglądarki). W obecnej sytuacji HTML/AJAX będzie prawdopodobnie najlepszym rozwiązaniem do wdrażania urządzeń mobilnych, ponieważ większość przeglądarek mobilnych opiera się na pakiecie Webkit, dlatego często występuje wysoki poziom spójności w stosowaniu aplikacji HTML na urządzeniach. Takie podejście najprawdopodobniej zapewni lepszą wydajność niż używanie Flasha [lub Silverlight] na wspomnianym urządzeniu.

Extra points if there is some way to reuse the old Delphi code (but 

ponownie, jesteśmy realistami, więc nie spodziewasz to nastąpi).

Nie mogę ci tu pomóc. Najlepiej jest albo ponownie utworzyć od zera, albo spróbować napisać jakąś formę narzędzia do konwersji/generatora kodu. Nie jestem pewien, czy to drugie jest praktyczne. Jeśli zamienisz kod Delphi na obiekty COM, jak zasugerowano gdzie indziej, mogą one być używane z ColdFusion podobnie jak mogą być używane z .NET.

Czy to pomaga? Co jeszcze chciałbyś wiedzieć?

+0

Fantastyczna, głęboka odpowiedź. Bardzo dziękuję za edukację. Zrobiliśmy pracę zarówno w ASP.NET, jak i ColdFusion. Większość naszych aplikacji na komputer (z wyjątkiem systemu Delphi) jest napisana w języku C# lub Java. Myślę, że spróbujemy zbudować program testowy z Flex i Silverlight jako front end, aby zobaczyć, jak trudne będą krzywe uczenia się. Jeszcze raz dziękuję ... Nie zastanawiałem się nad ścisłą integracją, którą Adobe mógł posiadać zarówno CF, jak i Flex. – ProgramsUnlimited

+0

@ProgramsUnlimited Cieszę się, że mogę Ci pomóc. Jeśli weźmiesz pod uwagę wspólne używanie technologii .NET i Flex, zdecydowanie sugeruję, abyś spojrzał na bramkę .NET AMF. WebORB jest jedną z opcji. FlourineFX to kolejna. Brama AMF jest wbudowana bezpośrednio w CF, więc nie potrzebujesz do tego zewnętrznego rozwiązania. Chciałbym usłyszeć o wynikach testów Flex i Silverlight, więc jeśli jest coś, co możesz publicznie udostępnić, koniecznie wróć i poinformuj nas o swoich lekcjach. – JeffryHouser

3

bym albo trzymać się z Delphi (ale zmodernizować kod do najnowszej wersji + ram), gdybym naprawdę chciał recyklingu kod, albo pójdę Big Bang całą drogę z C#/ASP.NET

Jeśli aplikacja potrzebowałaby znowu klientów, skłaniałbym się ku Delphi. Gdybym był tylko w sieci, skłaniałbym się ku C#.

Może Java zamiast C#, ale tylko jeśli pracujesz w dużej korporacji i już z niej korzysta.

2

Dodatkowe punkty, jeśli istnieje jakiś sposób, aby ponownego użycia starego kodu Delphi

tam zawsze Intraweb (aka VCL for the Web). Możesz użyć bezpośrednio swojego starego kodu.

pochodzące od przedsiębiorstwa, czy dla społeczności które jest wystarczająco wytrzymałe, aby być ok dla następnych 5-7 lat (jesteśmy realistami na tym).

Nie powinien to być problem.

stanie szybko interfejs do korzystania z procedur przechowywanych Oracle i internetowych usług wyprodukowanych w ASP.NET i ColdFusion jako źródła danych.

Delphi Enterprise and Architect zapewnia wsparcie dla Oracle z pudełka, a wszystkie wersje są w stanie korzystać z usług internetowych. Dostępne są również rozwiązania innych firm.

Deployable na klientów zwirtualizowanych jako także gruby klienckich Windows i Apple maszyn.

Grubi klienci Apple są obecnie poza zakresem. "Project Pulsar" na roadmap obiecuje wsparcie dla Mac OS X.

Powiązane problemy