Debug aplicații mobile delphi

Intr-un articol anterior am făcut cu bucurie:

  • server de aplicații - - serverul DataSnap de „obicei“ VCL-aplicația care este capabil să perceapă „în afara“ echipei;
  • clientul DataSnap, care determină ne-a creat metoda „de la distanță“ (mașină de desktop care rulează aplicații DataSnap-server trebuie să fie „în aceeași rețea ca și divays aplicația client“, și anume:
  • Win32-asamblare client subțire în scopuri de depanare;
  • Android-app "client subțire".

Astăzi vom continua exercițiul nostru - aplicații mobile subiect razovom de depanare. De ce este eficient în dezvoltarea de aplicații mobile:

  • aplicații mobile în dezvoltarea de foarte bine testate / depanat ca Win32-montaj pentru comunicarea de testare cu baze de date, algoritmi, logica de afaceri, și tot ceea ce nu are nevoie de un dispozitiv de reală;
  • dar în cazul în care cererea este deja „căzut în ghearele utilizatorilor“ pe dispozitive reale, lansarea în modul de depanare destul de muncă intensivă. Aici, este de dorit să se „pune utilizatorul în flotare liberă“ și apoi urmări cu exactitate ce și modul în care el face și ce rezultatele în ceea ce privește variabilele interne / obiecte ale acestei aplicații mobile aduce.

Modificarea DataSnap-server - adăugarea de CodeSite

Deschideți grupul de proiect instituit în exercițiile anterioare. Ne amintim că DataSnap-serverul nostru este „de obicei VCL-aplicație“, așa că adăugăm capacitatea de a utiliza CodeSite și imediat a pus pe funcționalitate de afișare „out“.

Pe formularul de loc „butonul.“ Nouă componentă Mnemotehnică-l obzovom „buton pentru a Konopka“ (sper, dl Konopka iartă-mă, dar este foarte bun rima).

Răspunsul butonului va fi simplu:

Fiți atenți la CodeSiteLogging utilizări. Executați aplicația ca o „cerere“ (nu cred că încă despre client mobil). Facem click pe butonul - vezi Konopka!

Acum vedem că CodeSite - unele plus față de depanare la Delphi IDE. Foarte convenabil, de exemplu, eu folosesc adesea această ocazie pentru a face dreapta de conectare / interogare la baza de date. Puncte de întrerupere nu pune în sau pune-le Memo. Fereastra suplimentară apare în mod stabil bun, butoanele și are propriul mega convenabil de a utiliza. Desigur, înainte de a ne-am de-a lungul și IDE Delphi pentru depanare, dar în cazul mobilității este - soluția perfectă. Acum vom preda clientului „prelate“ nostru mobil Vechiul la DataSnap-server într-un mod civilizat.

Dar trimite „linii de depanare“ - nu este metoda noastră! Ia bynyu imediat. corn. Vom folosi:

  • (!) Posibilitatea de a trimite automat DataSnap obiecte de la client la server (!);
  • posibilitate CodeSite automat (!) pentru a face obiecte personalizate (!) și vizualizați-le într-o „fereastră viu logger“.

Adăugați un proiect nou modul Server (MyObjectClass.pas), în cazul în care zanesom Text nemudryaschy:

Listarea textul nu aduce din cauza trivialitate și refuzul său de a impune gusturile lor în termeni de denumire.

După aceea, un răspuns pic remake la butonul:

Pentru cele mai artistice în ceea ce privește limba kunshtyukov - onorăm articol Marco Cantu pe specificul compilator mobil. Ca cineva care „liber“ cauzele și diferențele în Win32 construiește / ARM.

Acum rulează aplicația când apăsați butonul, aceasta adaugă un „obiect“ în fereastra CodeSite:

Rețineți că „trimis la CodeSite“ obiect a fost mult timp ucis, dar în „caseta de viață“ va trăi atâta timp cât vrem să ne uităm la el. obiect Snapshot pentru o lungă perioadă de timp care trece prin fratele său real.

Metoda de expunere personalizate

Metoda se va arata ca acest lucru (face distractiv de semnături).

Care-i smecheria? Numai că această metodă va fi „scos“ prin faptul apariției sale în clasa dorită a modulului dorit. Dar poate metoda „externă“, astfel încât să ia în mod direct AMINTIND TObject (și chiar real polimorfă)? Uita COM, este - DataSnap. Astfel de trucuri sunt ținute aici (acorduri Notă cu privire la Delphi-client / C ++ Builder Server și vice-versa prea).

Compilați, executați fără depanare, lăsați în funcțiune a proiectului. Acum vom grăbi la obiectele server create în aplicația client.

Trimiterea de client obiect DataSnap Server

Pentru a pune în aplicare o astfel de necesitate program de proiect DataSnap-client pentru a adăuga o descriere a clasei. Faceți clic dreapta pe proiectul clientului - Adăugați. - alege fișierul MyObjectClass.pas:

Acum MyObjectClass.pas acest modul va fi utilizat în cadrul proiectului de client și server:

Asta e foarte pretentios (mine?) Trebuie să facem un mic pragrmaticheskoe digresiune. Realizate de mai sus înseamnă că, atunci când creați o aplicație client trebuie să fie serverul sursă accesibilă. Și vice-versa. Când creați o aplicație server (în acest caz, astfel încât mai relevant deoarece serverul servește nevoile clientului este conectat. Cu toate acestea, „de dragul de puritate“ (pentru a utiliza șablonul ca model pentru constructul arhitectural un sistem multi-hop), trebuie remarcat faptul că clientul cunoaște implementarea serverului. Din COM- astfel de aranjamente a introdus doar ideea de „ignoranță“ a implementării client server și client comunică doar interfețe obiect, lipsit de implementare. este necesar pentru implementările independență limba client și server, precum și soluția la situația, să găină „client vechi“ de lucru cu „noul server.“ Presupunând că avem un control complet al codului sursă al proiectului și client și server, această abordare pare a fi destul de rezonabil.

Asta e ceea ce am verificat „HostName“ proprietăți „Params“ ClientModuleUnit1 componenta SQLConnection1.

Acum, face „regenerare“ metoda (nota în versiunile anterioare ale articolului Delphi numit „proxy“, dar ma bazez pe utilizarea XE5).

Acum, clientul stie exact ce metode expuse de către server. Pentru cei care au citit textul cursiv de mai sus. Rețineți că nu a fost în acest loc „sursa de transmisie“ de la server la proiectul clientului. Ie ca pentru DataSnap funcționare normală, diviziunea în „declarație“ și „punerea în aplicare“ a urmat cu strictețe. Și cum este? Oh - DataSnap (de la Delphi IDE) „ponturi“ metodele expuse, și generează o clasă de clienți (Generează clase client DataSnap, așa cum se arată în imaginea de mai sus). Și în imaginea de mai jos:

Acum este posibil să se determine metoda client-server, care trece o trimitere la TObject.

Adăugați un al treilea buton:

Iar metoda codului serverului de apel:

Aici Vă rog să nu găsiți vina cu codul. În mod firesc, obiectul local pentru a trimite la serverul nu este prea mult sens (și să se gândească la crearea / distrugerea). În viața reală, obiectul de activitate (cel mai probabil) va face parte din colecția, astfel încât timpul de gestionare existența sa va fi o parte din responsabilitatea de cod a aplicației de nivel superior. Dacă avem nevoie pentru a trece la server „doar o valoare“ informații de depanare, atunci vom folosi metodele supraîncărcate Trimite serviciul CodeSite.

Am trimis doar obiectul link-ul TObject de la client la server DataSnap, în cazul în care vom continua pe același link-ul de TObject re-direcționat către CodeSite:

clienții de telefonie mobilă reconstruita iOS și Android au arătat performanță:

tablete mobile complet, ele pot deveni cu ușurință înstrăinați de sârmă. Și chiar din alte procedee de prelucrare camerei (aveți nevoie pentru a face o imagine panoramică).

Cu ajutorul nestingherită adăuga la server-o singură metodă DataSnap, puteți rezolva cu ușurință problema de depanare aplicații mobile client pentru iOS și Android.