DCSIMG
February 2011 - Posts - I Love C#
Sign in | Join | Help

I Love C#

Eyal Vardi

February 2011 - Posts

Offline Web Applications vs. Local Storage in HTML 5

פורסם בתאריך Feb 26 2011, 01:15 PM על ידי Vardi

בין כל הגימיקים של HTML 5 היכולות האלו הכי הרשימו אותי עד עכשיו. אני ממליץ בחום לקרוא את הפוסטים של סטיפאן:

1. Creating HTML5 Offline Web Applications with ASP.NET

2. ASP.NET and HTML5 Local Storage

אני מאמין שבעתיד הקרוב נראה הרבה תשתיות שנשענות על היכולות האלו.

לרשימת כל הפוסטים שאני ממליץ עליהם לחצו כאן:

http://www.google.com/reader/shared/evardi

Workflow Services with Correlation

פורסם בתאריך Feb 24 2011, 05:35 PM על ידי Vardi

Workflow Services with Correlation

יש לי יחסי האהבה שינאה עם WF. אני מאוד אוהב את ה- Designer ,היכולות של Tracing ו- Persistence, תוסיפו לזה את העבודה עם Windows AppFabric , נראה שהולכים לכיוון הנכון. אז איפה הבעיה? אני רוצה WF Services שרץ על מספר שרתים ושיש לי כלי מוניטור שבו אני רואה את התהליכים בצורה הרבה יותר ברורה ממה שיש ב-AppFabric.

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

התפקיד של ה- Correlation ב-WF מתחלק לשניים:

א. לתאם בין מספר הודעות.

ב. לתאם הודעה ל-WF Instant .

אפשר לעשות את זה בכמה דרכים, אני הולך להסביר על Content-Based Correlation. אין כמו להתחיל עם דוגמא:

clip_image001

ה-WF מתנהג כמו WS רגיל לחלוטין ואין שום דבר מיוחד, חוץ מזה שיצרתי אותו ע"י Drag & Drop.

ה- ReceiveOrder מגדיר את ה- Operation וארגומנטים של השרות, באמצע עושים איזו עבודה ומחזירים תשובה, ה- SendReplyToReceive מגדיר את הערך המוחזר. בקיצור Receive & Reply רגיל. אבל עכשיו אני רוצה לסבך את הסיפור ולהוסיף לסוף ה-WF את החלק הבא:

clip_image002

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

clip_image003

איך מסכרנים את ההזמנה לאישור הקרדיט של ההזמנה?

1. נשתמש בשדה מסוג CorrelationHandle וניתן לו את השם handle.

2. כאשר נקבל את ההזמנה ניצור WF Instance ונאתחל את ה- handle.

clip_image004

כאשר לוחצים על 3 הנקודות מקבלים את החלון הבא:

clip_image005

בחלון זה אנחנו בוחרים ליצור את ה-handle מסוג Query ובוחרים מתוך הארגומטים הנכנסים את הארגומנט שעל פיו נסכרן את ההזמנה לאישור הקרדיט.

3. באקטיביטי של ה-Receive השני, אישור הקרדיט להזמנה אנחנו מאתחלים את ה- CorrelatesWith עם ה-handle שאתחלנו בסעיף הקודם, ובנוסף אנחנו מאתחלים את ה- CorrelatesOn במספר ההזמנה.
clip_image006

שימו לב, שם ה-Key צריך להיות אותו דבר כמו שהגדרתם באתחול ה-handle ראו סעיף 2. ה-WF יעשה התאמת מפתחות ואז הוא יחפש לאיזה WF יש את אותו מספר הזמנה כדי לדעת לשייך את אישור הקרדיט להזמנה הרלוונטית.

זה נקרא באנגלית פשוטה : Content-Based Correlation, כי אנחנו עושים סכרון ע"פ תוכן ההודעה.

בפוסט הבא אני אתאר איך להריץ את השרות על מספר שרתים? והאם אפשר להריץ את זה בענן?

Pro Workflow 4.0 Book

פורסם בתאריך Feb 19 2011, 07:01 PM על ידי Vardi

pro4workflow224x296

ברצוני להמליץ על הספר הזה. הספר יסודי עם הרבה דוגמאות, קל לקריאה מצד אחד, אך מאוד יסודי. בקיצור שווה…( 936 עמודים )

Table of Contents
  1. A Quick Tour of Windows Workflow Foundation
  2. Foundation Overview
  3. Activities
  4. Workflow Hosting
  5. Procedural Flow Control
  6. Collection-Related Activities
  7. Flowchart Modeling Style
  8. Host Communication
  9. Workflow Services
  10. Workflow Services Advanced Topics
  11. Workflow Persistence
  12. Customizing Workflow Persistence
  13. Transactions, Compensation, and Exception Handling
  14. Workflow Tracking
  15. Enhancing the Design Experience
  16. Advanced Custom Activities
  17. Hosting the Workflow Designer
  18. WF 3.x Interop and Migration

מחשבות על ASP.NET MVC Services

פורסם בתאריך Feb 10 2011, 01:26 PM על ידי Vardi

מחשבות על ASP.NET MVC Services

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

clip_image001

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

clip_image002

במילים פשוטות אין "Unified Programming Model" ויש פה 5 טכנולוגיות שונות שנשענות על WCF. מה קרה? למה כל פעם מבטיחים לנו הבטחות זו הטכנולוגיה... ואחרי מספר שנים מעטות הדברים משתנים. אני מאמין שאנחנו צריכים להבין את היסטוריה כדי לחזות את העתיד. לכן אני אנסה להסביר למה צצו לנו 5 טכנולוגיות חדשות וזה לא הסוף.

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

1. Web Http Services
מתמקד רק בערוץ של ה-HTTP ולכן היכולות שהוא מוסיף זה בעיקר היכולת לעבוד ב- REST ועם JSON.

2. WCF Data Services & WCF RIA Services
טכנולוגיות אלו נשענות על סעיף 1 ומוסיפות את התמקדות בהעברת הנתונים מנקודה לנקודה (OData). כלומר כותבים פחות Operation ומתמקדים יותר במידע, תקינות המידע וסכרון המידע בין השרת ללקוח.

3. WCF Workflow Services
מתמקד בתהליכים, ולא ב-Operation כמו שרות רגיל. אפשר להרחיב עוד, לא בפוסט זה.

ועכשיו לקו התחתון:

כתבתי את הקדמה זו כדי שאני אוכל להסביר לכם למה הדבר הבא זה ASP.NET MVC Services . ( ואני מקווה שמיקרוסופט יאמצו את השם ).

הנחות יסוד:

1. אני מדבר רק על שירותים שעובדים ב- HTTP.

2. שירותים שרצים תחת ASP.NET.

מה הצורך ב- ASP.NET MVC Services?

clip_image003

הצורך בלכתוב Service אחד שיכול ע"פ הצרכן להחזיר או מידע בלבד,( כלומר מחלקה ע"פ איזה מנוע של Serialization שתבחרו, (SOAP, JSON, או מידע + תבנית שיוצרת View, שזה הכוח של ה-Controller שיכול לעבד את הבקשה ולהכין את המדיע לעיבוד ע"פ התבנית שתבנו ב-View באמצעות ה-Rezor למשל. כך אני מקבל שרות אחד בלבד שאם צריך הוא יכול להחזיר את המידע בתוך תבנית.

דוגמא:

נניח שבניתי שרות שמחזיר את רשימת העובדים שיש להם יום הולדת באותו חודש. אם הצרכן הוא WPF או Silverlight אני אחזיר את המידע כמידע בלבד, לעומת זאת אם הצרכן הוא דפדפן אני אחזיר את המידע בתוך HTML. ומה אם הצרכן הוא אפליקציה וורד? אני יכול להחזיר את המידע כ-Open XML ולקבל מסמך וורד מעוצב עם רשימת העובדים שיש להם יום הולדת.

סיכום:

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

אשמח לשמוע את דעתכם J