DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
ארכוויז מס’ 4 – מה הקונפיגורציה האופטימאלית ל-WCF? - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

ארכוויז מס’ 4 – מה הקונפיגורציה האופטימאלית ל-WCF?

Alik Levin     WCF היא טכנולוגיה המאפשרת הפעלת רכיבים מרחוק ויש לה מספר מקומות הניתנים לאופטימיזציה:

  • Proxy. יצירת Proxy היא פעולה לא קלה ולכן ניתן להפתות לבצע Caching ל-Proxy כדי לחסוך זמן הקמת Proxy מחדש. מצד שני Cached Proxy יכול ליצור מצב שבו הערוץ תקוע או תפוס ולא ניתן לבצע עוד פניות – משהו שחוסם יכולת Scalability.
  • אבטחת מידע. חלק מ-Bindings מפעילים Windows Integrated Authentication כברירת מחדל (wsHttpBinding) וחלק לא מפעילים אבטחת מידע בכלל (basicHttpBinding). זוהי הסיבה שישנו הבדל בין זמני תגובה בקונפיגורציה ברירת מחדל עובר שני ה-Bindings.
  • Serialization. ככל שהמסרים גדולים יותר יותר זמן מתבזבז על Serialization. למזלנו WCF מציע מנגנון חזק של הגדרה מה מסתרלז ומה לא ע”י [Datamember], הבעיה מתעוררת כאשר רוצים לשלוח ל-WCF מבנה נתונים מסוג DataSets – קשה אם לא אפשרי להתחיל להגדיר בתוך DataSet מסתרלז ומה לא – לא רוב לא מתעסקים עם זה ואז כל ה-DataSet מסתרלז, פעולה כבדה למדי.
  • עוד אבטחת מידע. ברגע שמסר עבר Serialization הוא עובר הגנה ע”י הצפנה וחתימה עבור Bindings שתומכים בזה – כמו wsHttpBinding. ככל שהמסר גדול יותר הפעולה ארוכה יותר. לא ניתן לבטל חתימה והצפנה של מסרים ע”י קונפיגורציה אלא בקוד בלבד
  • Throttling. ברמת ה-Service ניתן להגדיר מספר פרמטרים שחוסמים מספר פניות בו זמניות הניתנות לביצוע. ניתן לשחרר אותם עד אין סוף אבל אז נתקלים בחסם של Threads זמינים וכתוצאה פוגעים קיבולת של השרת. בשורות טובות – הגדורת אלה קצת יותר משוחררות ב-Net Fx 4.0

שורה תחתונה… אני אוהב אך שניק אלן, אחד האנשים הבכירים בקבוצת WCF, מגדיר:

clip_image001

מה השיקולים שלך לאופטימיזציה של WCF?

חומר רלוונטי

 

שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.

בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.

 

This template is made with PracticeThis.com plugin for Windows Live Writer

תוכן התגובה

cobyp כתב/ה:

הי אליק, נושא מעניין מאוד.

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

ששני פרמטרים חשובים הם בחירת ה- transport וה- encoder איתם נעבוד. האם TCP, HTTP או בכלל Namedpipes? האם לעבוד עם text או XML. תוכל להרחיב קצת בנושא ע"פ נסיונך?

# November 11, 2009 5:14 PM

Tal Ben-Shalom כתב/ה:

כאשר משתמשים ב - WCF Proxy, אחת הבעיות אם לא סוגרים/משחררים את ה - proxy. על מנת להתגבר על התלות במפתח שצורך את השירות וכן על מנת להרוויח יכולות caching (ועוד), כדאי להגדיר רכיב Service Agent.

רכיב זה מחצין את השירותים בצד ה - client, מאפשר לבצע caching לנתונים ובתוכו יוצרים את ה - proxy וסוגרים אותו. כך מי שמשתמש בשירות לא מתעסק בסוגיות אלו.

# November 11, 2009 5:24 PM

מיכאל רוף כתב/ה:

אליק - האם אתה יוכל להפנות אותנו ל-road map של המוצר ?

# November 11, 2009 7:05 PM

orenk כתב/ה:

תודה אליק. מעניין מאד!

# November 12, 2009 3:01 PM

alikl כתב/ה:

cobyp,

נושא בהחלט מעניין ובעל השפעה משמעותי על ביצועים

רעיון מדליק לפוסט הבא!

Tal,

אחלה תוספת!

תודה

מיכאל,

הייתי מסכם במילה אחת את הROADMAP:

REST

blogs.msdn.com/.../ten-more-pdc-2009-talks-for-web-service-developers.aspx

:)

אורן, תודה!!

# November 12, 2009 10:33 PM

memil כתב/ה:

אהם...

I beg to differ, כמו שאומרים...

אני מסכים ש- REST הוא חשוב מאוד, וכדאי ללמוד אותו לעומק, אבל לדעתי עוד מוקדם להכתיר אותו בתור "ה- Roadmap של WCF". עדיין יש מספר סוגי הודעות ש- SOAP יעביר בצורה מוצלחת יותר.

# November 14, 2009 7:11 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 5 and type the answer here:


Enter the numbers above: