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.

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

איך אפשר לבנות KIND משלנו ?
1. יורשים את המחלקה ServiceEndpoint.
2. יורשים את StandardEndpointElement כדי שיהיה אפשר להשתמש במחלקה שבנינו בסעיף 1 ב- Config File.
3. ב - Config File צריך ללמד את WCF שיש אלמנט חדש.

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