בית חשיבה קדימה החזרת מחשוב לקוח-שרת?

החזרת מחשוב לקוח-שרת?

וִידֵאוֹ: ª (נוֹבֶמבֶּר 2024)

וִידֵאוֹ: ª (נוֹבֶמבֶּר 2024)
Anonim

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

אך לאחרונה התבגרותם של HTML5, CSS, ובמיוחד JavaScript, מובילה את המפתחים להציב אינטליגנציה אמיתית ועיבוד אמיתי בדף האינטרנט עצמו. בפרט ראינו את עלייתם של מגוון מסגרות מבוססות JavaScript בצד הלקוח שמקלות על יצירת חזיתות חכמות הפועלות לחלוטין בדפדפן אינטרנט מודרני. הדפדפנים המעורבים הם בדרך כלל כאלה המבוססים על מנוע ה- Webkit, כולל Chrome וספארי, אך נראה כי מרבית האפליקציות פועלות טוב גם בגירסאות הנוכחיות של Firefox ו- Internet Explorer. בסופו של דבר דף אינטרנט מורכב יותר שמשתנה באופן דינמי, מושך נתונים מהשרת לפי הצורך.

נראה כי שלוש מסגרות MVC במיוחד משיגות את תשומת הלב: Backbone.js, Ember.js ו- Angular.js. (MVC מייצג בקר מודל-מבט - זה בעצם הארכיטקטורה העומדת מאחורי מחשוב לקוח אינטרנט. ה- "js" עומד על JavaScript.) בעיקרו של דבר זה כל התפתחות של גישת ה- AJAX (JavaScript ואסינכרוני XML) הפופולרית בעשור האחרון או כך, אבל הופכים הרבה יותר בוגרים וכמעט סטנדרטיים. הרעיון הוא להכניס יותר של המדינה והאינטליגנציה בדפדפן, ואז לדפדפן להתחבר לממשקי API של REST בצד השרת.

עמוד השדרה הוא אולי הבסיסי והמינימלי ביותר של המסגרות הללו; זה רגיל להרחבה על ידי אתרים פופולריים רבים. אמבר צמחה מתוך מסגרת בשם Sproutcore שאפל גיבה, והיא מסגרת הרבה יותר מקיפה שנועדה לאפשר לך לבצע אפליקציות בסגנון שולחן העבודה. משתמשים בו לעתים קרובות באמצעות Bootstrap - סט תבניות ל- HTML ו- CSS שנוצרו במקור על ידי עובדי טוויטר. זוויתית היא האלטרנטיבה של גוגל שנראית כאילו נמצאת איפשהו בין לבין - יש אנשים שחושבים שהיא קצת יותר גמישה או לפחות "פחות דעתנית" מאמבר אך מקיפה יותר מאשר עמוד השדרה. (שימו לב שגוגל דוחפת את המפתחים להשתמש ב- Angular כדי לשפר את איכות הקידוד, אך בפנים משתמשים בפועל במסגרות קנייניות שונות.) אפילו מיקרוסופט הוסיפה ווים ל- Visual Studio למסגרות אלה.

היות והרשת, יש עשרות אלטרנטיבות. אחד המעניינים יותר ששמעתי עליהם לאחרונה הוא Meteor, שנועד לעבוד עם JavaScript הן מצד הלקוח והן מצד השרת. אבל זה עדיין מוקדם מאוד, ואני עוד לא מכיר משתמשים ממשיים. בינתיים יותר מפתחים משחקים עם Node.js, המשמשים לעתים קרובות ליישומי JavaScript בצד השרת.

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

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

נייד כמובן מביא מגבלות משלו, כולל מהירות המעבדים, ואולי חשוב מכך, המהירות - ולעיתים חוסר הקשר -. אחת הסיבות שאנשים אוהבים אפליקציות בדפי אינטרנט היא שלעתים קרובות תוכלו להוריד את הפונקציונליות הבסיסית דרך Wi-Fi או חיבור מהיר ופשוט להשיג את הנתונים הדרושים לכם, ולא את כל העיצוב. חבילות כמו PhoneGap פותרות בעיה זו על ידי הכנסת JavaScript לאפליקציה שהורדת.

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

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

החזרת מחשוב לקוח-שרת?