DCSIMG
December 2009 - Posts - I Love C#
Sign in | Join | Help

I Love C#

Eyal Vardi

December 2009 - Posts

Open House Team System 2010

פורסם בתאריך Dec 30 2009, 02:36 AM על ידי Vardi

Open House Team System 2010

תאריך: 11.01.2010

באירוע נציג את התכולות והיכולות של הגרסה החדשה: נסקור את השינויים ברמת שרת ה- Team Foundation Server וברמת הכלים לבעלי התפקידים השונים: מפתח, ראש צוות, בודק, מנהל פרוייקטים ומנהל פיתוח. לאחר שנכיר את הגרסה החדשה נדון באופנים המומלצים לביצוע הטמעה. נראה כיצד ניתן לנצל השקעות עבר שכבר בוצעו בהטמעות של הגרסאות הקודמות וכיצד ניתן למנף אותן כדי לקבל הרבה יותר מהגרסה החדשה.

לוח זמנים:

8:30 – 9:00 התכנסות

9:00 – 10:30 מה חדש בשרת ה-TFS? איך יראה תהליך ניהול התצורה שלנו ב- 2010?

  • מה חדש ב-Team Foundation Server 2010?
  • החידושים במערכת ה- source control וניהול הגרסאות
  • בניית תהליכי Build מורכבים המשתמשים בטכנולוגיית .NET 4.0 WF

10:30 – 11:00 הפסקה

11:0 – 12:30 ניהול צוות הפיתוח בעזרת 2010 Team System

  • היכולת לנהל משימות, באגים ודרישות בצורה היררכית
  • הדוחות וה-KPI המובנים שנותנים לנו שליטה על התקדמות הפרוייקט
  • טיפים וטריקים לשדרוג והטמעה נכונים

12:30 סיום משוער

אודות המרצה: הבית הפתוח מועבר ע"י שרית תמיר ומבוסס על חמש שנים של עבודה אינטנסיבית עם המוצר, חברות ב- Advisory Council של מיקרוסופט ל- Team System ונסיון מצטבר של למעלה מ-100 הטמעות.

לרישום לחץ כאן.

New Courses in Visual Studio & VSTS 2010

פורסם בתאריך Dec 14 2009, 08:59 AM על ידי Vardi

New Courses in Visual Studio & VSTS 2010

בחודשים האחרונים השקענו הרבה מאד עבודה בלימוד ובחקר של ה- Team Foundation Server 2010 ושל Visual Studio 2010.. התוצאה היא סדרה של 5 קורסים אשר מכילים ומקיפים את היכולות והפיצ'רים החדשים של הפלטפורמה. הקורסים נבנו באופן של הקניית ידע מעשי, כך שהבוגרים שלהם יוכלו להשתלב מיד בקהילת מטמיעי ומשתמשי Team System.

הקורסים שלנו:

VSTS 2010 - Managing Agile and Scrum software projects

מספר גדל והולך של ארגוני תוכנה בוחר במתודולוגיה האג'ילית כבסיס לפעילות הפיתוח. Team System מהווה סביבת עבודה מלאה לפרוייקטים אג'יליים: ניהול ה- Backlog של הדרישות, תכנון האיטרציות/ספרינטים, ניהול impediments, poker planning, ניהול task board, מעקב בעזרת דוחות burn down ועוד. בקורס נכיר מספר תבניות הנמצאות על הרצף האג'ילי ונלמד לשלב בינן לבין הצרכים השונים של הפרוייקטים שלנו בתחומי ניהול הקוד, הגרסאות, לוחות הזמנים ועוד.

לצפייה בתוכנית הקורס לחץ כאן

Visual Studio Team System for Architect 2010

גרסת 2010 של Visual Studio Team System כוללת סט רחב של יכולות מתקדמות עבור ארכיקטקט התוכנה. כלי הארכיטקטורה כוללים יכולות יחודיות לארכיטקט המאפשרות תכנון גמיש ואפקטיבי של אפליקציות תוכנה וכן משלבות את תוצרי הארכיטקטורה בעולם התוכן של ה- Team Foundation Server בעזרת work items ותהליך ה- Build

לצפייה בתוכנית הקורס לחץ כאן

Team System 2010 - The complete knowledge base

פלטפורמת ה- Team System 2010 כוללת שפע של מערכות, כלים ויכולות. בקורס מקיף זה נלמד להכיר את החלקים השונים של הפלטפורמה וכיצד ניתן ומומלץ לשלב ביניהם על מנת לייצר סביבת עבודה אפקטיבית ומזמינה עבור המשתתפים השונים בתהליך הפיתוח: המפתח, ארכיטקט התוכנה, ראש הצוות, הבודק, מנהל המוצר ומנהל הפרויקט.

לצפייה בתוכנית הקורס לחץ כאן

Team System 2010 Extensibility

פלטפורמת Team System מאפשרת למפתחי ה. NET להרחיב את סט היכולות של המערכת ולהעשיר אותו לפי הצרכים של הפרוייקט בו הם נוטלים חלק. בקורס זה נלמד להכיר את המבנה הארכיטקטוני של המערכת, נבין כיצד מייצרים הרחבות לחלקים השונים של הפלטפורמה וכיצד מגדירים ומפתחים ממשקים ומנועי סינכרון בין Team Foundation Server לבין מערכות אחרות

לצפייה בתוכנית הקורס לחץ כאן

Visual Studio Team System 2010 - Test & Lab Solutions

כלי הבדיקות החדשים מבית מיקרוסופט מאפשרים לנו לשלב תהליכי איכות חדשניים בכל אחד משלבי פיתוח התוכנה. בעזרת כלי ה- Test & Lab Management ניתן לייצר עקיבות בין דרישות הפרוייקט, לתסריטי הבדיקות ולתקלות הנפתחות בגין. בקורס זה נלמד לתכנן בדיקות, להריץ בדיקות ידניות ואוטומטיות, להגדיר ולנהל מעבדות בדיקות וירטואליות

לצפייה בתוכנית הקורס לחץ כאן

WCF Serialization Issue

פורסם בתאריך Dec 08 2009, 06:07 PM על ידי Vardi

WCF Serialization Issue

אחת השאלות הכי שכיחות שאני שומע היא, למה צריך לשים Attribute Known Type על Base Class?

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

נגדיר את הממשק הבא:

clip_image002

כאשר קוראים ל- Proxy.GetMedia( m ) נוצרת הודעת SOAP שנשלחת לשירות. לדוגמא:

clip_image004

כמה מושגים שכדאי להסביר:

1. <GetMedia> - השם נלקח משם המתודה או מתוך ה= Name אשר הוגדר ב- OperationContract, לדוגמא ( [OperationContract(Name=”GetMedia”)] ).

2. <media> - השם נלקח משם ה- argument של המתודה.

איך ה-WCF יודע ,בצד השירות, לבחור את הטיפוס Media? כאשר יוצרים את ServiceHost הוא עובר ב- Reflection על כל המתודות שמסומנות ב- OperationContract ושומר את החתימה שלהן. באופן זה יש לו את היכולת לחבר את <media> ל- argument הנכון במתודה ולזהות את הטיפוס של ה- <media>. מכאן נובע שאם אתם שולחים מחלקה שיורשת מ- Media עדיין השם של ה- XML Node לא ישתנה שכן ה- argument נשאר זהה (<media> ).

כלומר, צריך לתת "רמז" ל-WCF לאיזה מחלקה אנחנו מתכוונים..... וזה מתקבל ע"י Known Type Attribute שמגדיר ל- DataContractSerializer לשתול רמז בהודעה.

ראה דוגמא:

clip_image006

אנחנו רואים שעכשיו יש רמז: <media type="CD"> שעוזר ל- DataContractSerializer בצד השרת להבין שמדובר במחלקה שיורשת את Media ( את זה הוא יודע מן המתודה ) ושהשם של המחלקה הוא CD.

האם חייבים להשתמש ב- Known Type?

התשובה היא לא, אפשר לתחמן J.

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

אשמח לענות לשאלות לכל מי שרוצה, אני זמין גם בקבוצה שלי בלינקדאין - I Love C# אשמח אם תצטרפו.

מי הגורו שלכם?

פורסם בתאריך Dec 08 2009, 02:03 AM על ידי Vardi

עוד מספר חודשים יצא הדוט-נט 4.0 גירסה RTM. מיקרוסופט עשתה דרך ארוכה מאז… דוט-נט 1.0 היה בגודל של כ-24 מגה והכיל כ- 3,000 מחלקות ( +- ). דוט-נט 4.0 שוקל כ-200 מגה ומכיל יותר מ-20,000 מחלקות.  מכאן אני חושב שנובע הצורך שבכל פרויקט יהיו מספר גורו / יועצים שמתמחים בתחום מסוים ועוזרים לא להיכנס ל"פינות".

גם לי יש מספר אנשים שהם הגורו שלי ואני קורא באדיקות את כל מה שהם כותבים. אחד הגורו האלה בתחום ה- WCF הוא Juval Lowy מחברת IDesign שאת הספרים והמאמרים שלו ב- MSDN אני מאוד אוהב. ( ב-PDC האחרון הוא הרצאה על Software in the Energy Economy, שווה לראות את הסרט. )

לפני כמספר ימים גדי מאיר  פנה אלי ושאל אותי מה הייתה רוצה ללמוד מ-Juval אמרתי לו "אני רוצה לדעת איך הוא מתכנן כארכיטקט מערכות גדולות בכנה מידה עולמי עם WCF", כנראה נשמה קולי ו-Juval יעביר סדנה כזאת בסוף החודש, אני כבר רשום, שווה.

 

WCF 4.0 - Service Discovery

פורסם בתאריך Dec 07 2009, 05:59 PM על ידי Vardi

WCF 4.0 - Service Discovery

סביר להניח כי כל ארכיטקט תוכנה הנאבק עם האתגרים של אפליקציה מרובת Services ומחשבים, ימצא את עצמו מתמודד, במוקדם או במאוחר, עם הצורך לספק Service Discovery.

הפתרון הקלאסי והותיק ביותר הוא UDDI

בפוסט זה אתמקד בפתרון של WCF 4.0 ה- WS - Discovery.

clip_image002

איך מוצאים את השירות שאנחנו מחפשים?

מה זה WS – Discovery?

זהו פרוטוקול שמתאר איך מתבצע תהליך הגילוי. בשלב הראשון שולח כל שרות שעולה הודעת Hello ב- Multicast.

clip_image004

בשלב השני, כאשר שרות או לקוח מחפש שרות הוא שולח הודעת Probe ב- Multicast.

clip_image006

כל שרות שמתאים לבקשת ה- Probe מחזיר ישירות למבקש Probe Match.

clip_image008

כאשר שרות יורד הוא שולח הודעת By ב- Multicast.

clip_image010

תיאור שסופק לעיל הוא סכמטי וכללי, פירוט מדויק של הפרוטוקול אפשר לקרוא כאן.

איך WS-Discovery ו-WCF עובדים ביחד?

1. צריך להוסיף ל- WCF Service ה- Endpoint מסוג udpDiscoveryEndpoint ( ראו פוסט קודם שלי על Kind ). זה EP שישלח את ההודעות Hello , Probe Match ו- By. ה- Kind למעשה שותל ב- Service Description תחת ה- Property Endpoints את DiscoveryEndpoint.

clip_image012

2. צריך להוסיף ל- Service Behaviors את ServiceDiscoveryBehavior כדי שהוא ישתול לכל EP תחת ה- Behaviors את EndpointDiscoveryMetadataInitalizer, בשביל שה- DiscoveryEndpoint יכול לדעת מה לענות כאשר הוא מקבל הודעת Probe. דוגמא לאיך מגדירים את ה- Discovery ב- WCF.
clip_image014
חשוב לציין שה- Discoveryלא מצריך כלום ממפתח ה- Service, רק להגדיר נכון את EP הקובץ הקונפיג.

3. איך נראה ה- Service Description ע"י הכלי WCF Debugger Visualizer.
clip_image016

4. צריך להגדיר Dynamic Endpoint בצד ה- Proxy כדי שנוכל למצוא את השרות המבוקש. לדוגמא:
clip_image018

בדוגמא כאן ה- CalcClient מחפש שרות שהחוזה שלו הוא ICalc וה- Binding שלו הוא NetTcpBinding.

איך מגדירים את ה- Multicast?

בקובץ קונפיג. דוגמא:

clip_image020

סיכום:

סוג ה- Discovery הזה נקרא Ad hoc והוא מאוד "יפה ונחמד" עד שמגלים שברוב הארגונים היכולת של ה- Multicast סגורה. ולכן יש עוד שיטה שמאוד מזכירה את UDDI והיא נקראת Managed Discovery, אך זה בפוסט הבא.

נקודה אישית:

אני חושב שהגילוי של השירותים לא צריך להתבצע ע"פ דרישה אלא להדחף ללקוחות. אני עושה את זה בתוך מערכות סגורות ע"י Distributed Cache, כל שרות שולח את הודעות ה- WS-Discovery ל- Distributed Cache וכל צרכן מושך אותם משם.

אשמח לענות לשאלות לכל מי שרוצה, אני זמין גם בקבוצה שלי בלינקדאין - I Love C# אשמח אם תצטרפו.

Mike Taulty Video Series on PRISM for Silverlight 3

פורסם בתאריך Dec 04 2009, 07:34 PM על ידי Vardi

WCF 4.0 – Kind Attribute & Standard Endpoint

פורסם בתאריך Dec 01 2009, 09:49 AM על ידי Vardi

WCF 4.0 – Kind Attribute & Standard Endpoint

מבין כל השיפורים בקבצי הקונפיג בגירסה 4 של WCF ( מאמר טוב בנושא ), אני הכי אוהב את ה- KIND. אני ביום יום מתעסק בבנית תשתיות ל-WCF וה-KIND נותן לי דרך להגדיר Endpoint תשתיתי שהמפתח של ה- Service לא צריך להיות מודע לו. לדוגמא : <"endpoint kind="mexEndpoint> כאשר מוסיפים את ה- MexEndpoint השרות שלי מקבל יכולות חדשות שבונה ה- Service לא עשה כלום, וקיבל ע"י הוספת EP תשתיתי יכולות חדשות.

MS נותנות לנו מספר EP תשתיתים אודותם נדון בפוסטים הבאים.

  • mexEndpoint
  •  discoveryEndpoint
  •  announcementEndpoint
  •  udpDiscoveryEndpoint
  •  udpAnnouncementEndpoint
  •  webHttpEndpoint

בפוסט זה אני רוצה להסביר איך אפשר לבנות KIND משלנו או במילים פשוטות StandardEndpoint, ויותר חשוב מזה מה הוא מסוגל לעשות ולמה הוא כל כך טוב לאנשי תשתיות.

KIND טוב לתשתיות !

הוא מאפשר לבוני התשתית לבודד קטע פונקציונלי בתוך EP עם קשר לשרות ( לדוגמא MEX ) מבלי שבונה השרות יהיה מודע לתשתית.

איך ה-KIND עושה את מה שהוא עושה?

כדי להשפיע על ה- Pipeline של WCF הכל צריך להיות בתוך ה- ServiceDescription. ה – KIND למעשה הוא מחלקה שיורשת מ- ServiceEndpoint והוא נכנס ל- ServiceDescription כ- EP לכל דבר. כ- EP הוא יכול להגדיר את הפרמטים הבאים בקובץ ה- CONFIG:

· Address

· Binding

· Contract

· bindingConfiguration

· endpointConfiguration

או במילים אחרות, הוא יכול להגדיר כל אחד ואחד מה- properties של המחלקה ServiceEndpoint, כלומר גם Behaviors. נקודה חשובה להבחנה: SE מסוגל לרדת למטה ( לחוזה ולמתודות ) אך לא לעלות למעלה ל- ServiceDescription.

clip_image002

כתוצאה מכך, כאשר מגדירים למשל את <"endpoint kind = "udpDiscoveryEndpoint> עדיין חייבים להוסיף את ה- Behavior מסוג <serviceDiscovery /> ידנית ל- serviceBehaviors.

clip_image004

איך אפשר לבנות KIND משלנו ?

1. יורשים את המחלקה ServiceEndpoint.

2. יורשים את StandardEndpointElement כדי שיהיה אפשר להשתמש במחלקה שבנינו בסעיף 1 ב- Config File.

3. ב - Config File צריך ללמד את WCF שיש אלמנט חדש.
clip_image006

4. מצ"ב דוגמאת קוד.

אשמח לענות לשאלות לכל מי שרוצה, אני זמין גם בקבוצה שלי בלינקדאין - I Love C# אשמח אם תצטרפו.