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.
Jawaban:
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
Komunikasi
sumber
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!
sumber
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) ).
sumber
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?).
sumber
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:
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.
sumber
Coba gunakan PostGIS> GeoServer> OpenLayers. Lihat cara kerjanya untuk tim Anda.
sumber