ArcGISプラットフォームで開発者の生産性を向上しますか?


20

私たちは.NET開発者の小さなチームです。GISの豊富な経験があり、ソフトウェア/データベースの開発やシステム管理の初心者は誰もいません。技術的な学位と長年の業界経験があります。Esri Developer Summitsに参加しました。

Esriのテクノロジー(主にArcGIS Server、ArcSDE、ArcObjects)は、開発するすべてのソフトウェアで小さいながらも必要な役割を果たします。テクノロジースタックにおけるESRIの少数派ステータスにもかかわらず、とらえにくいバグのトラブルシューティング、回避策の作成、あいまいなエラーメッセージの解読、パフォーマンスの問題の追跡、およびプロセスのリサイクルに膨大な時間を費やしています。

通常、私たちの問題は、本物のバグ、例外処理の不備、設計/アーキテクチャの決定の制限、ドキュメントの欠如、不安定性、またはそれらの組み合わせに起因します。(私はここでESRIスタックについて話している。)

プロジェクトマネージャーの観点から、チームの生産性が非常に心配です。これには時間がかかります。ESRIスタックのすべての特異性を学習する時間はありませんが、まだ物事を成し遂げる必要があります。(それなしでは生きられない、それなしでは生きられない。)

ESRIを組み合わせて開発者の生産性を向上させるための実用的な提案はありますか?

私は代替技術スタックに関する提案を探していません。


2
ソフトウェアでESRI製品を使用する理由を尋ねてもいいですか?
OptimizePrime

開発者は、発見したすべてのバグに対してあなたを脅かすと脅した場合によく反応します。より深刻な注意事項:ESRI製品を使用する場合、次のコメントは正常です。<blockquote>とらえどころのないバグのトラブルシューティング、回避策の作成、あいまいなエラーメッセージの解読、パフォーマンスの問題の追跡、およびプロセスのリサイクルに膨大な時間を費やしています。</
blockquote

@capdragon「我々は、パフォーマンス上の問題を追跡、あいまいなエラーメッセージを解読、回避策を作り上げる、とらえどころのないバグのトラブルシューティング時の法外な金額を費やし、そしてプロセスのリサイクル」 -ほとんどすべてのソフトウェア開発とインストールに適用されることに...
geographika

1
@geographika-キーワードは「並外れた」もので、他のすべてのテクノロジーと比較して。
nw1

1
「レンガの壁」の概念に注意しながら、最後の講義を視聴するように開発者に求めます。レンガの壁は私たちを締め出すためのものではありません。レンガの壁は、私たちがどれほどひどく欲しいかを示す機会を与えるためにあります。レンガの壁は、それを十分に望んでいない人々を止めるためにあります。
カーク

回答:


10

パフォーマンスについては、この記事で説明したように、C ++プロキシコードをArcObjectsに書き込むことが最善の解決策のようです。ESRIの例では、COM相互運用機能の頻繁な使用を削除すると、パフォーマンスが6倍になります。

ESRIは、暗号化されたCOMエラーメッセージの処理に関する提案/ベストプラクティスと、HRESULTエラーコードの説明も提供します

これらの設定に関する問題の多くはWindowsに関連しているため、Windowsサーバー管理、IIS、Windowsサービス、Windowsイベントログ、レジストリ、登録済みCOMオブジェクトなどに関する十分な知識はすべて役立ちます。

これらの記事に加えて、役に立つと思われるより一般的な開発アプローチがいくつかあります。

ソフトウェア開発アプローチ

  • 両方の地理データ(WMS、WFS、ArcGIS RESTサービス)に対して、可能な限りWebサービスを使用します。この分離により、デバッグと保守が容易になります。
  • 可能な場合は、Windowsインストールをクリーンにするためにシステムをインストールします。インストールスクリプトを作成して、メモリや手動プロセスに依存することなく、システム全体をゼロから再作成できるようにします。仮想マシンはこれに最適です。
  • ESRI固有のコードを含む純粋な.NETとDLLを可能な限り分離してください
  • 新しいGeometryクラスとGeographyクラスを使用して、たとえばSQL Server 2008で直接、データベースでより多くの "重いリフティング/処理"を試行することができます。

コミュニケーション

  • とらえどころのないバグをGIS SE / StackOverflowに投稿し、解決策もそれらを投稿しているのを見つけた場合、約6か月後に完全に忘れていた同じバグを探している間に自分で書いた以前の回答を見つけました。
  • メモを保管し、チームの他のユーザーが検索できるようにするのが理想的です。Wikiを試しましたが、画像を貼り付けることができないため、定期的にやるのをやめるには十分なハードルでした。現在、エラー、URL、スクリーンショットを追跡するのに最適なMicrosoft OneNoteを使用しています。共有することもできます。
  • より詳細な技術的アプローチについては、ブログに投稿してください。ESRIの世界では詳細の共有がはるかに少ないようです。他の人が商業的利益を得るのを恐れているためかもしれませんが、まともなブログはあなたの会社のサービスにとって良い広告です

-1は答えでしたか、それともOSS GISの開発と構成にはまったく同じ困難がないわけではない、と大胆に言っていましたか?!
geographika

7

この質問から多くの良い答えが出てくるのではないかと心配しています。しかし、それは良いものです.... ESRI製品の性能は、しばらくの間私の懸念事項でした。

上記の私のコメントは、ESRI製品の必要性について質問している、または別のテクノロジースタックに移行できますか。ESRI製品で開発してESRIシステムと統合し、ESRIユーザーにアピールする場合、最新の開発およびユーザープラットフォームに適合するように移植または調整されたESRIコードベースに固執します。

私が間違っている 場合、ESRIの誰かが私を修正してください。ESRIの.NETライブラリのほとんどはCOMオブジェクトのラッパーであり、その中にはアクセスするオーバーヘッドがあり、エラーレポートと処理があいまいです。基礎となるCOMオブジェクトとそれらのコードベースへの関与を理解すると、操作に合わせてコードを設計するのに役立ちます。この1つの事実は、Pythonスクリプトのパフォーマンスを10倍向上させるのに役立ちます。かつて40分かかっていたものが4分かかり、少し調整するだけで2.5分になりました!

ArcGIS 10で良いことを聞いたことがありますが、息を止めないでください。

ESRI製品を使用してソフトウェア内でGISソリューションを提供している場合は、提供されている多くのオープンソースプロジェクトの1つに注目し、そこからビルドします。@capdragonは、クラウド内の同様の考えを持つ開発者のサポートチームと一緒にあなたに大きな柔軟性とスケーラビリティを提供するアプリケーションのセットを提供します。

ESRI製品を使用した開発は、ESRI標準操作手順以外の革新的なことを行おうとしている場合、曖昧さ、あいまいなハッキング、主要なプレーヤーの不一致を伴う心のゲームです。

誰かが間違っていることを証明してほしい!


あなたの質問に答えるために、私たちはリストするのにあまりにも多くの理由でそれでほとんど動かなくなっています。
nw1

ArcObjects .NET SDKは、ほぼ完全に、基になるCOMのランタイム呼び出し可能ラッパーです。Silverlight / WPF SDKはCOMベースではありません。
ジェームズシェック

@James-間違っている場合は修正しますが、Silverlight SDKは単なるREST APIクライアントではありませんか?また、REST APIはArcObjects上に構築されていませんか?
nw1

@OptimizePrime-ArcGIS 10は、あなたが言及する多くの分野と、それを超えて10.1で発表された分野で大きな進歩を遂げました。10.1では、DCOMサポートを完全に廃止しています。
ウィルベフ

1
@welbevこの情報をありがとうございます。ESRIがこの分野で頭角を現すのに時間がかかりましたが、彼らがこれらの懸念に取り組んでいると聞いてうれしいです。
OptimizePrime

7

ESRIを使った私の経験では、ArcObjectsから離れれば離れるほど、成功する可能性が高くなります。実際的には、新しいREST APIを使用して現在の操作を実行できる場合は、常にその方法でArcGISにアクセスする必要があります。

彼らは、Java / .netのWeb ADFである完全な失敗から何かを学んだようです。RESTAPIは非常に単純化されており、大騒ぎせずに動作するだけで比較的素晴らしい実績があります。REST APIにアクセスする最も簡単な方法は、Javascript / Flex / Silverlightで作業している場合です。ESRIは非常に優れたライブラリを提供しますが、それは単なる標準のRESTインターフェイスであり、ほとんど何でも話せます。

そのようにできないものはありますが、ESRIスタックの他のほとんどすべてのものと連携するのがどれほど優れているかを十分に強調することはできません。ArcObjects(または.netでラップされたArcObjects)を使用する必要がある場合、コードで非常に優れたドキュメントを作成し、次のパッチで問題が発生しないように祈るだけです(おそらく、それらを知っているでしょう) )。


6

サポートメンテナンスを最新の状態に保ちます。コードの問題を理解しようとするよりもイライラするのは、コードを書いた人の助けを借りずに問題を解決しようとすることだけです。また、メンテナンス契約を結んでいない場合は、ESRIから何の助けも得られません。(このサイトまたはESRIフォーラムからいくつかの助けを得るかもしれませんが、それは彼らと直接話すこととは程遠いです。)

サービスパックとパッチを常に把握してください。問題がないことは保証されていませんが、最新バージョン/アップデートがインストールされているかどうかをサポートから尋ねられた場合、「はい」と安全に答えることができます。

回避策をコミュニティに投稿してください(ブログ、質問はこちらなど)。十分な人がそうすれば、2つのことが起こると思います:1つは、より多くの開発者が問題を認識し、それらをより迅速に解決するための戦いのチャンスがあること、2つは、ESRIによって問題がより早く修正されることです(拡大のようなものはありませんアリを動かすためのガラスはありますか?)。


4

また、私は毎日この製品と絶えず戦っているESRI開発者でもあります。メンテナンスサポートがないため、開発者からあまりフィードバックを受けません。

どんなに努力しても、「Just Does n't Work」(IJW-It Just Worksとは対照的に)が起こると、本当に本当にイライラします。

私が戦いに勝とうとすること:

  • 質問する(たくさん)
  • ArcObjects SDKリファレンスを読む(何度も何度も)
  • さまざまな設定を試す

結果への最短パスは、すでに同じ問題を抱えている人に尋ねることです。したがって、誰かがその問題に遭遇して修正を見つけた場合、彼らはあなたに伝える可能性が高いでしょう。

ドキュメントは優れていますが、主要な要素の説明と重要な詳細が欠けているため、1に戻ります。

実験も機能します。コンソールプログラムを作成してテストします。ユニットテストフレームワークは、IDE内ですべてを実行するのに役立ちますが、さまざまなシナリオをテストします。

最もバグが多い、または奇妙なESRIライブラリはジオデータベースであり、条件によっては奇妙な結果をもたらす可能性があるため、マスターしてみてください。


1

PostGIS> GeoServer> OpenLayersを使用してみてください。チームでどのように機能するかをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.