DCSIMG
WCF 4 (Windows Communication Foundation) for Beginner - part 9 - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

WCF 4 (Windows Communication Foundation) for Beginner - part 9

 

ללמוד WCF פרק 9 - כתיבה של web style services חלק 2
 
 
נושאים בפרק 9:
סיכום הפרק הקודם.
שימוש במנגנון ה - caching של asp.net
הפעלה של השירות בעזרת ScriptManager גם כשהשירות יושב בשרת אחר מהדף המשתמש בו.
בפרק הבא.
 
 
סיכום הפרק הקודם.
בפרק 8 ראינו כיצד ניתן לכתוב web style services בעזרת הגדרה של webHttp behavior והגדרת המאפיינים שלו, כמו כן הכרנו את System.ServiceModel.Web.dll שמגדיר את WebGet ו - WebInvoke שבעזרתם ניתן לקבוע כיצד יהיה ניתן להפעיל את השירות ובאיזה פורמטים (JSON, XML), בפרק זה נראה עוד כמה דברים מעניינים בנושא.
 
 
שימוש במנגנון ה - caching של asp.net
אחד הדברים הבנויים באפליקצייות web זה מנגנון ה - caching, מסתבר שכתובים web style service ניתן להשתמש במנגון המובנה של asp.net כדי לייעל את ביצועי השרת.
 
ראשית יש להוסיף ל - service את AspNetCompatibilityRequirements כך:
 

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class Calc : ICalc

 

 
למתודות שאנחנו רוצים להשתמש ב - cache יש להוסיף את AspNetCacheProfile כך:
 

[AspNetCacheProfile("CalcCache")]

public int Add(int a, int b)

{

    return (a) + (b);

}

 
כעת יש צורך להוסיף לקונפיג את המקטע הבא:
 

<system.web>

  <caching>

    <outputCacheSettings>

      <outputCacheProfiles>

        <add name="CalcCache" duration="30" varyByParam="*"/>

      </outputCacheProfiles>

    </outputCacheSettings>

  </caching>

</system.web

 
המאפיין duration משפיע כמה שניות המידע ישמר במטמון, והמאפיין varyByParam משפיע כמה עותקים של הפניות ישמרו בזיכרון (כגרע הגדרתי * מכיוון שאני רוצה שכל פנייה לשירות אם פרמטרים אחרים ב - query string יחזירו תוצאות שונות, למידע נוסף)
 
דבר נוסף שצריך להוסיף בקונפיג (בתוך system.ServiceModel) הוא את המקטע הבא:
 

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

 
 
לאחר השינויים הללו גלישה לשירות עם אותם פרמטרים בטווח של 30 שניות תחזיר את התוצאה של החישוב מתוך המטמון ולא תפעיל את השירות לחינם.
 
 
הפעלה של השירות בעזרת ScriptManager גם כשהשירות יושב בשרת אחר מהדף המשתמש בו.
בפרק 7 ראינו כיצד אפשר להפעיל את השירות מ - javascript בעזרת ScriptManager, כידוע ל - AJAX יש חיסרון אחד - והוא - שלא ניתן להפעיל WebService ב - AJAX כשה - WebService ממוקם בשרת אחר מאשר הדף שמנסה להפעיל אותו, (פיתרון חלקי לבעייה)
ב - WCF אפשר לפנות לשירות מרוחק בעזרת ההגדרה הבאה בקונפיג:
 

<webHttpBinding>

  <binding crossDomainScriptAccessEnabled="true">

  </binding>

</webHttpBinding>

 

<endpointBehaviors>

  <behavior>

    <webHttp />

    <enableWebScript  />

  </behavior>

</endpointBehaviors>

 
(כמובן שכל חלק צריך להיות במקום המתאים בקונפיג)
 
 
בפרק הבא.
בפרק הבא נראה דוגמא ליצירת RSS Feed בעזרת WCF.
פורסם: Jan 23 2011, 12:13 PM by Shlomo | with no comments
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 8 and 1 and type the answer here:


Enter the numbers above: