DCSIMG
From string code to Typed Code in ESRI World - Yoav Blob

Yoav Blob

From string code to Typed Code in ESRI World

לפני כ4 חודשים עברתי לצוות שמפתח מערכות GIS על גבי התשתיות של חברת ESRI. אנחנו בפרויקט שלנו עובדים מול הArcGis Server שהוא מוצר הדגל של ESRI, הAPI לכל הפעולות נקרא Arc Objects שזה בעצם אוסף של רכיבי COM שחיים על השרת ומאפשרים לך לעשות כמעט הכל מול כלי ESRI.

במסגרת החפיפה העבירו לי ולחברי לצוות סדנה שעסקה בכתיבת קוד Arc Objects בNET.

מרבית הסדנה עסקה בכמה שלא נוח לעבוד עם Arc Objects ודאגו להזכיר לנו שאי אפשר לבצע new למחלקות של Arc Object וחייבים לבצע יצירה של אובייקטים ע"י קריאה לServerContext.CreateObject, לי בתור תוכניתן asp החתימה נראתה מוכרת כי היא הייתה בדיוק כמו בעבודה מול רכיבי COM בASP, אבל למרות זאת אני מעדין לעבודStrong typed.

בתיעוד של ESRI ראיתי שהמתודה מקבלת מחרוזת שמזהה את סוג האובייקט esriGeomerty.Point או esriCatro.Map וכו'... ראיתי שטעויות בהפעלת הפונקציה לא משפיעות על קומפילציה ולכן אני הולך לבזבז הרבה מאוד זמן על התעסקות מרגיזה עם מחרוזות מציקות.

אז התחלתי לחפש פתרון לבעיה, הפתרונות שאני מצאתי הם:

  1. להגדיר enum עבור האובייקטים שאנחנו משתמשים בהם ביום יום ובכך להוריד את הצורך בהקלדה חוזרת שלהם.
  2. לעטוף את המתודה CreateObject באובייקט משלי שידע לקבל טיפוס נתונים ויתפקד כמו new.

לאחר בחינה קצרה החלטתי ללכת על הפתרון השני והגדרתי מחלקה גנרית עם מתודה בחתימה הבאה:

T ArcObjectFactory.CreateObject<T>();

כאשר T הוא טיפוס הנתונים שאנחנו רוצים ליצור.

המתודה תבצע את הבניה של המחרוזת עבור T ואחרי זה תבצע הפעלה של CreateObject.

בניית המחלקה הסתיימה לפני כ4 חודשים מאז אני מתכנת מול ArcObjects ואני יכול להגיד שאין לי מושג איך הייתי מסתדר בלי זה. אני כותב קוד קריאה יותר מהר יותר ומתעסק יותר בבעיות האמיתיות של הקוד ולא במלחמות במחרוזות.

לפני שבוע קיבלתי טלפון בעצבים מאחד המפתחים בצוות שעובד מול כלי ESRI, הוא אמר שהוא לא מוצא בשום מקום את המחלקה ArcObjectFactory מסתבר שהוא קיבל קוד לכתוב בArcObjects וכתבו לו להשתמש בArcObjectFactory אבל הוא לא מצא אותו בEDN וגם לא בMSDN אז הוא הלך לGOOGLE אבל גם שם הוא לא מצא אותו אז אני מבטיח לך יוסי מהיום הArcObjectFactory מופיע באינטרנט.

תוכן התגובה

rabashani כתב/ה:

אכן מופיע:

http://www.google.com/search?sourceid=navclient&ie=UTF-8&rlz=1T4IBMA_en___IL210&q=ArcObjectFactory

אני חייב לציין שגם אני לא יודע איך הייתי מסתדר בלי זה.

(או יותר נכון לא רוצה לדעת)

אכן מגניב.

שני.

# April 7, 2007 5:43 PM

Doron's .NET Space כתב/ה:

* The following is a great work by a friend of mine - Yoav Michaeli . Yoav wrote about it in his Hebrew

# February 8, 2008 1:28 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 7 and 6 and type the answer here:


Enter the numbers above: