Video: The Client Server Model | Clients and Servers (Nobyembre 2024)
Ang isa sa mga bagay na natagpuan ko na kawili-wili sa mundo ng pag-unlad sa nakaraang mga nakaraang buwan ay kung paano lumilipat ang mga modernong application sa paglalagay ng higit pa sa intelihensiya sa kliyente sa halip na server. Ang modelo ng client-server ay walang bago ng kurso: ito ang paraan ng tradisyonal na mga aplikasyon na itinayo nang maraming taon, na may mayamang mga aplikasyon ng kliyente na nakikipag-usap sa mga aplikasyon sa server. Ngunit sa panahon ng Web, at maging sa Web 2.0, ang pokus ay inilipat sa mga aplikasyon sa web kung saan ang kalakhan ng katalinuhan ay nasa Web server (karaniwang sa mga server ng application na nakabase sa Java) at ang kliyente ay isang simpleng pahina lamang sa Web isang browser kung saan sa tuwing nag-click ka, nag-load ka ng isang bagong pahina.
Ngunit kamakailan lamang ang pagkahinog ng HTML5, CSS, at lalo na ang JavaScript ay nangunguna sa mga developer na maglagay ng tunay na katalinuhan at tunay na pagproseso sa Web page mismo. Sa partikular na nakita namin ang pagtaas ng iba't ibang mga client-side na mga frameworks na nakabatay sa JavaScript na ginagawang mas madali upang lumikha ng matalinong mga front-end na tatakbo nang ganap sa loob ng isang modernong browser sa Web. Ang mga browser na kasangkot ay karaniwang mga batay sa Webkit engine, kasama ang Chrome at Safari, ngunit ang karamihan sa mga app ay tila mahusay na tumatakbo sa kasalukuyang mga bersyon ng Firefox at Internet Explorer. Nagtatapos ka sa isang mas kumplikadong pahina ng Web na nagbabago nang pabago, paghila ng data mula sa server kung kinakailangan.
Tatlong MVC frameworks partikular na tila nakakakuha ng pansin: Mga Backbone.js, Ember.js, at Angular.js. (Ang MVC ay nakatayo para sa model-view-controller - mahalagang ang arkitektura sa likod ng web client computing. Ang "js" ay nakatayo para sa JavaScript.) Talaga ito ay ang lahat ng isang paglaki ng AJAX (Asynchronous JavaScript at XML) na diskarte na tanyag sa nakaraang dekada o kaya, ngunit ang pagkuha ng mas mas matanda at halos pamantayan. Ang ideya ay upang maglagay ng higit pa sa estado at katalinuhan sa browser, pagkatapos ay kumonekta ang browser sa mga PINAKAMANGGAP na mga API sa gilid ng server.
Ang gulugod ay marahil ang pinaka basic at minimal sa mga frameworks na ito; ginagamit ito sa iba't ibang mga extent ng maraming mga tanyag na site. Lumaki si Ember sa isang balangkas na tinawag na Sproutcore na na-back up ng Apple, at isang mas komprehensibong balangkas na idinisenyo upang hayaan kang gumawa ng mga application na estilo ng desktop. Madalas itong ginagamit sa Bootstrap - isang hanay ng mga template para sa HTML at CSS na orihinal na nilikha ng mga empleyado ng Twitter. Angular ay kahalili ng Google na tila sa isang lugar sa pagitan ng - ang ilang mga tao ay nag-iisip na ito ay medyo mas nababaluktot o hindi bababa sa "mas kaunting opinion" kaysa sa Ember ngunit mas kumpleto kaysa sa Backbone. (Tandaan na tinutulak ng Google ang mga developer na gumamit ng Angular upang mapabuti ang kalidad ng coding, ngunit sa loob ay aktwal na gumagamit ng ibang, proprietary set na mga frameworks.) Kahit na ang Microsoft ay nagdagdag ng mga kawit sa Visual Studio para sa mga balangkas na ito.
Bilang ito sa Web, mayroong dose-dosenang mga kahalili. Ang isa sa mga kagiliw-giliw na narinig ko kani-kanina lamang ay ang Meteor, na idinisenyo upang gumana sa JavaScript sa parehong mga kliyente at server. Ngunit ito ay maaga pa rin, at hindi ko pa alam ang anumang mga tunay na gumagamit. Samantala, mas maraming mga developer ang naglalaro sa Node.js, na kadalasang ginagamit para sa pagpapatupad ng server-JavaScript.
Ang kalamangan ng naturang mga frameworks ay tila malinaw. Ang mga mayaman na aplikasyon ng web-client ay mas malakas kaysa sa manipis na mga aplikasyon ng kliyente kung saan tumatakbo ang lahat sa server, maaari silang magbigay ng isang mas mahusay na interface ng gumagamit, at mag-alok ng posibilidad ng impormasyon sa offline. Gamit ang mga frameworks maaari kang lumikha ng masaganang mga aplikasyon ng kliyente sa Web nang mas mabilis kaysa sa magagawa mo sa pamamagitan ng pagbuo ng lahat mula sa simula, at samantalahin ang mga komunidad na bumubuo sa paligid ng bawat isa sa kanila.
Marahil ang pinakamahalaga, maaari kang lumikha ng mga mobile application na sukat sa iba't ibang mga aparato nang hindi kinakailangang magsulat ng mga tukoy na katutubong aplikasyon. Mayroon pa ring magandang argumento na gagawin para sa mga katutubong app, na maaaring direktang matugunan ang mga tukoy na tampok ng bawat platform. Gayunpaman, natagpuan ng maraming mga developer ang naturang mga balangkas ay maaaring kapansin-pansing mapabilis ang pag-unlad ng cross-platform, lalo na kapag ginamit kasabay ng mga bagay tulad ng PhoneGap, isang bukas na mapagkukunan ng mobile na balangkas na binili ng Adobe at open-sourced sa proyektong Apache Cordova.
Siyempre, ang Mobile ay nagdadala ng sariling mga limitasyon, kasama na ang bilis ng mga processors, at marahil mas mahalaga, ang bilis ng - at kung minsan ay kulang ng pagkakakonekta. Ang isang kadahilanan na gusto ng mga tao sa mga app sa mga pahina ng Web ay madalas na maaari mong i-download ang pangunahing pag-andar sa Wi-Fi o isang mabilis na koneksyon at makuha lamang ang data na kailangan mo na nai-download, hindi ang buong disenyo. Malutas ng mga package tulad ng PhoneGap ang isyung ito sa pamamagitan ng paglalagay ng JavaScript sa isang nai-download na app.
Gayunpaman, may iba pang mga isyu sa naturang mga balangkas. Sa pamamagitan ng kahulugan ng paggawa ng higit pang pag-compute sa panig ng kliyente ay nagdaragdag ng pagiging kumplikado kumpara sa isang simpleng app ng server lamang, at sa katunayan, ang ilan sa mga drawback ng lumang modelo ng client-server ay bumalik. Kailangang pamahalaan ng mga tagabuo ang estado sa magkabilang panig. Ang code sa dalawang lugar ay nangangahulugang kailangan mong tumuon sa seguridad sa parehong mga lugar. Dahil ang isang koponan ng pag-unlad ay madalas na may ilang mga tao na nagtatrabaho sa client at iba pa sa server, nakakakuha ka ng mga karagdagang isyu sa komunikasyon. Sa kabilang banda, ang ilan sa mga mas lumang isyu ng client-server ay hindi bumalik, at sa halip ay panatilihin mo ang mga pakinabang ng Web software. Ito ay isang higit na pamantayan na hinimok, mundo na hinihimok ng komunidad, kaya hindi ka nakasalalay sa iisang pagmamay-ari na kapaligiran. Sa pamamagitan ng paghiwalayin ang mga kliyente at server-side na bahagi maaari ka ring magkaroon ng isang mas malinis, mas simpleng pagpapatupad ng server-side na ginagawa lamang ang pagproseso at hindi ang UI, at maaaring mangailangan ng mas kaunting mga mapagkukunan bilang isang resulta. Gayunpaman mayroon ka pa ring bentahe ng kakayahang i-update ang lahat ng mga kliyente nang sabay-sabay, dahil karaniwang ang browser ay naglo-load ng code mula sa server kapag ang app ay hinihimok.
Malinaw kaming nakakakita ng paglipat patungo sa mas matalinong mga kliyente sa Web - hindi sa bawat kaso, ngunit sa maraming mga bagong aplikasyon. Mas mahirap gawin ang mga mas matatandang application at ilipat ang mga ito sa modelong ito, ngunit nakikita rin namin ang ilan dito. Hindi ito ang dating modelo ng kliyente-server, ngunit mas malapit ito.