Tăng năng suất của nhà phát triển với nền tảng ArcGIS?


20

Chúng tôi là một nhóm nhỏ các nhà phát triển .NET. Chúng tôi có nhiều kinh nghiệm về GIS và không ai trong chúng tôi là người mới trong việc phát triển phần mềm / cơ sở dữ liệu hoặc quản trị hệ thống. Chúng tôi có trình độ kỹ thuật và nhiều năm kinh nghiệm trong ngành. Chúng tôi đã tham dự Hội nghị thượng đỉnh nhà phát triển Esri.

Công nghệ của Esri - chủ yếu là ArcGIS Server, ArcSDE và ArcObjects - đóng một vai trò nhỏ nhưng cần thiết trong tất cả các phần mềm chúng tôi phát triển. Mặc dù tình trạng thiểu số của ESRI trong kho công nghệ của chúng tôi, chúng tôi dành một lượng thời gian không đáng kể để khắc phục các lỗi khó nắm bắt, giải quyết các cách khắc phục, giải mã các thông báo lỗi mơ hồ của nó, theo dõi các vấn đề về hiệu suất và quy trình tái chế.

Thông thường, các vấn đề của chúng tôi xuất phát từ các lỗi chính hãng, xử lý ngoại lệ kém, hạn chế các quyết định thiết kế / kiến ​​trúc, thiếu tài liệu, không ổn định hoặc một số kết hợp của chúng. (Tôi đang nói về ngăn xếp ESRI ở đây.)

Từ quan điểm của người quản lý dự án, tôi rất quan tâm đến năng suất của nhóm. Điều này khiến chúng ta tốn rất nhiều thời gian. Chúng tôi không có thời gian để tìm hiểu mọi đặc điểm riêng của ngăn xếp ESRI, nhưng chúng tôi vẫn cần phải hoàn thành công việc. (Không thể sống với nó, không thể sống mà không có nó.)

Bạn có đề xuất thực tế nào để tăng năng suất của nhà phát triển với ESRI trong hỗn hợp?

Tôi không tìm kiếm gợi ý về ngăn xếp công nghệ thay thế.


2
Bạn có phiền khi hỏi lý do đằng sau việc sử dụng các sản phẩm ESRI trong phần mềm của bạn không?
OptimizePrime

Các nhà phát triển phản hồi tốt nếu bạn đe dọa sẽ xử lý chúng cho mọi lỗi bạn tìm thấy. Một lưu ý nghiêm trọng hơn: nhận xét sau đây của bạn là bình thường khi sử dụng các sản phẩm ESRI. <blockquote> Chúng tôi dành một lượng thời gian không đáng kể để khắc phục các lỗi khó nắm bắt, giải quyết các cách khắc phục, giải mã các thông báo lỗi mơ hồ, theo dõi các vấn đề về hiệu suất và quy trình tái chế. </ blockquote>
CaptDragon

@capdragon "Chúng tôi dành một lượng thời gian không đáng kể để khắc phục các lỗi khó nắm bắt, giải quyết các cách khắc phục, giải mã các thông báo lỗi mơ hồ, theo dõi các vấn đề về hiệu suất và quy trình tái chế" - áp dụng cho hầu hết tất cả các cài đặt và phát triển phần mềm ..
geographika

1
@geographika - Từ khóa là "không phù hợp" - liên quan đến tất cả các công nghệ khác mà chúng tôi làm việc cùng.
nw1

1
Tôi yêu cầu các nhà phát triển của bạn xem Bài giảng cuối cùng , chú ý đến khái niệm "bức tường gạch" ... Những bức tường gạch không có ở đó để ngăn chúng tôi ra ngoài. Những bức tường gạch ở đó để cho chúng ta một cơ hội để cho thấy chúng ta muốn một cái gì đó tồi tệ như thế nào. Bởi vì những bức tường gạch ở đó để ngăn chặn những người không muốn nó quá tệ.
Kirk Kuykendall

Câu trả lời:


10

Để thực hiện, có vẻ như giải pháp tốt nhất là viết mã proxy C ++ cho ArcObjects như được đề cập trong bài viết này . Trong ví dụ ESRI, việc loại bỏ việc sử dụng nhiều interop COM sẽ giúp tăng hiệu suất gấp 6 lần.

ESRI cũng đưa ra gợi ý / cách thực hành tốt nhất để xử lý các thông báo lỗi COM khó hiểu - và giải thích về mã lỗi HRESULT .

Ngoài các vấn đề cấu hình này có liên quan đến Windows, và vì vậy kiến ​​thức tốt về quản lý máy chủ Windows, IIS, dịch vụ Windows, nhật ký sự kiện Windows, đăng ký, đối tượng COM đã đăng ký, v.v ... đều giúp ích.

Ngoài các bài viết này, có một số cách tiếp cận phát triển chung hơn mà bạn có thể thấy hữu ích.

Phương pháp phát triển phần mềm

  • Sử dụng các dịch vụ web càng nhiều càng tốt, cho cả dữ liệu địa lý (dịch vụ WMS, WFS, ArcGIS REST). Sự tách biệt này làm cho mọi thứ dễ dàng hơn để gỡ lỗi và duy trì.
  • Nơi có thể cài đặt hệ thống để dọn dẹp cài đặt Windows. Tạo tập lệnh cài đặt để bạn có thể tạo lại toàn bộ hệ thống từ đầu mà không cần phải dựa vào bộ nhớ và các quy trình thủ công. Máy ảo là hoàn hảo cho việc này.
  • Càng nhiều càng tốt, hãy tách riêng .NET và DLL với mã cụ thể ESRI
  • Bạn có thể bắt đầu thử thực hiện nhiều "nâng / xử lý nặng" hơn trong cơ sở dữ liệu, ví dụ trực tiếp trong SQL Server 2008 với các lớp Hình học và Địa lý mới

Giao tiếp

  • Đăng các lỗi khó nắm bắt lên GIS SE / StackOverflow và nếu bạn cũng tìm thấy các giải pháp đó, tôi đã tìm thấy các câu trả lời trước đây tôi đã tự viết trong khi tìm kiếm cùng một lỗi tôi đã hoàn toàn quên mất khoảng 6 tháng sau ..
  • Giữ ghi chú và lý tưởng cho phép họ có thể tìm kiếm bởi những người khác trong nhóm. Tôi đã thử wiki nhưng việc thiếu hình ảnh dán là một trở ngại đủ để ngăn tôi làm việc đó thường xuyên. Tôi hiện đang sử dụng Microsoft OneNote hoàn hảo để theo dõi lỗi, URL, ảnh chụp màn hình. Nó có thể được chia sẻ là tốt.
  • Đối với phương pháp kỹ thuật chi tiết hơn, đăng chúng lên một blog. Dường như có rất ít chia sẻ chi tiết trong thế giới ESRI, có thể do sợ người khác lợi dụng thương mại, tuy nhiên một blog đàng hoàng là một quảng cáo tốt cho các dịch vụ của công ty bạn

Là -1 cho câu trả lời, hoặc có sự táo bạo để đề cập rằng việc phát triển và định cấu hình OSS GIS không chính xác mà không có những khó khăn tương tự?!
geographika

7

Tôi sợ rằng không có nhiều câu trả lời hay sẽ đến từ câu hỏi này. Nhưng nó là một thứ tốt .... hiệu suất của các sản phẩm ESRI đã là mối quan tâm của tôi trong một thời gian.

Nhận xét của tôi ở trên là truy vấn nhu cầu về các sản phẩm ESRI hoặc bạn có thể chuyển sang một ngăn xếp công nghệ khác. Nếu bạn đang phát triển với các sản phẩm ESRI để tích hợp với các hệ thống ESRI để thu hút người dùng ESRI, thì bạn bị mắc kẹt với cơ sở mã ESRI đã được chuyển hoặc bị méo để phù hợp với nền tảng người dùng và phát triển hiện đại.

Một số người từ ESRI vui lòng sửa cho tôi nếu tôi sai Hầu hết các thư viện .NET của ESRI là trình bao bọc cho các đối tượng COM, trong đó có các chi phí để truy cập và cung cấp mơ hồ các báo cáo và xử lý lỗi tốt nhất. Hiểu các đối tượng COM cơ bản và sự tham gia của chúng vào cơ sở mã của bạn sẽ giúp bạn thiết kế mã tốt hơn cho phù hợp với hoạt động của chúng. Điều này thực tế giúp tôi tăng hiệu suất trong các tập lệnh Python của tôi gấp 10 lần. Những gì một lần mất 40 phút bây giờ mất 4 và với một chút tinh chỉnh giờ chỉ còn 2,5 phút!

Tôi đã nghe những điều tốt với ArcGIS 10, nhưng đừng nín thở.

Nếu bạn đang sử dụng các sản phẩm ESRI để cung cấp giải pháp GIS trong phần mềm của mình, thì hãy tham gia vào một trong nhiều dự án nguồn mở được cung cấp và xây dựng từ đó. @capdragon cung cấp một bộ ứng dụng như vậy sẽ cung cấp cho bạn rất nhiều tính linh hoạt và khả năng mở rộng với một nhóm hỗ trợ gồm các nhà phát triển có cùng chí hướng trong đám mây để giúp bạn làm theo.

Phát triển với các sản phẩm ESRI là một trò chơi trí tuệ với sự mơ hồ, những vụ hack khó hiểu và sự không nhất quán của những người chơi chính nếu bạn đang cố gắng làm điều gì đó sáng tạo và bên ngoài Quy trình hoạt động tiêu chuẩn ESRI.

Tôi muốn một người chứng minh tôi sai!


Để trả lời câu hỏi của bạn, chúng tôi gặp khá nhiều khó khăn với nó vì quá nhiều lý do để liệt kê.
nw1

SDK .NET ArcObjects gần như hoàn toàn là các trình bao bọc có thể gọi được trong thời gian chạy cho COM bên dưới. SDK Silverlight / WPF không dựa trên COM.
James Schek

@James - Sửa lỗi cho tôi nếu tôi sai, nhưng không phải Silverlight SDK chỉ là ứng dụng khách API REST? Và không phải API REST được xây dựng trên ArcObjects sao?
nw1

@OptizesPrime - ArcGIS 10 đã có những bước tiến lớn trong nhiều lĩnh vực mà bạn đề cập và những gì họ đã công bố trong 10.1 thậm chí còn vượt xa hơn thế. Họ hoàn toàn bỏ hỗ trợ DCOM trong 10.1.
wilbev

1
@welbev Cảm ơn bạn rất nhiều vì thông tin này. Phải mất một thời gian để ESRI đi đầu trong vấn đề này, nhưng thật vui khi biết họ đang giải quyết những mối quan tâm này.
OptimizePrime

7

Theo kinh nghiệm của tôi khi làm việc với ESRI, bạn càng rời xa ArcObjects, bạn càng có nhiều khả năng thành công. Trong điều kiện thực tế, điều đó có nghĩa là nếu bạn có thể sử dụng API REST mới hơn để làm những gì bạn đang làm, bạn nên luôn truy cập ArcGIS theo cách đó.

Họ dường như đã học được điều gì đó từ sự thất bại hoàn toàn đó là Web ADF trong Java / .net và các API REST được đơn giản hóa nhiều và có một hồ sơ theo dõi tương đối tuyệt vời khi chỉ hoạt động mà không có quá nhiều phiền phức. Cách đơn giản nhất để truy cập API REST là nếu bạn đang làm việc trong Javascript / Flex / Silverlight vì ESRI cung cấp thư viện cho những thứ khá tốt, nhưng đó chỉ là giao diện REST tiêu chuẩn và bạn có thể nói chuyện với hầu hết mọi thứ.

Có những thứ bạn không thể làm theo cách đó, nhưng tôi không thể nhấn mạnh đủ để làm việc với nó tốt hơn bao nhiêu so với mọi thứ khác trong ngăn xếp ESRI. Khi bạn phải làm việc với ArcObjects (hoặc .net bọc ArcObjects), tất cả những gì bạn thực sự có thể làm là tạo tài liệu cực kỳ tốt trong mã của bạn và cầu nguyện rằng họ sẽ không phá vỡ nội dung trong bản vá tiếp theo (mà họ có thể sẽ biết ).


6

Giữ cho bảo trì hỗ trợ của bạn cập nhật. Điều duy nhất bực bội hơn là cố gắng tìm ra một vấn đề về mã là cố gắng tìm ra nó mà không có sự giúp đỡ từ những người đã viết mã. Và bạn sẽ không nhận được sự giúp đỡ nào từ ESRI nếu bạn không có thỏa thuận bảo trì với họ. (Bạn có thể nhận được một số trợ giúp từ trang web này hoặc các diễn đàn ESRI, nhưng điều đó khác xa với việc nói chuyện trực tiếp với họ.)

Ở trên đầu gói dịch vụ và các bản vá. Bạn không được bảo đảm là không có vấn đề gì nếu bạn làm thế, nhưng bạn có thể trả lời một cách an toàn, "Có", khi được hỗ trợ hỏi nếu bạn đã cài đặt phiên bản / bản cập nhật mới nhất.

Đóng góp cách giải quyết của bạn cho cộng đồng (blog, câu hỏi ở đây, v.v.). Nếu đủ người làm điều đó, tôi tưởng tượng hai điều sẽ xảy ra: một, nhiều nhà phát triển sẽ nhận thức được các vấn đề và sẽ có cơ hội chiến đấu để giải quyết chúng nhanh hơn và hai, các vấn đề sẽ được khắc phục nhanh hơn bởi ESRI (không có gì giống như phóng đại thủy tinh để có được những con kiến ​​di chuyển, có đó không?).


4

Tôi cũng là một nhà phát triển ESRI chiến đấu liên tục với sản phẩm này hàng ngày. Tôi không có hỗ trợ bảo trì, vì vậy tôi không nhận được nhiều phản hồi từ các nhà phát triển.

Nó thực sự thực sự thực sự gây thất vọng khi một cái gì đó "Chỉ không hoạt động" (trái ngược với IJW - Nó chỉ hoạt động), bất kể bạn cố gắng thế nào.

Những gì tôi làm cố gắng để giành chiến thắng trong cuộc chiến:

  • Đặt câu hỏi (rất nhiều)
  • Đọc tài liệu tham khảo SDK ArcObjects (rất nhiều - hơn và hơn)
  • Thử nghiệm với các thiết lập khác nhau

Con đường ngắn nhất dẫn đến kết quả là hỏi ai đó đã có cùng một vấn đề, vì vậy, nếu ai đó gặp rắc rối và tìm cách khắc phục, rất có thể họ sẽ nói với bạn.

Tài liệu này là tốt, nhưng thiếu các mô tả yếu tố chính và các chi tiết quan trọng - vì vậy, hãy quay lại 1.

Thử nghiệm cũng hoạt động. Tạo một chương trình điều khiển và thử nghiệm đi. Các khung kiểm thử đơn vị có thể giúp bạn thực hiện mọi thứ bên trong IDE, nhưng kiểm tra các kịch bản khác nhau.

Các thư viện ESRI kỳ lạ nhất hoặc kỳ lạ nhất là Geodatabase và có thể cho kết quả kỳ lạ, tùy thuộc vào điều kiện, vì vậy hãy cố gắng làm chủ nó.


1

Hãy thử sử dụng PostGIS> GeoServer> OpenLayers. Xem cách làm việc cho nhóm của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.