DCSIMG
December 2010 - Posts - Adiel Sharabi

Adiel Sharabi

Life, the Universe, and Everything (.Net for instance)

December 2010 - Posts

Expert-Exchange remove

תופעה מטרידה שנתקלתי בה הרבה היא שבחיפוש בגוגל אני מקבל תוצאות מ expert-exchange שזה אתר דומה לStackOverflow  רק בתשלום. זה מטריד כי יש אפשרות לראות את השאלה אבל בשביל התשובה צריך לשלם…
לא מעוניין שהאתר הזה יופיע בכלל אצלי על המפה.
אז מסתבר שיש תוספים שיפתרו את הבעיה עבורנו…
תוסף לכרום – יותר אינטואיטיבי, קל להוסיף סינונים.
תוסף לפיירפוקס – פחות נוח, מאפשר חריגים.
שניהם אגב יעבדו רק בגוגל רגיל ולא בחיפוש המהיר החדש.
לIE לא מצאתי.

Microsoft keyboard F Lock

למי שמשתמש במקלדת מיקרוסופט, יש את הכפתור המעצבן (לטעמי) F Lock (אי שם מימין למעלה).
הכפתור הזה נועד למעשה לשכפל את התפקוד של שורת הFים.
הכפתור הזה מעצבן כי ברירת המחדל שלו היא כבויה כלומר אין Fים. יש פונקציות אחרות (Open,New  וכו’).
מה שמציק הוא שכאשר מכבים את המחשב הוא שוב מתאפס ונשאר כבוי, ואז אני מוצא את עצמי לוחץ F5 לדיבאג וזה לא זז עד שלוחצים עליו.
 
אז זהו שיש לזה פתרון. לא נכנסתי לעומק העניין אבל ניתן למצוא את ההסבר כאן.
בכל אופן שינוי קטן ברגיסטרי פותר את העניין לתמיד, למעשה הכפתור נשאר כבוי אבל התפקוד מתהפך.
בכפוף לסוג המקלדת המדוייק יש להשתמש בקובץ הנכון.

Reuse types with WCF Data Services

כאשר עושים Add service reference לשירות נתונים נוצרים אובייקטים חדשים המייצגים את המודל. זאת בנוסף לפרוקסי (אותו אנחנו בעצם רוצים) המכיל את הנקודות קצה לכל האלמנטים במודל.
בWCF – ישנה אפשרות לשימוש חוזר באובייקטים כאשר הן לשרת והן ללקוח יש קישור אליהן. 

image

עכשיו נניח תצורה מסויימת של פרוייקט.

  • רוצים לעבוד N-tier והתבנית הנוחה ביותר היא Self tracking object
  • רוצים למנוע תלויות ב Entity framework – אז מזיזים את הישויות לפרוייקט נפרד.
  • רוצים להשתמש בWcf Data services ע”מ לקבל אובייקטים מהשרת.
  • רוצים להשתמש גם בשירותים אחרים של WCF כדי להחזיר אובייקטים לשרת (עדכון וכו’)

התצורה הזו אינה דמיונית, היא מאד הגיונית, לתשאל עם Data Services זה תענוג, אולם שאר הפעולות (עדכון,הוספה,מחיקה) בד”כ דורשות קצת יותר לוגיקה ממה שנוח לעשות עם Data Services.

הבעיה כמובן היא שגם אם ללקוח יש קישור לפרוייקט של הישויות תהיה לו כפילות של ישויות תחת Namespace אחר.

ב Tip 52  מוצגת שיטה שלמעשה מיצרת פרוקסי ידנית כדי לעקוף את הבעיה הזו. רק שיש בעיה עם הגישה הזו. זה ידני – כל שינוי בשמות, הוספת/הורדת ישויות מחייב עריכה ידנית.

לכן הוספתי תבנית TT עם שינויים קלים שעושה את העבודה עבורי.

מצ”ב פרוייקט לדוגמא.

נקודות לתשומת לב -

  • ב TT של הcontext יש תוספת של הNamespace של הישויות (החדש אם הוא שונה)
  • ישנו override בDataService כדי לאפשר לMetadata  של השירות לעלות בצורה תקינה. אבל זה נושא לפוסט אחר.
  • ב TT של הישויות צריך לתקן את הנתיב ל Edmx.
  • יש להוסיף רפרנס ל - System.Data.Services.Client מכיוון שהפרוקסי יורש מDataServiceContext
  • ב TT של צד לקוח יש לעדכן נתיב ל Edmx והnamspace לישויות.
  • אם נוצר קובץ כפול ואחד עם “1” בסוף – זו איזו תקלה לא ברורה שניתן לתקן (זה רק מעצבן ויזואלית) אם נכנסים לקובץ של הפרוייקט ומשנים שם את הערך של  LastGenOutput שיהיה בלי 1.