Menu
עברית Русский
מכללת פרקטיקיו
- מתחילים ללמוד חינם -
קורסי תכנות / סייבר / ניהול רשת

Performance - MTOM

קורסים למנהלי רשת מסלול מנהלי רשת
עם התמחות בשרתי מיקרוסופט
מסלול סייבר והאקינג - Hacking מסלול תקשורת ואבטחת מידע
Cisco CCNA & FortiGate & Checkpoint
מומחה ווירטואליזציה
VMware & Hyper-V
מסלול לינוקס ו-DevOps מומחה ענן של אמזון - AWS מומחה ענן של מיקרוסופט - Azure מומחה ענן של גוגל - GCP מומחה שרתי SCCM - System Center
של מיקרוסופט לארגונים גדולים
קורסי תכנות מסלול Full Stack דוט-נט
יסודות התכנות
מסלול Full Stack דוט-נט
צד שרת - Backend
מסלול Full Stack דוט-נט
צד לקוח - Frontend
מסלול Full Stack Node.JS קורסי תכנות נוספים
Java / Python / PHP
מפתח אפליקציות - אנדרואיד - אייפון מפתח משחקי מחשב - Unity מפתח תוכנות לוונדוס - WinForms מסלול DBA - דטה אנליסט
התמחות במסדי נתונים – SQL
בדיקות תוכנה - QA בדיקות תוכנה - QA - אוטומציה בדיקות תוכנה - QA - בדיקות ידניות בדיקות תוכנה - QA - קורסים נוספים המלצות תלמידים על PracticU
Performance - MTOM

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

שלבי העבודה המוצגים בשיעור:

1. נקודת הפתיחה: נפתח פתרון חדש בשם MTOM עם שלושה פרויקטים: ConsoleHost לאירוח עצמי של השירות, ImageManager.Library כספריית השירות, ו-WinFormConsumer כפרויקט הצרכן. החוזה מגדיר ממשק בשם IImageManager עם שתי פעולות המסומנות OperationContract, האחת מחזירה את רשימת שמות התמונות עם החתימה string[] GetImageNames() והשנייה מקבלת שם קובץ ומחזירה את תוכנו עם החתימה byte[] GetImage(string imageName).
2. מימוש השירות: במחלקה ImageManager מממשים את שתי הפעולות. GetImageNames מאתרת את קבצי התמונות שבתיקיית Images תחת נתיב ההפעלה של המארח, ובונה מערך שמות בעזרת השורות FileInfo fi = new FileInfo(fullPathFiles[i]) והצבת שם הקובץ fileNames[i] = fi.Name לפני return fileNames. GetImage מוגדרת עם החתימה public byte[] GetImage(string imageName) וקוראת את קובץ התמונה המבוקש מתיקיית התמונות בעזרת File.ReadAllBytes ומחזירה את מערך הבתים.
3. הגדרת ה-endpoint: לאחר יצירת קובץ ה-config של המארח נפתח עורך הקונפיגורציה של WCF, שם נוצר endpoint בשם ImagesEndpoint עם כתובת מקומית בפורט 6086 תחת הנתיב images, binding מסוג basicHttpBinding, והחוזה ImageManagerLibrary.IImageManager.
4. ה-binding וקידוד MTOM: בעורך הקונפיגורציה נוצר binding חדש בשם binaryOverHTTP המבוסס על basicHttpBinding, ובמאפייניו משנים את הגדרת קידוד ההודעות מהערך Text אל הערך Mtom. טקסט העזרה של ההגדרה מסביר: "Whether MTOM or Text/XML is used to encode SOAP messages."
5. טופס הלקוח: בפרויקט הצרכן נבנה טופס בשם ImagesForm ובו תווית Select Image:, תיבת רשימה בשם cboImage ופקד תמונה בשם picSelectedImage. בראש המחלקה מוגדר השדה ImagesManagerClient service = new ImagesManagerClient(), ב-constructor מאוחזרים את שמות הקבצים בשורה string[] imageFiles = service.GetImageNames() ומוסיפים אותם לרשימה עם cboImage.Items.AddRange(imageFiles), ובאירוע הסגירה של הטופס סוגרים את מופע השירות.
6. הרצה ראשונה ושגיאת המכסה: במאזין SelectedIndexChanged של תיבת הרשימה מאחזרים את הבתים בשורה byte[] imageBytes = service.GetImage(cboImage.SelectedItem.ToString()), כותבים אותם לקובץ בעזרת File.WriteAllBytes שה-IntelliSense שלה מתאר Creates a new file, writes the specified byte array to the file, and then closes the file. If the target file already exists, it is overwritten. ועבור פרמטר הבתים bytes: The bytes to write to the file., ואז טוענים את התמונה מהקובץ שנכתב אל הפקד בעזרת Image.FromFile. בהרצה הופיע דיאלוג CommunicationException was unhandled עם ההודעה "The maximum array length quota (16384) has been exceeded while reading XML data.", כלומר מכסת ברירת המחדל של מספר הפריטים במערך קטנה מכדי לקרוא את התשובה.
7. התיקון בקונפיגורציה של הלקוח: בקובץ ה-config של הצרכן נערך ה-binding: מוסיפים בתוך הגדרות ה-readerQuotas את הערך maxArrayLength="500000" לצד maxBytesPerRead="4096" ו-maxNameTableCharCount="16384", וכן מגדירים messageEncoding="Mtom", כך שגם הלקוח עובד בקידוד MTOM ומכסת המערך מוגדלת מ-16384 אל חצי מיליון.
8. שיפור בעזרת MemoryStream: במקום לכתוב את הבתים לקובץ ולקרוא אותו מחדש מהדיסק, יוצרים זרם זיכרון מתוך מערך הבתים בעזרת MemoryStream, שה-IntelliSense שלו מתאר Initializes a new instance of the System.IO.MemoryStream class based on the specified byte array. ועבור הפרמטר buffer: The array of unsigned bytes from which to create the current stream., ואז נטענת התמונה ישירות מהזרם אל הפקד.
9. הרצה מוצלחת: לאחר התיקונים מוצגות התמונות כראוי: בבחירת Horse.jpg נטענת תמונת הסוס, ובריצה הסופית נבחר FlowerShip.jpg ותמונת הספינה מוצגת בפקד שמצב התצוגה שלו הוגדר Zoom.

בסיום השיעור למדנו להעביר תוכן בינארי ביעילות ב-WCF: בנינו שירות תמונות שמחזיר מערכי בתים, הגדרנו קידוד MTOM ב-binding של השרת ובקונפיגורציה של הלקוח, ראינו את כשל מכסת המערך של ברירת המחדל ואת תיקונה בהגדרות הקריאה, ושיפרנו את הטעינה בעזרת זרם זיכרון. השיעור הבא עוסק ב-Streaming.
סקר שוק נכון לתאריך – 01/09/2011

הסבר קצר על שיטת הלימוד אונליין

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


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

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


מה לעשות אם לא מבינים משהו בסרט?

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


האם יש לכם כיתות לימוד רגילות?

להשכיר כיתה + לשלם משכורת למרצה = 17 אלף ש"ח עלות הקורס לתלמיד.
אצלנו בסרטונים מקבלים אותו חומר לימוד
ואפילו יותר, כי אין מגבלה של זמן למרצה (כמו שיש בכיתה),
בנוסף מקבלים בדיוק אותה תעודה בינלאומית,
כי מבחן הוא מבחן אחיד לכולם המתבצע במרכז בחינות מורשה
והכי חשוב שמקבלים את אותם המרצים, שמלמדים בכיתה רגילה,
רק שצילמנו אותם בסרטונים
והמחיר בסרטונים רק 350 ש"ח ולא 17 אלף כמו בכיתה רגילה.



קיימים במכללה שני מסלולי לימוד:
  1. מסלול לימוד חופשי, בלי תעודה, להעשרת ידע כללי.
    מסלול לימוד חופשי, מתאים בעיקר למי שעובד בתחום וכבר יש לו תעודות והוא לא רוצה עוד מבחנים ותעודות.

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

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


מידע כללי:
1. חומר הלימוד מורכב ממאגר עצום ומסודר מאוד של סרטים מקצועיים, הניתנים לצפיה מהבית. מאגר זה כולל הרצאות מוקלטות בעברית בצורה מסודרת ע"י המרצים הטובים ביותר. רשימת הסרטים המלאה נמצאת בתפריט בצד ימין.
2. כל סטודנט במכללה מקבל שם וסיסמה לצורך גישה לשרת הקבצים שלנו.
השרת מכיל את כל התוכנות הדרושות ללימוד וכן חומר עזר
3. הקורסים מועברים בהתאם לסילבוסים של החברות המובילות: Microsoft, Cisco