4.12.2019

Indexers - IEnumerable - תקשורת

Indexers
בכל List ניתן לגשת לרשומה לפי המספר שלה כמו במערך  
לדוג'
בתוך משפחה יש List של ילדים ואנחנו רוצים לקבל את השם של הילד השישי במשפחה
Console.WriteLine(levi.Children[5]);

הבעיה שבמידה ויש רק 4 ילדים המערכת תעוף
כ"כ אם רוצים לקבל מיקום לפי שם 
לכן נשתמש ב –  Indexers  עם מאפייני  \ get set


דוג' לחיפוש לפי מיקום + הודעת שגיאה לערך לא קיים

public string this[int i]
        {
            get { return Children[i]; }
            set
            {
                if ((i < Children.Count) && i > -1)
              
                    Children[i] = value;
                       else
                        throw new IndexOutOfRangeException($"{value} child is out of range");   
            }
       


קבלת מיקום לפי שם (טקסט)
public int this[string name]
        {
            get
            {
                return Children.IndexOf(name);
            }
        }




IEnumerable
כל Foreach הוא פונקציה שמאחורי הקלעים רצה על מה שמעבירים לה ומחזירה את הערך שהתבקש  - ניתן גם לערוך את הפונקציה בהתאם לצרכים שלנו
לדוג' במקרה שלנו שיש לנו מחלקה של משפחה שמורכבת מאבא אמא ורשימה של ילדים אם נרצה לקבל את כל שמות בני המשפחה נצטרך לבקש את שם האב ואת שם האם ואח"כ לעבור על רשימת הילדים
IEnumerator מאפשר לערוך את ה Foreach הפונקציה נמצאת בחלקת IEnumerable ולכן נבצע הורשה למחלקה ונממש את הפונקציה IEnumerator
  yield return – הוספת ערך להחזרה


class Family : IEnumerable
    {
        public string Aba { get; set; }

        public string Ama { get; set; }

        public List<string> Children { get; set; }

        public IEnumerator GetEnumerator()
        {
            int index = 1;
            yield return ($"Aba name is {Aba}");
            yield return ($"Ama name is {Ama}");

            foreach (var child in Children)
            {
                yield return ($"child {index} - name is {child}");
                index++;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Family levi = new Family { Aba = "dvid", Ama = "shira" };
            levi.Children.AddRange(new[] { "dina", "rina", "gal" });


            foreach (var item in levi)
            {
                Console.WriteLine(item);
            }
        }
    }




ASP.NET  הקדמה
 ASP.NET סביבת פיתוח של מייקרוסופט עם תשתיות לWEB  
אינטרנט – שיתוף משאבים – server נותן המשאב.  Client  מקבל המשאב
Server – כדי שאתר האינטרנט יהיה נגיש לכולם, עליו להיות מאוחסן בשרת ייעודי. מה שבפועל מאוחסן בשרת הוא קובצי האתר עצמו, המתורגמים באופן מסוים כך שייראו ויזואלית לגולשים כתוכן (בין אם כטקסט, כתמונות וכן הלאה). שרת האינטרנט הינו מחשב חזק מאד, שיכול לספק מענה למספר רב מאד של אתרים. השרת מחובר לאינטרנט לאורך כל שעות היום והלילה, כך שכל אתר שמאוחסן בו נגיש בכל זמן נתון.
שרתים מובילים בשוק IIS  של מיקרוסופט \ apache

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

מקובל להשתמש במודל ה-OSI, המציע חלוקה לשבע רמות של הטיפול בנתונים. הנתונים עוברים מן הרמה הגבוהה לנמוכה בזמן שידור, ובכיוון ההפוך בזמן קליטה. חלוקה זו איננה נשמרת על ידי כל הפרוטוקולים, אך היא משמשת מסגרת לדיון ולהבנה בתחום,
 בין אותה שכבה בשני מחשבים שונים מוגדר פרוטוקול. פרוטוקול תקשורת מגדיר בדרך כלל את צורתן ותוכנן של חבילות נתונים. חבילה בדרך כלל מורכבת מפתיחה (header) - שמכילה מידע אודות הצד השולח, הנמען ופרטים טכניים שונים הקשורים בחבילה, מידע - הנתונים שצריכים לעבור, וסוגר (footer) - סימן מוסכם שתפקידו להודיע על סוף החבילה. הפרוטוקול גם קובע כללי שידור, כללים להכרזה על קיום קשר ("הלו") ועל הפסקתו ("להתראות").
אותנו כתכניתנים מעניינת רק שכבת היישום (האפליקציה). השאר שייך לאנשי רשת \ אבטחת מידע


פרוטוקולים עיקריים
·         FTP  File Transfer Protocol הוא פרוטוקול תקשורת מבוסס TCP להעברת קבצים בין מחשבים
·         SMTP Simple Mail Transfer Protocol : פרוטוקול פשוט להעברת דואר
·         HTTP הוא פרוטוקול תקשורת שנועד להעברת דפי HTML ואובייקטים שהם מכילים (כמו תמונות, קובצי קול, סרטוני פלאש וכו') ברשת האינטרנט וברשתות אינטראנט.

URL -  - Uniform Resource Locator מַעַן מַשְׁאַבִּים אָחִיד . כתובת של דף אינטרנט
הכתובת מורכבת מ3 חלקים  איך > איפה > מה
·         איך – מה פרוטוקול התקשורת – HTTPS
·         איפה – איפה נמצא המשאב כתובת IP או לחילופין שם של הכתובת -  wikipedia.org
·         מה – הנתיב של הדף בתוך האתר-  www.w3schools.com/jquery

URI - מזהה נתיב למקור מידע (Resource) באופן חד חד ערכי. ה-URI מהווה בפועל הרחבה של URL, כך שניתן לזהות כל מקור מידע בעזרתו ולא רק דפי אינטרנט.

אין תגובות:

הוסף רשומת תגובה

MVC

Web api Front end (צד משתמש) שולח http request     כל אתר מכל מכשיר יכול להתחבר ולקבל נתונים (אין אפליקציה) ולא משנה באיזו שפה ה...