การเพิ่มผลผลิตของนักพัฒนาด้วยแพลตฟอร์ม ArcGIS?


20

เราเป็นทีมเล็ก ๆ ของนักพัฒนา. NET เรามีประสบการณ์ GIS ที่เพียงพอและไม่มีใครใหม่สำหรับการพัฒนาซอฟต์แวร์ / ฐานข้อมูลหรือการบริหารระบบ เรามีหลักสูตรทางเทคนิคและประสบการณ์ในอุตสาหกรรมหลายปี เราได้เข้าร่วมการประชุมสุดยอด Esri Developer

เทคโนโลยีของ Esri - โดยหลักแล้วคือ ArcGIS Server, ArcSDE และ ArcObjects - มีบทบาทเล็กน้อย แต่จำเป็นในซอฟต์แวร์ทั้งหมดที่เราพัฒนา แม้จะมีสถานะส่วนน้อยของ ESRI ในสแต็คเทคโนโลยีของเรา แต่เราใช้เวลาในการแก้ไขข้อบกพร่องที่ไม่สามารถเข้าใจได้มากเกินไปการสร้างวิธีแก้ปัญหาการถอดรหัสข้อความผิดพลาดที่คลุมเครือการติดตามปัญหาด้านประสิทธิภาพและกระบวนการรีไซเคิล

โดยทั่วไปแล้วปัญหาของเราเกิดจากข้อบกพร่องของแท้การจัดการข้อยกเว้นที่ไม่ดี จำกัด การตัดสินใจออกแบบ / สถาปัตยกรรมการขาดเอกสารความไม่แน่นอนหรือการรวมกันบางอย่าง (ฉันพูดถึงกอง ESRI ที่นี่)

จากมุมมองของผู้จัดการโครงการฉันกังวลมากเกี่ยวกับประสิทธิภาพของทีม สิ่งนี้ทำให้เราเสียเวลามาก เราไม่มีเวลาที่จะเรียนรู้สำนวนที่เป็นนิสัยของสแต็ค ESRI ทุกครั้ง แต่เรายังต้องทำให้เสร็จ (ไม่สามารถอยู่กับมันไม่สามารถอยู่ได้โดยปราศจากมัน)

คุณมีข้อเสนอแนะเชิงปฏิบัติอะไรบ้างในการเพิ่มประสิทธิภาพของนักพัฒนาด้วย ESRI ในการผสม

ฉันไม่ได้มองหาคำแนะนำเกี่ยวกับสแต็คเทคโนโลยีทางเลือก


2
คุณคิดจะถามเหตุผลที่ใช้ผลิตภัณฑ์ ESRI ในซอฟต์แวร์ของคุณหรือไม่?
OptimizePrime

นักพัฒนาตอบสนองได้ดีถ้าคุณขู่ว่าจะทำตามข้อผิดพลาดทุกครั้งที่คุณพบ ในหมายเหตุที่จริงจังมากขึ้น: ความคิดเห็นต่อไปนี้เป็นเรื่องปกติเมื่อใช้ผลิตภัณฑ์ ESRI <blockquote> เราใช้เวลามากเกินไปในการแก้ไขข้อผิดพลาดที่เข้าใจยากการสร้างวิธีแก้ปัญหาการถอดรหัสข้อความผิดพลาดที่คลุมเครือการติดตามปัญหาด้านประสิทธิภาพและกระบวนการรีไซเคิล </blockquote>
CaptDragon

@capdragon "เราใช้เวลามากเกินไปในการแก้ไขข้อผิดพลาดที่เข้าใจยากแก้ปัญหาการแก้ปัญหาถอดรหัสข้อผิดพลาดที่คลุมเครือติดตามปัญหาด้านประสิทธิภาพและกระบวนการรีไซเคิล" - ใช้กับการพัฒนาและติดตั้งซอฟต์แวร์ทั้งหมด ..
geographika

1
@geographika - คำสำคัญคือ "inordinate" - เกี่ยวข้องกับเทคโนโลยีอื่น ๆ ทั้งหมดที่เราทำงานด้วย
nw1

1
ฉันต้องการให้นักพัฒนาของคุณดูการบรรยายครั้งสุดท้ายด้วยความสนใจต่อแนวคิด "กำแพงอิฐ" ... กำแพงอิฐไม่ได้อยู่ที่นั่นเพื่อให้เราออกไป กำแพงอิฐอยู่ที่นั่นเพื่อให้เรามีโอกาสแสดงให้เห็นว่าเราต้องการอะไรที่ไม่ดี เพราะกำแพงอิฐอยู่ที่นั่นเพื่อหยุดคนที่ไม่ต้องการมันมากพอ
Kirk Kuykendall

คำตอบ:


10

เพื่อประสิทธิภาพที่ดูเหมือนว่าทางออกที่ดีที่สุดคือการเขียนรหัส c ++ พร็อกซี ArcObjects เป็นที่กล่าวถึงในบทความนี้ ในตัวอย่าง ESRI ให้การลบการใช้งาน interop COM อย่างหนักทำให้ประสิทธิภาพเพิ่มขึ้น 6x

ESRI ยังให้ข้อเสนอแนะ / แนวทางปฏิบัติที่ดีในการจัดการข้อผิดพลาดที่คลุมเครือของ COM - และคำอธิบายของรหัสข้อผิดพลาด HRESULT

นอกเหนือจากปัญหาการกำหนดค่าส่วนใหญ่เหล่านี้เกี่ยวข้องกับ Windows และความรู้ที่ดีเกี่ยวกับการจัดการเซิร์ฟเวอร์ Windows, IIS, บริการ Windows, บันทึกเหตุการณ์ Windows, รีจิสทรี, วัตถุ COM ที่ลงทะเบียน ฯลฯ ช่วยได้ทั้งหมด

นอกเหนือจากบทความเหล่านี้ยังมีวิธีการพัฒนาทั่วไปอีกจำนวนมากที่คุณอาจพบว่ามีประโยชน์

แนวทางการพัฒนาซอฟต์แวร์

  • ใช้บริการเว็บให้มากที่สุดสำหรับข้อมูลทางภูมิศาสตร์ (บริการ WMS, WFS, ArcGIS REST) การแยกนี้ทำให้การดีบักและบำรุงรักษาง่ายขึ้น
  • เป็นไปได้ว่าจะติดตั้งระบบเพื่อทำความสะอาดการติดตั้ง Windows สร้างสคริปต์การติดตั้งเพื่อให้คุณสามารถสร้างระบบใหม่ทั้งหมดตั้งแต่ต้นโดยไม่ต้องพึ่งพาหน่วยความจำและกระบวนการแบบแมนนวล เครื่องเสมือนนั้นสมบูรณ์แบบสำหรับสิ่งนี้
  • ให้มากที่สุดเท่าที่เป็นไปได้เก็บ. NET และ DLL ที่บริสุทธิ์ด้วยรหัสเฉพาะของ ESRI แยกต่างหาก
  • คุณสามารถเริ่มต้นพยายามทำ "การยก / การประมวลผลที่หนักมาก" เพิ่มเติมในฐานข้อมูลเช่นโดยตรงใน SQL Server 2008 ด้วยคลาส Geometry และ Geography ใหม่

การสื่อสาร

  • โพสต์ข้อบกพร่องที่เข้าใจยากไปยัง GIS SE / StackOverflow และหากคุณพบวิธีแก้ปัญหาที่โพสต์เช่นกันฉันได้พบคำตอบก่อนหน้านี้ที่ฉันเขียนเองในขณะที่ค้นหาข้อผิดพลาดเดียวกันที่ฉันลืมไปโดยสิ้นเชิง
  • เก็บบันทึกย่อและช่วยให้พวกเขาสามารถค้นหาได้โดยคนอื่น ๆ ในทีม ฉันลองใช้วิกิ แต่การวางภาพไม่เพียงพอก็มีอุปสรรคเพียงพอที่จะหยุดฉันไม่ได้ทำมันเป็นประจำ ขณะนี้ฉันใช้ Microsoft OneNote ซึ่งเหมาะสำหรับการติดตามข้อผิดพลาด URL ภาพหน้าจอ สามารถแชร์ได้เช่นกัน
  • สำหรับวิธีการทางเทคนิคโดยละเอียดเพิ่มเติมโพสต์ไว้ในบล็อก ดูเหมือนว่าจะมีการแบ่งปันรายละเอียดน้อยลงในโลกของ ESRI อาจเป็นเพราะคนอื่นกลัวที่จะได้รับผลประโยชน์ในเชิงพาณิชย์อย่างไรก็ตามบล็อกที่ดีคือโฆษณาที่ดีสำหรับบริการของ บริษัท ของคุณ

-1 สำหรับคำตอบหรือมีความกล้าที่จะพูดถึงว่าการพัฒนาและการกำหนดค่า OSS GIS นั้นไม่ได้เหมือนกันหากไม่มีปัญหาเดียวกันหรือไม่!
geographika

7

ฉันเกรงว่าคำตอบที่ดีจำนวนมากจะมาจากคำถามนี้ แต่มันก็เป็นหนึ่งที่ดี .... ประสิทธิภาพของผลิตภัณฑ์ ESRI ได้รับความกังวลของฉันบางครั้ง

ความคิดเห็นของฉันด้านบนกำลังค้นหาความต้องการผลิตภัณฑ์ ESRI หรือคุณสามารถย้ายไปยังกองเทคโนโลยีอื่นได้ หากคุณกำลังพัฒนาด้วยผลิตภัณฑ์ ESRI เพื่อรวมเข้ากับระบบ ESRI เพื่อดึงดูดผู้ใช้ ESRI คุณจะติดอยู่กับฐานรหัส ESRI ที่ได้รับการย้ายพอร์ตหรือมีส่วนร่วมเพื่อให้สอดคล้องกับการพัฒนาที่ทันสมัยและแพลตฟอร์มผู้ใช้

บางคนจาก ESRI โปรดแก้ไขให้ฉันด้วยถ้าฉันผิด ไลบรารี NET ของ ESRI ส่วนใหญ่เป็นตัวห่อวัตถุ COM ซึ่งมีค่าใช้จ่ายในการเข้าถึงและเสนอที่ไม่ชัดเจนในรายงานข้อผิดพลาดและการจัดการที่ดีที่สุด การทำความเข้าใจเกี่ยวกับวัตถุ COM พื้นฐานและการมีส่วนร่วมในฐานรหัสของคุณจะช่วยให้คุณออกแบบรหัสของคุณให้เหมาะกับการทำงานของพวกเขาได้ดีขึ้น ข้อเท็จจริงนี้ช่วยฉันเพิ่มประสิทธิภาพในสคริปต์ Python ของฉัน 10 เท่า สิ่งที่ครั้งหนึ่งใช้เวลา 40 นาทีใช้เวลา 4 นาทีและด้วยการปรับเปลี่ยนเล็กน้อยตอนนี้ลงไปที่ 2.5 นาที!

ฉันได้ยินสิ่งดีๆกับ ArcGIS 10 แต่อย่ากลั้นหายใจ

หากคุณกำลังใช้ผลิตภัณฑ์ ESRI เพื่อมอบโซลูชัน GIS ภายในซอฟต์แวร์ของคุณลองเข้าร่วมในโครงการโอเพนซอร์ซหลายโครงการที่เสนอและสร้างจากที่นั่น @capdragon มีชุดแอปพลิเคชั่นหนึ่งชุดที่จะช่วยให้คุณมีความยืดหยุ่นและความสามารถในการปรับขยายที่ยอดเยี่ยมพร้อมด้วยทีมสนับสนุนของนักพัฒนาที่มีใจเดียวกันในคลาวด์เพื่อช่วยคุณ

การพัฒนาด้วยผลิตภัณฑ์ ESRI เป็นเกมแห่งความคิดที่มีความคลุมเครือคลุมเครือแฮ็กและไม่สอดคล้องกันกับผู้เล่นรายใหญ่หากคุณกำลังพยายามทำสิ่งใหม่ ๆ และนอกกระบวนการปฏิบัติการมาตรฐานของ ESRI

ฉันต้องการบางคนที่จะพิสูจน์ว่าฉันผิด!


เพื่อตอบคำถามของคุณเราค่อนข้างติดอยู่กับเรื่องนี้เพราะมีเหตุผลมากเกินไปที่จะแสดงรายการ
nw1

ArcObjects .NET SDK เป็นตัวห่อ callable ที่ใช้งานได้เกือบทั้งหมดสำหรับ COM พื้นฐาน Silverlight / WPF SDK ไม่ใช่ COM
James Schek

@James - แก้ไขให้ถูกต้องหากฉันผิด แต่ไม่ใช่ Silverlight SDK เพียงไคลเอ็นต์ REST API ใช่ไหม และ REST API ไม่ได้ถูกสร้างขึ้นบน ArcObjects?
nw1

@OptimizePrime - ArcGIS 10 สร้างความก้าวหน้าครั้งใหญ่ในหลาย ๆ ด้านที่คุณพูดถึงและสิ่งที่พวกเขาได้ประกาศสำหรับ 10.1 ไปไกลกว่านั้น พวกเขากำลังลดการสนับสนุน DCOM ลงใน 10.1 อย่างสมบูรณ์
wilbev

1
@welbev ขอบคุณมากสำหรับข้อมูลนี้ มันใช้เวลาสักครู่สำหรับ ESRI เพื่อมุ่งหน้าในเรื่องนี้ แต่ก็ยินดีที่ได้ทราบว่าพวกเขากำลังจัดการกับข้อกังวลเหล่านี้
OptimizePrime

7

จากประสบการณ์ของฉันที่ทำงานกับ ESRI ยิ่งคุณอยู่ห่างจาก ArcObjects มากเท่าไหร่คุณก็ยิ่งมีโอกาสประสบความสำเร็จมากเท่านั้น ในแง่การปฏิบัตินั่นหมายความว่าหากคุณสามารถใช้ REST APIs ที่ใหม่กว่าเพื่อทำสิ่งที่คุณกำลังทำอยู่คุณควรเข้าถึง ArcGIS ด้วยวิธีนั้นเสมอ

พวกเขาดูเหมือนจะได้เรียนรู้บางสิ่งบางอย่างจากความล้มเหลวทั้งหมดที่เป็น Web ADF ใน Java / .net และ REST API นั้นง่ายมากและมีประวัติที่ยอดเยี่ยมเมื่อเทียบกับการทำงานโดยไม่ต้องยุ่งยากมาก วิธีที่ง่ายที่สุดในการเข้าถึง REST API คือถ้าคุณทำงานใน Javascript / Flex / Silverlight เนื่องจาก ESRI มีห้องสมุดสำหรับผู้ที่ค่อนข้างดี แต่เป็นเพียงส่วนต่อประสาน REST มาตรฐานและคุณสามารถพูดคุยกับมันได้เกือบทุกอย่าง

มีบางสิ่งที่คุณไม่สามารถทำได้ แต่ฉันไม่สามารถความเครียดได้มากพอที่จะทำงานได้ดีกว่านั้นใน ESRI stack เมื่อคุณต้องทำงานกับ ArcObjects (หรือ. Arc ที่ห่อหุ้ม ArcObjects) สิ่งที่คุณสามารถทำได้คือสร้างเอกสารที่ดีมากในรหัสของคุณและอธิษฐานว่าพวกเขาจะไม่ทำสิ่งต่าง ๆ ในแพตช์ถัดไป (ซึ่งพวกเขาอาจจะรู้ )


6

ปรับปรุงการบำรุงรักษาสนับสนุนของคุณให้ทันสมัย สิ่งเดียวที่น่าหงุดหงิดยิ่งกว่าการพยายามเข้าใจปัญหาเกี่ยวกับรหัสคือการพยายามคิดออกโดยไม่ได้รับความช่วยเหลือจากผู้ที่เขียนรหัส และคุณจะไม่ได้รับความช่วยเหลือใด ๆ จาก ESRI หากคุณไม่มีข้อตกลงการบำรุงรักษากับพวกเขา (คุณอาจได้รับความช่วยเหลือจากเว็บไซต์นี้หรือฟอรัม ESRI แต่นั่นเป็นหนทางไกลจากการพูดคุยกับพวกเขาโดยตรง)

อยู่เหนือเซอร์วิสแพ็คและแพทช์ คุณไม่ได้รับประกันว่าจะไม่มีปัญหาถ้าคุณทำ แต่คุณสามารถตอบได้อย่างปลอดภัย "ใช่" เมื่อถูกถามโดยฝ่ายสนับสนุนหากคุณติดตั้งเวอร์ชัน / อัปเดตล่าสุด

มีส่วนร่วมในการแก้ไขปัญหาของคุณให้กับชุมชน (บล็อกคำถามที่นี่ ฯลฯ ) ถ้ามีคนทำอย่างนั้นฉันคิดว่าจะมีสองสิ่งเกิดขึ้น: ผู้พัฒนามากกว่าหนึ่งจะตระหนักถึงปัญหาและมีโอกาสต่อสู้ที่จะประทับตราพวกเขาให้เร็วขึ้นและสองปัญหาจะได้รับการแก้ไขเร็วขึ้นโดย ESRI แก้วเพื่อให้มดเคลื่อนไหวอยู่ตรงนั้นไหม.


4

ฉันยังเป็นผู้พัฒนา ESRI ที่ต่อสู้กับผลิตภัณฑ์นี้อย่างต่อเนื่องเป็นประจำทุกวัน ฉันไม่มีการสนับสนุนการบำรุงรักษาดังนั้นฉันจึงไม่ได้รับความคิดเห็นจากนักพัฒนามากนัก

มันเป็นเรื่องที่น่ายินดีจริงๆเมื่อบางสิ่ง "Just Doesn't Work" (ตรงข้ามกับ IJW - แค่ใช้งานได้) ไม่ว่าคุณจะพยายามมากแค่ไหนก็ตาม

สิ่งที่ฉันพยายามที่จะชนะการต่อสู้:

  • ถามคำถาม (มาก)
  • อ่านการอ้างอิง SDK ของ ArcObjects
  • ทดลองกับการตั้งค่าที่แตกต่างกัน

เส้นทางที่สั้นที่สุดไปยังผลลัพธ์คือการถามคนที่มีปัญหาเดียวกันอยู่แล้วดังนั้นหากใครบางคนประสบปัญหานั้นและพบการแก้ไขพวกเขาส่วนใหญ่จะบอกคุณ

เอกสารเป็นสิ่งที่ดี แต่ขาดคำอธิบายองค์ประกอบที่สำคัญและรายละเอียดที่สำคัญดังนั้นกลับไปที่ 1

การทดลองใช้งานได้เช่นกัน สร้างโปรแกรมคอนโซลและทดสอบออกไป กรอบการทดสอบหน่วยสามารถช่วยคุณทำทุกอย่างภายใน IDE แต่ทดสอบสถานการณ์ต่าง ๆ

buggiest หรือ weirdest ของไลบรารี ESRI คือ Geodatabase และสามารถให้ผลลัพธ์ที่แปลกประหลาดขึ้นอยู่กับเงื่อนไขดังนั้นให้ลองใช้มัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.