Traseele curg din interior

Ce este un MVC imbricat? Cum funcționează trei servere backend Node, php-fpm și IIS într-un singur proiect? Pot rula un serviciu muzical pe laptopul meu? Și cum funcționează trackflow.com din interior?

Traseele curg din interior


La începutul proiectului, trackflow.com a fost însărcinat cu realizarea unui serviciu de muzică care:

În momentul lansării, am avut:

Deciziile pe care le-am luat la început

Deoarece avem mai mulți clienți planificați și site-ul va fi executat ca o aplicație web, vom separa sever baza de date (modelul) de vizualizări.

Vom separa modelul de reprezentare utilizând API-ul în format REST - o tehnologie independentă de platformă, ușor de implementat pentru toți clienții.

Formatul de transmisie este JSON. Au apărut discuții aprinse cu echipa iOS, dar prin forță brută i-au forțat să lucreze cu JSON - deci este mai convenabil pentru majoritate.

A fost clar că colaborarea cu mai multe servicii de la terțe părți ar aduce un element de întâmplare în activitatea site-ului și iOS și niciodată nu poți fi sigură că ceva se va întoarce la tine și, dacă se va întoarce, când. De asemenea, am dorit să avem un format comun de transfer de date pentru toate serviciile terților. În acel moment, sa născut ideea de a folosi Node.js ca un controler MVC ușor, care va interacționa asincron cu API-ul serviciilor terțe, obținând simultan rezultatele în forma dorită.

La rândul său, toate aplicațiile client și .NET au folosit MVC ca model intern. Iată pentru tine o matryoshka de la MVC :)

Mai mult, sa constatat că utilizarea Node.js pentru cererile de proxy propriu backend la Net nu este foarte convenabil - nod a fost link-ul în mod clar inutile și vom din această lucrare a salvat prin trimiterea de solicitări din partea clienților la backend .Net „direct“ prin Nginx.
Da, toate cererile sunt salvate prin nginx. Acest lucru ne salvează de problemele cu interogări între domenii, închide serverele backend din acces direct. De asemenea, nginx permite în cazul în care ceva neașteptat să redirecționeze cererile către un alt ansamblu / server.

La ce se scrie?

Backend-ul este scris în ASP.NET MVC 3. În lucrul la proiectele anterioare, pachetul horosho cu .NET MVC 3 sa arătat pe partea bună - API-ul REST se realizează ușor și frumos. Pentru a accesa baza de date, utilizați Entity Framework 4.2 beta.

Aplicația mobilă (iOS) este scrisă cu ajutorul unor dispozitive noi. În aplicație există multe elemente interesante: meniul de navigare, care se deschide prin periere; Măsurarea celulelor mesei; sistem pentru migrarea modelelor de date. Aplicația este deja în AppStore.

Partea client a site-ului este implementată de vmkcom folosind MVC folosind backbone.js + underscore.js bundle. Rutarea se efectuează pe baza pushState și folosește istoricul API în acele browsere unde este acceptat, în altele - hashtags.
Pentru a lucra cu DOM, raspunsurile bune ale jQuery.
Dintre caracteristicile interesante:

  • folosim playerul mediaelement.js HTML5 / Flash / SilverLight, care determină automat suportul browserului pentru un anumit codec și lansează plug-in-ul necesar pentru redare,
  • O conexiune socket.io este utilizată cu Node.js pentru a trimite notificări push pentru evenimente noi.

Total pentru întregul serviciu 4 nuclee, 340 GB Hdd, memorie de 8 GB: trackflow.com poate rula în condiții de siguranță pe un laptop :)

Articole similare