סיכום
באמצעות מדריך זה למדנו כיצד לבצע תקשורת בין שתי נקודות קצה. אך חשוב לזכור כמה נקודות חשובות ובסיסיות אשר למדנו במדריך וישמשו אתכם בכל תוכנה אחרת אשר תכתבו בעתיד.
תקשורת היא נקודת מפתח חשובה באפליקציות רבות. פרוטוקול ה-TCP הוא הפרוטוקול הבסיסי ביותר והאמין ביותר. הוא נמצא בשימוש רחב מאוד ובמקומות שנים, בעיקר בהעברת דפי אינטרנט (HTTP), קבצים (FTP), פקודות (TELNET) ועוד…
לעומת זאת במשחקי רשת, שיחות רשת וכל דבר אשר מצריך מהירות משתמשים בפרוטוקול ה-UDP. עלינו לזכור כי פרוטוקול זה אינו אמין, לכן בחלק מן המקרים הפרוטוקול עובר מניפולציה נוספת (שכבה נוספת) בכדי להגדיל את אמינותו (Reliability) וידוע בשם "Reliable User Datagram Protocol". בשיטה זו משתמשים במשחקים דוגמת Call Of Duty.
שיטה לייעול פרוטוקול ה- TCP בשליחת ההודעות והאצתן הינה שינוי תכונת ה-NoDelay לאמת במחלקות TcpClient ו-TcpListener. בנוסף לכך, ניתן להוריד את הערכים של SendBufferSize ו-ReceiveBufferSize למספרים קטנים יותר באותן המחלקות. ערכים אלו קובעים את מספר הבייטים שנשלח ונקבל.
זכרו! עליכם לבחור בפרוטוקול שבו תשתמשו בהתאם לצורך התוכנה. לעיתים מתכנתים אף נוטים לשלב בין שני הפרוטוקולים וכך לנצל את היתרונות של כל אחד מהם. שאלו את עצמכם, האם המידע חייב להגיע אפילו אם זה כרוך באיטיות מסויימת? אם כן, פרוטוקול ה-TCP הוא הפתרון בשבילכם. אם המידע חייב להגיע במהירות האפשרית אך אינו חיוני, מומלץ להשתמש בפרוטוקול ה-UDP.
הקישור לזיכרון RAM לא נכון
זה לא נכון לקשר מכאן לזכרון RAM כי זה לא הנושא.
מדובר כאן על זכרון של תהליכים, לכל תהליך מוקצה אזור זכרון ואת אותו זכרון הוא לא יכול לחלוק עם תהליכים אחרים.
אין שום טעם לקשר את זה לזכרון RAM למרות שהזכרון הזה נמצא שם.
חוץ מזה מדריך מעולה!!
אתם אתר נפלא שתמיד מחכים אותי.
כתבה מעולה…
תודה רבה קודם כל, אפשר ללמוד המון.
אפשר לשפר בכך שתפרט מעט יותר על כל מיני מושגים שמבחינתך הם בסיסיים אך מבחינת אנשים שאתה בא ללמד הם ממש לא.
בכל אופן ישר כח ותמשיך כך.מצוין!
למה בדוד-מת?
הוא מת כבר לפני שנים.
לא רלוונטי
ב-.NET יש תשתית WCF שהיא תשתית ה-communication של ה-Framework.
לעבוד ישירות מול המחלקות המתוארות זה חסר טעם ולא נכון מבחינת ארכיטקטורה.
התשתית שהיא עשירה לאין ערוך ממה שתואר כאן, מאפשרת העברת נתונים באופן נוח ו"שקוף" ללקוחות המאזינים ולקבוע את צורת התקשורת (Named Pipes, וכיו"ב) בקונפיגרציה.
היא כמובן גם מאפשרת להתמודד עם תרחישים פשוטים ועד תרחישים מסובכים הרבה יותר בהם לדוגמה הנתונים נאספים ממספר מערכות בתהליך טרנזאקטיבי או תרחישים אחרים.
תודה רבה
מדריך מעולה ,נפל עלי כיאלו הזמנתי אותו אישית
בינוני.
מצטער שזה יוצא כ"כ תקיף, אבל הקוד שנכתב הוא ברמה בינונית מאוד.
כל העטיפה, השימוש בThreadים בצורה לא נכונה, עבודה מול UI בצורה לא נכונה, חוסר עבודה בקונבנציות…
ד"א, לבחור שכתב שכדאי לכתוב את זה בWCF – אתה טועה. WCF מתאים לשירותים (SOA במיוחד) ולא לתקשורת כזו. זה סתם overhead לא הכרחי.
סוגרים על פרוטוקול ושולחים בraw sockets כמו שהבחור עשה… אלא אם יש לך שרת מרכזי שמולו אתה עובד (כמו שlive messenger עובד) ואז הארכיטקטורה שלך צריכה להשתנות ואולי WCF יותר יתאים.
בכל מקרה- בחור, רצון יש אבל ידע לוקה בחסר.
6 -קצת צניעות לא תזיק וגם לא ידע
WCF לא קשורה בהכרח ל- SOA למרות שהיא דרך אופרטיבית אידיאלית להשיג SOA.
WCF זו תשתית התקשורת של ה-FRAMEWORK והיא מטפלת בהעברת נתונים באשר היא.
מבחינת ארכיטקטורה הרצון שלך הוא להגדיר מה אתה רוצה להעביר בצורה פשוטה בקוד (גישת AOP שבה עושה שימוש WCF)ולקבוע בקונפיגרציה האם אתה רוצה העברה פשוטה כמו NAMED PIPES או TCP או משהו כמו HTTP או כל פרוטוקול אחר בהתאם לצורך ול-HOST.
אתה יכול לעבור מצורת העברה אחת לאחרת ללא שינוי קוד.
לעיתים בכלל לא מדובר על העברת נתונים בין מכונות אלא על העברה פשוטה בין אפליקציות. זה בכלל לא משנה.
תכנות נכון הוא להבטיח את המחר, את היכולת לשנות ולגדול בלי שכתובים מהותיים.
במקרה שלך, אתה מציע לכתוב קוד "בסיסי" (שהוא אגב הרבה יותר מורכב מ-WCF) ומחר כשהצורך משתנה או גדל להחליף את כולו.
אני מצטער, אבל גם לך יש קצת שעורי בית להשלים.
מיושן – יש היום WCF
בשביל ליצור תקשורות ב
.NET
לא משתשמים בדרך הפרמטיבית הזאת עם על הכבוד , יש טכנולוגיה שנקראת
WCF ( שמחליפה את הדרך שאתה מציג)
שאתה כותב קוד קצר ומאחורי הקלעים עולם ומלאו(שמכיל את הדרך הזאת) כולל אבטחה ( RSA גם). ניתן לבחור בשלל אפשריות מתוך ה
WIZARD
אבטחה – סוג תקשורות TCP UDP WSHTTPS ועוד הרבה .
מטרת המדריך
שלום, מטרת המדריך אינה להציג למשתמשים את הדרך הפשוטה והקלה ביותר ליצירת תקשורת בסביבה זו. המטרה היא לא להעביר את המידע במספר השורות הקצר ביותר או בדרך הקלה ביותר. מטרת המדריך היא ללמד את המשתמשים ליצור תקשורת ברמה נמוכה יותר תוך כדי שהם לומדים כיצד חבילות המידע נשלחות ומה קורה בעצם ברקע. במדריך המשתמשים לומדים כיצד להשתמש ב-Multi-Threading ובקבצי DLL. אומנם הדרך שבה המידע הועבר בין ההליכים אינה הדרך הטובה ביותר ולא הכי נכונה אך היא המובנת ביותר. כמובן ניתן היה למשל להשתמש במחלקת ה-SynchronizationContext בכדי להעביר מידע בין ההליכים בצורה נכונה יותר.
למי שמגיב נגד, ולכותב המדריך
אני לא ראיתי אף מדריך שמסביר זאת
מי שחושב שהמדריך לא טוב, שיכתוב מדריך בבקשה.
אני כרגע לומד את זה ואני אומר תודה רבה למי שכתב את המדריך.
אני מקווה שיעזור לי.