Zwiększasz produktywność programistów dzięki platformie ArcGIS?

20

Jesteśmy małym zespołem programistów .NET. Mamy duże doświadczenie w GIS i żaden z nas nie jest nowy w tworzeniu oprogramowania / baz danych ani administrowaniu systemem. Posiadamy stopnie techniczne i wieloletnie doświadczenie branżowe. Uczestniczyliśmy w szczytach programistów Esri.

Technologia Esri - przede wszystkim ArcGIS Server, ArcSDE i ArcObjects - odgrywa niewielką, ale niezbędną rolę w całym naszym oprogramowaniu. Pomimo statusu mniejszościowego ESRI w naszym stosie technologii, spędzamy nadmiernie dużo czasu na rozwiązywaniu nieuchwytnych błędów, opracowywaniu obejść, rozszyfrowaniu niejasnych komunikatów o błędach, śledzeniu problemów z wydajnością i procesach recyklingu.

Zazwyczaj nasze problemy wynikają z autentycznych błędów, złej obsługi wyjątków, ograniczania decyzji projektowych / architektonicznych, braku dokumentacji, niestabilności lub ich kombinacji. (Mówię tutaj o stosie ESRI.)

Z perspektywy kierownika projektu bardzo martwię się o produktywność zespołu. To kosztuje nas dużo czasu. Nie mamy czasu, aby poznać każdą specyfikę stosu ESRI, ale wciąż musimy załatwić sprawę. (Nie mogę z tym żyć, nie mogę bez niego żyć.)

Jakie masz pragmatyczne sugestie dotyczące zwiększenia wydajności programistów dzięki ESRI w mieszance?

Nie szukam sugestii na temat alternatywnych stosów technologii.

nw1
źródło
2
Czy możesz zapytać o powód używania produktów ESRI w swoim oprogramowaniu?
OptimizePrime
Programiści reagują dobrze, jeśli grozisz, że zlekceważysz je za każdy znaleziony błąd. Mówiąc poważniej: poniższy komentarz jest normalny podczas korzystania z produktów ESRI. <blockquote> Spędzamy nadmiernie dużo czasu na rozwiązywaniu nieuchwytnych błędów, opracowywaniu obejść, rozszyfrowywaniu niejasnych komunikatów o błędach, śledzeniu problemów z wydajnością i procesach recyklingu. </blockquote>
CaptDragon
@cdrdragon „Spędzamy nadmiernie dużo czasu na rozwiązywaniu nieuchwytnych błędów, opracowywaniu obejść, rozszyfrowywaniu mglistych komunikatów o błędach, śledzeniu problemów z wydajnością i procesach recyklingu” - dotyczy to prawie całego rozwoju oprogramowania i instalacji.
geographika
1
@geographika - Słowo kluczowe to „niewspółmierne” - w stosunku do wszystkich innych technologii, z którymi współpracujemy.
nw1
1
Chciałbym, aby Twoi twórcy oglądali Ostatni wykład , zwracając uwagę na koncepcję „ceglanych ścian” ... Ceglane ściany nie są tam, aby nas trzymać z daleka. Ceglane ściany mają nam pokazać, jak bardzo czegoś chcemy. Ponieważ ceglane ściany są po to, aby powstrzymać ludzi, którzy nie chcą tego wystarczająco mocno.
Kirk Kuykendall

Odpowiedzi:

10

Dla wydajności wydaje się, że najlepszym rozwiązaniem jest napisanie kodu proxy C ++ do ArcObjects, jak wspomniano w tym artykule . W tym przykładzie ESRI daje usunięcie intensywnego użycia interfejsu COM daje 6-krotny wzrost wydajności.

ESRI przekazuje również sugestie / najlepsze praktyki dotyczące obsługi tajemniczych komunikatów o błędach COM - oraz wyjaśnienie kodów błędów HRESULT .

Poza tymi większymi problemami z konfiguracją są związane z systemem Windows, więc dobra znajomość zarządzania serwerami Windows, IIS, usług Windows, dzienników zdarzeń Windows, rejestru, zarejestrowanych obiektów COM itp.

Oprócz tych artykułów istnieje szereg bardziej ogólnych podejść do programowania, które mogą okazać się przydatne.

Podejścia programistyczne

  • Korzystaj z usług internetowych w jak największym stopniu, zarówno w przypadku danych geograficznych (usługi WMS, WFS, ArcGIS REST). Ta separacja ułatwia debugowanie i utrzymanie.
  • Tam, gdzie to możliwe, zainstaluj systemy w celu wyczyszczenia instalacji Windows. Utwórz skrypty instalacyjne, aby odtworzyć cały system od zera, bez konieczności polegania na pamięci i ręcznych procesach. Maszyny wirtualne są do tego idealne.
  • W miarę możliwości trzymaj czyste .NET i biblioteki DLL z osobnym kodem ESRI
  • Możesz zacząć próbować wykonywać więcej „ciężkich operacji podnoszenia / przetwarzania” w bazie danych, np. Bezpośrednio w SQL Server 2008 dzięki nowym klasom geometrii i geografii

Komunikacja

  • Opublikuj nieuchwytne błędy w GIS SE / StackOverflow, a jeśli znajdziesz rozwiązania, które je opublikują, znalazłem poprzednie odpowiedzi, które sam napisałem, szukając tego samego błędu, który całkowicie zapomniałem około 6 miesięcy później ..
  • Rób notatki i najlepiej pozwól, aby były one dostępne do przeszukiwania dla innych członków zespołu. Próbowałem wiki, ale brak wklejania zdjęć był wystarczającą przeszkodą, aby powstrzymać mnie od robienia tego regularnie. Obecnie używam Microsoft OneNote, który jest idealny do śledzenia błędów, adresów URL, zrzutów ekranu. Można go również udostępnić.
  • Aby uzyskać bardziej szczegółowe podejścia techniczne, opublikuj je na blogu. Wydaje się, że dzielenie się szczegółami w świecie ESRI jest znacznie mniejsze, być może z powodu obawy, że inni skorzystają z komercyjnej przewagi, ale przyzwoity blog jest dobrą reklamą dla usług Twojej firmy
geografia
źródło
Czy -1 dla odpowiedzi, czy też zuchwałość, by wspomnieć, że opracowanie i konfiguracja GIS OSS nie jest bez tych samych trudności?
geographika
7

Obawiam się, że z tego pytania nie przyjdzie wiele dobrych odpowiedzi. Ale jest dobra ... wydajność produktów ESRI była moim problemem od pewnego czasu.

Mój komentarz powyżej dotyczy zapytania o produkty ESRI lub czy możesz przenieść się na inny stos technologii. Jeśli pracujesz z produktami ESRI w celu integracji z systemami ESRI, aby spodobać się użytkownikom ESRI, utkniesz z bazą kodu ESRI, która została przeniesiona lub zniekształcona, aby pasowała do nowoczesnych platform programistycznych i użytkowników.

Ktoś z ESRI, proszę, popraw mnie, jeśli się mylę. Większość bibliotek .NET ESRI to opakowania do obiektów COM, do których istnieją koszty ogólne związane z dostępem i oferowaniem niejednoznacznych raportów o błędach i obsługi. Zrozumienie podstawowych obiektów COM i ich zaangażowania w bazę kodu pomoże ci lepiej zaprojektować kod, aby pasował do ich działania. Ten jeden fakt pomógł mi 10-krotnie zwiększyć wydajność w moich skryptach Python. To, co kiedyś trwało 40 minut, teraz zajmuje 4, a przy niewielkim ulepszeniu jest teraz ograniczone do 2,5 minuty!

Słyszałem dobre rzeczy z ArcGIS 10, ale nie wstrzymuj oddechu.

Jeśli używasz produktów ESRI do zapewnienia rozwiązania GIS w swoim oprogramowaniu, skorzystaj z jednego z wielu dostępnych projektów open source i stamtąd stwórz. @capdragon oferuje jeden taki zestaw aplikacji, który zapewni dużą elastyczność i skalowalność wraz z zespołem pomocy technicznej o podobnych poglądach programistów w chmurze.

Opracowywanie produktów ESRI to gra polegająca na dwuznaczności, niejasnych hackach i niekonsekwencji głównych graczy, jeśli próbujesz zrobić coś innowacyjnego poza standardową procedurą operacyjną ESRI.

Chcę, żeby ktoś udowodnił, że się mylę!

OptimizePrime
źródło
Aby odpowiedzieć na twoje pytanie, utknęliśmy w nim z zbyt wielu powodów, by je wymienić.
nw1
Zestaw ArcObjects .NET SDK jest prawie całkowicie owijalnym środowiskiem wykonawczym dla bazowego modelu COM. Zestaw SDK Silverlight / WPF nie jest oparty na modelu COM.
James Schek
@James - Popraw mnie, jeśli się mylę, ale czy pakiet Silverlight SDK nie jest tylko klientem interfejsu API REST? I czy interfejs API REST nie jest zbudowany na ArcObjects?
nw1
@OptimizePrime - ArcGIS 10 poczynił ogromne postępy w wielu obszarach, o których wspomniałeś, i to, co zapowiedzieli dla 10.1, nawet daleko poza tym. Całkowicie rezygnują z obsługi DCOM w 10.1.
wilbev
1
@welbev Dziękuję bardzo za te informacje. Zajęło temu trochę czasu, zanim ESRI zajęła pierwsze miejsce, ale miło jest usłyszeć, że zajmują się tymi obawami.
OptimizePrime
7

Z mojego doświadczenia w pracy z ESRI, im dalej możesz uciec od ArcObjects, tym większe prawdopodobieństwo, że odniesiesz sukces. W praktyce oznacza to, że jeśli możesz używać nowszych interfejsów API REST do robienia tego, co robisz, zawsze powinieneś uzyskiwać dostęp do ArcGIS w ten sposób.

Wydaje się, że nauczyli się czegoś od całkowitej awarii, jaką był Web ADF w Javie / .net, a interfejsy API REST są znacznie uproszczone i mają stosunkowo dobre wyniki po prostu działając bez większego zamieszania. Najprostszym sposobem na uzyskanie dostępu do interfejsu API REST jest praca w Javascript / Flex / Silverlight, ponieważ ESRI zapewnia biblioteki dla tych, które są całkiem dobre, ale jest to tylko standardowy interfejs REST i można z nim porozmawiać z prawie wszystkim.

Są rzeczy, których nie możesz zrobić w ten sposób, ale nie mogę wystarczająco podkreślić, o ile ładniej jest pracować z prawie wszystkimi innymi elementami stosu ESRI. Kiedy musisz pracować z ArcObjects (lub ArcObjects owiniętymi .net), wszystko, co naprawdę możesz zrobić, to stworzyć wyjątkowo dobrą dokumentację w swoim kodzie i modlić się, aby nie uszkodziły rzeczy w następnej łatce (co prawdopodobnie zrobią, znając je ).

Tridus
źródło
6

Aktualizuj swoje wsparcie techniczne. Jedyną rzeczą bardziej frustrującą niż próba znalezienia problemu z kodem jest próba znalezienia go bez pomocy osób, które napisały kod. I nie otrzymasz żadnej pomocy od ESRI, jeśli nie masz z nimi umowy alimentacyjnej. (Możesz uzyskać pomoc z tej witryny lub forów ESRI, ale dalece nie jest to możliwe, aby rozmawiać bezpośrednio z nimi.)

Bądź na bieżąco z dodatkami Service Pack i łatkami. W takim przypadku nie masz żadnych problemów, ale możesz bezpiecznie odpowiedzieć „Tak”, gdy zostaniesz poproszony przez obsługę o zainstalowanie najnowszej wersji / aktualizacji.

Przekaż swoje obejścia społeczności (blogi, pytania tutaj itp.). Gdyby zrobiło to wystarczająca liczba osób, wyobrażam sobie, że wydarzyłyby się dwie rzeczy: jedna, większa liczba programistów byłaby świadoma problemów i miałaby szansę walki, by usunąć je szybciej, a dwie, problemy zostałyby naprawione szybciej przez ESRI (nic takiego jak powiększenie szkło, żeby mrówki się poruszyły, prawda?).

Michael Todd
źródło
4

Jestem także programistą ESRI, który codziennie walczy z tym produktem. Nie mam wsparcia serwisowego, więc nie otrzymuję zbyt wiele opinii od programistów.

To naprawdę naprawdę frustrujące, gdy coś „Po prostu nie działa” (w przeciwieństwie do IJW - to po prostu działa), bez względu na to, jak bardzo się starasz.

Co staram się wygrać walkę:

  • Zadawaj pytania (dużo)
  • Przeczytaj referencję ArcObjects SDK (wiele razy w kółko)
  • Eksperymentuj z różnymi konfiguracjami

Najkrótszą drogą do wyniku jest zapytanie kogoś, kto już miał ten sam problem, więc jeśli ktoś wpadł w ten problem i znalazł rozwiązanie, najprawdopodobniej ci o tym powie.

Dokumentacja jest dobra, ale brakuje w niej kluczowych opisów elementów i ważnych szczegółów - wróć więc do 1.

Eksperymentowanie również działa. Utwórz program konsoli i przetestuj. Ramy testów jednostkowych mogą pomóc ci zrobić wszystko w środowisku IDE, ale przetestuj różne scenariusze.

Najgorszą lub najdziwniejszą biblioteką ESRI jest Geobaza i może dawać dziwne wyniki, w zależności od warunków, więc spróbuj ją opanować.

George Silva
źródło
1

Spróbuj użyć PostGIS> GeoServer> OpenLayers. Zobacz, jak to działa dla Twojego zespołu.

CaptDragon
źródło