Meningkatkan produktivitas pengembang dengan platform ArcGIS?

20

Kami adalah tim kecil pengembang .NET. Kami memiliki pengalaman GIS yang luas, dan tidak ada di antara kami yang baru dalam pengembangan perangkat lunak / basis data atau administrasi sistem. Kami memiliki gelar teknis dan pengalaman industri selama bertahun-tahun. Kami telah menghadiri KTT Pengembang Esri.

Teknologi Esri - terutama ArcGIS Server, ArcSDE, dan ArcObjects - memainkan peran kecil tetapi perlu dalam semua perangkat lunak yang kami kembangkan. Terlepas dari status minoritas ESRI dalam tumpukan teknologi kami, kami menghabiskan banyak waktu mengatasi masalah bug yang sulit dipahami, menyusun solusi, menguraikan pesan kesalahan yang tidak jelas, melacak masalah kinerja, dan melacak proses daur ulang.

Biasanya masalah kami berasal dari bug asli, penanganan pengecualian yang buruk, keputusan desain / arsitektur yang terbatas, kurangnya dokumentasi, ketidakstabilan, atau beberapa kombinasi darinya. (Saya berbicara tentang tumpukan ESRI di sini.)

Dari sudut pandang manajer proyek, saya sangat memperhatikan produktivitas tim. Ini menghabiskan banyak waktu bagi kita. Kami tidak punya waktu untuk mempelajari setiap keanehan tumpukan ESRI, tetapi kami masih harus menyelesaikannya. (Tidak bisa hidup dengan itu, tidak bisa hidup tanpanya.)

Apa saran pragmatis yang Anda miliki untuk meningkatkan produktivitas pengembang dengan ESRI dalam campuran?

Saya tidak mencari saran tentang tumpukan teknologi alternatif.

nw1
sumber
2
Apakah Anda keberatan menanyakan alasan di balik penggunaan produk ESRI dalam perangkat lunak Anda?
OptimizePrime
Pengembang merespons dengan baik jika Anda mengancam untuk mengabaikan mereka untuk setiap bug yang Anda temukan. Pada catatan yang lebih serius: komentar Anda berikut adalah normal saat menggunakan produk ESRI. <blockquote> Kami menghabiskan banyak waktu untuk mengatasi masalah bug yang sulit dipahami, menyusun solusi, menguraikan pesan kesalahan yang tidak jelas, melacak masalah kinerja, dan proses daur ulang. </blockquote>
CaptDragon
@capdragon "Kami menghabiskan banyak waktu untuk mengatasi masalah bug yang sulit dipahami, menyusun solusi, menguraikan pesan kesalahan yang tidak jelas, melacak masalah kinerja, dan proses daur ulang" - yang berlaku untuk hampir semua pengembangan dan pemasangan perangkat lunak ..
geografi
1
@geographika - Kata kuncinya adalah "inordinate" - relatif terhadap semua teknologi lain yang bekerja dengan kami.
nw1
1
Saya akan meminta para dev Anda untuk menonton The Last Lecture , dengan perhatian pada konsep "dinding bata" ... Dinding bata tidak ada di sana untuk membuat kita keluar. Dinding bata ada untuk memberi kita kesempatan untuk menunjukkan betapa kita menginginkan sesuatu. Karena tembok bata ada untuk menghentikan orang-orang yang tidak menginginkannya dengan buruk.
Kirk Kuykendall

Jawaban:

10

Untuk kinerja, tampaknya solusi terbaik adalah dengan menulis kode proxy C ++ ke ArcObjects seperti yang disebutkan dalam artikel ini . Dalam contoh ESRI memberikan penghapusan penggunaan interop COM berat memberikan peningkatan kinerja 6x.

ESRI juga memberikan saran / praktik terbaik dalam menangani pesan kesalahan COM samar - dan penjelasan tentang kode kesalahan HRESULT .

Di luar ini banyak masalah konfigurasi terkait Windows, dan pengetahuan yang baik tentang manajemen server Windows, IIS, layanan Windows, log peristiwa Windows, registri, objek COM terdaftar dll. Semuanya membantu.

Selain artikel-artikel ini, ada sejumlah pendekatan pengembangan yang lebih umum yang mungkin bermanfaat bagi Anda.

Pendekatan Pengembangan Perangkat Lunak

  • Gunakan layanan web sebanyak mungkin, untuk kedua data geografis (layanan WMS, WFS, ArcGIS REST). Pemisahan ini membuat segalanya lebih mudah untuk di-debug dan dirawat.
  • Jika memungkinkan, instal sistem untuk membersihkan instalasi Windows. Buat skrip instalasi sehingga Anda dapat membuat ulang seluruh sistem dari awal tanpa harus bergantung pada memori dan proses manual. Mesin virtual sempurna untuk ini.
  • Sebisa mungkin tetap bersih. NET dan DLL dengan kode spesifik ESRI terpisah
  • Anda dapat mulai mencoba melakukan lebih banyak "pengangkatan / pemrosesan berat" dalam database misalnya langsung di SQL Server 2008 dengan kelas Geometri dan Geografi baru

Komunikasi

  • Posting bug yang sulit dipahami ke GIS SE / StackOverflow, dan jika Anda menemukan solusi mempostingnya juga, saya telah menemukan jawaban sebelumnya saya telah menulis sendiri saat mencari bug yang sama saya benar-benar lupa sekitar 6 bulan kemudian ..
  • Menyimpan catatan, dan idealnya memungkinkan mereka dapat dicari oleh orang lain di tim. Saya sudah mencoba wiki, tetapi kurangnya menempelkan gambar sudah cukup menjadi rintangan untuk menghentikan saya melakukannya secara teratur. Saat ini saya menggunakan Microsoft OneNote yang sempurna untuk melacak kesalahan, URL, tangkapan layar. Itu dapat dibagikan juga.
  • Untuk pendekatan teknis yang lebih rinci, kirimkan ke blog. Tampaknya ada jauh lebih sedikit berbagi rincian di dunia ESRI, mungkin karena takut orang lain mengambil keuntungan komersial, namun blog yang layak adalah iklan yang bagus untuk layanan perusahaan Anda
geografi
sumber
Apakah -1 untuk jawabannya, atau memiliki keberanian untuk menyebutkan bahwa mengembangkan dan mengkonfigurasi OSS GIS tidak persis tanpa kesulitan yang sama ?!
geografi
7

Saya khawatir tidak banyak jawaban bagus akan datang dari pertanyaan ini. Tapi itu bagus ... kinerja produk ESRI telah menjadi perhatian saya selama beberapa waktu.

Komentar saya di atas menanyakan kebutuhan akan produk ESRI atau dapatkah Anda bermigrasi ke tumpukan teknologi yang berbeda. Jika Anda mengembangkan dengan produk ESRI untuk diintegrasikan dengan sistem ESRI untuk menarik bagi pengguna ESRI, maka Anda terjebak dengan basis kode ESRI yang telah diangkut atau didistorsi agar sesuai dengan pengembangan modern dan platform pengguna.

Seseorang dari ESRI tolong perbaiki saya jika saya salah. Sebagian besar .NET librari ESRI adalah pembungkus untuk objek COM, di mana ada overhead untuk mengakses dan menawarkan ambigu pada laporan kesalahan terbaik dan penanganannya. Memahami objek COM yang mendasarinya dan keterlibatan mereka dalam basis kode Anda akan membantu Anda merancang kode Anda lebih baik sesuai dengan operasi mereka. Fakta yang satu ini membantu saya meningkatkan kinerja skrip Python 10 kali lipat. Apa yang dulu memakan waktu 40 menit sekarang membutuhkan 4 dan dengan sedikit penyesuaian sekarang turun menjadi 2,5 menit!

Saya sudah mendengar hal-hal baik dengan ArcGIS 10, tetapi jangan menahan nafas.

Jika Anda menggunakan produk ESRI untuk memberikan solusi GIS dalam perangkat lunak Anda, maka pasangi salah satu dari banyak proyek open source yang ditawarkan dan dibangun dari sana. @capdragon menawarkan satu set aplikasi seperti itu yang akan memberi Anda sejumlah besar fleksibilitas dan skalabilitas dengan tim dukungan pengembang yang berpikiran sama di cloud untuk membantu Anda.

Pengembangan dengan produk-produk ESRI adalah permainan pola pikir dengan ambiguitas, peretasan yang tidak jelas dan ketidakkonsistenan para pemain utama jika Anda mencoba melakukan sesuatu yang inovatif dan di luar Prosedur Operasi Standar ESRI.

Saya ingin seseorang membuktikan saya salah!

OptimizePrime
sumber
Untuk menjawab pertanyaan Anda, kami cukup banyak terjebak dengannya karena terlalu banyak alasan untuk dicantumkan.
nw1
ArcObjects .NET SDK hampir seluruhnya merupakan pembungkus calliable runtime untuk COM yang mendasarinya. The Silverlight / WPF SDK tidak berbasis COM.
James Schek
@ James - Perbaiki saya jika saya salah, tetapi bukankah Silverlight SDK hanya klien API REST? Dan bukankah REST API dibangun di atas ArcObjects?
nw1
@OptimizePrime - ArcGIS 10 membuat langkah besar di banyak bidang yang Anda sebutkan dan apa yang telah mereka umumkan untuk 10.1 bahkan lebih dari itu. Mereka benar-benar menjatuhkan dukungan DCOM di 10.1.
wilbev
1
@welbev Terima kasih banyak atas info ini. ESRI perlu waktu untuk mengambil langkah maju dalam hal ini, tetapi menyenangkan mendengar mereka mengatasi masalah ini.
OptimizePrime
7

Dalam pengalaman saya bekerja dengan ESRI, semakin jauh Anda bisa menjauh dari ArcObjects, semakin besar kemungkinan Anda untuk sukses. Secara praktis, itu berarti jika Anda dapat menggunakan REST API yang lebih baru untuk melakukan apa yang Anda lakukan, Anda harus selalu mengakses ArcGIS seperti itu.

Mereka tampaknya telah belajar sesuatu dari kegagalan total yang ada pada Web ADF di Java / .net, dan API REST jauh lebih sederhana dan memiliki rekam jejak yang hebat hanya dengan bekerja tanpa banyak keributan. Cara paling sederhana untuk mengakses REST API adalah jika Anda melakukan pekerjaan dalam Javascript / Flex / Silverlight karena ESRI menyediakan pustaka bagi mereka yang cukup bagus, tetapi itu hanya antarmuka REST standar dan Anda dapat berbicara dengannya dengan hampir apa saja.

Ada hal-hal yang tidak bisa Anda lakukan dengan cara itu, tapi saya tidak bisa cukup menekankan betapa lebih baiknya bekerja dengan hampir semua hal lain di tumpukan ESRI. Ketika Anda harus bekerja dengan ArcObjects (atau ArcObjects .net dibungkus), yang dapat Anda lakukan adalah membuat dokumentasi yang sangat baik dalam kode Anda dan berdoa agar mereka tidak memecahkan barang-barang di tambalan berikutnya (yang mungkin akan mereka ketahui, mengetahuinya) ).

Tridus
sumber
6

Perbarui pemeliharaan dukungan Anda. Satu-satunya hal yang lebih membuat frustrasi daripada mencoba mencari tahu masalah kode adalah mencoba mengatasinya tanpa bantuan dari orang-orang yang menulis kode. Dan Anda tidak akan menerima bantuan apa pun dari ESRI jika Anda tidak memiliki perjanjian pemeliharaan dengan mereka. (Anda mungkin mendapatkan bantuan dari situs ini atau forum ESRI, tetapi itu jauh dari berbicara langsung dengan mereka.)

Tetap di atas paket layanan dan tambalan. Anda tidak dijamin untuk memiliki tidak ada masalah jika Anda melakukannya, tetapi Anda dapat dengan aman menjawab, "Ya," ketika ditanya oleh dukungan jika Anda memiliki versi terbaru / update diinstal.

Kontribusikan penyelesaian masalah Anda ke komunitas (blog, pertanyaan di sini, dll.). Jika cukup banyak orang melakukan itu, saya membayangkan dua hal akan terjadi: satu, lebih banyak pengembang akan menyadari masalah ini dan akan memiliki kesempatan berjuang untuk membasmi mereka lebih cepat dan dua, masalah akan diperbaiki lebih cepat oleh ESRI (tidak seperti pembesar kaca untuk membuat semut bergerak, kan?).

Michael Todd
sumber
4

Saya juga pengembang ESRI yang terus-menerus berkelahi dengan produk ini setiap hari. Saya tidak memiliki dukungan pemeliharaan, jadi saya tidak mendapatkan banyak umpan balik dari pengembang.

Ini benar-benar sangat frustasi ketika sesuatu "Hanya Tidak Bekerja" (berbeda dengan IJW - Itu Hanya Bekerja), tidak peduli seberapa keras Anda mencoba.

Apa yang saya lakukan untuk memenangkan pertarungan:

  • Ajukan pertanyaan (banyak)
  • Baca referensi ArcObjects SDK (berulang - ulang)
  • Lakukan percobaan dengan berbagai pengaturan

Jalur terpendek ke hasil adalah meminta seseorang yang memiliki masalah yang sama, jadi, jika seseorang mendapat masalah itu dan menemukan perbaikan, mereka kemungkinan besar akan memberi tahu Anda.

Dokumentasinya bagus, tetapi tidak memiliki deskripsi elemen kunci dan detail penting - jadi, kembali ke 1.

Eksperimen juga berhasil. Buat program konsol dan uji pergi. Kerangka kerja Unit Testing dapat membantu Anda melakukan segalanya di dalam IDE, tetapi menguji skenario yang berbeda.

Bugriest atau paling aneh dari perpustakaan ESRI adalah Geodatabase dan dapat memberikan hasil yang aneh, tergantung pada kondisinya, jadi cobalah untuk menguasainya.

George Silva
sumber
1

Coba gunakan PostGIS> GeoServer> OpenLayers. Lihat cara kerjanya untuk tim Anda.

CaptDragon
sumber