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.
Odpowiedzi:
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
Komunikacja
źródło
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ę!
źródło
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 ).
źródło
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?).
źródło
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ę:
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ć.
źródło
Spróbuj użyć PostGIS> GeoServer> OpenLayers. Zobacz, jak to działa dla Twojego zespołu.
źródło