Debug мобилни приложения Делфи

В предишна статия весело прави:

  • DataSnap сървър - сървър за приложения - на "обичайния" на VCL-приложението, което е в състояние да възприемат "извън" екип;
  • клиента DataSnap, което ни кара създаден метода на "дистанционно" (десктоп машина стартирани приложения DataSnap-сървър трябва да бъде "в същата мрежа като divays за кандидатстване клиент", а именно:
  • Win32-сглобяване на тънък клиент за целите на отстраняване на грешки;
  • Android-приложение "тънък клиент".

Днес ние ще продължим нашето упражнение - тема razovom отстраняваме мобилни приложения. Защо е ефективен в разработването на мобилни приложения:

  • мобилни приложения в развитието на много добре изпитан / отстраняване на грешки, тъй като Win32-събрание за тестване на комуникация с бази данни, алгоритми, бизнес логика и всичко, което не изисква истинско устройство;
  • но ако приложението вече е "попаднал в лапите на потребителите" на реални устройства, стартирането в режим на отстраняване на грешки доста трудоемко. Ето, това е желателно да се "сложи на потребителя в свободно плаване" и след това следите точно какво и как той се справя и какви са резултатите по отношение на вътрешните променливи / обекти на това мобилно приложение носи.

Модификация DataSnap-сървър - добавяне CodeSite

Отворете групата на проект, създаден по силата на предишните упражнения. Ние помним, че DataSnap-сървър е нашата "обичайния VCL-приложение", така че ние сме добавяне на възможността за използване на CodeSite и веднага постави на функционалност дисплей "навън".

Във формуляра се постави нова "бутона." Компонент Мнемоника го obzovom ", за да Konopka" (Надявам се, г-н Konopka ми прости, но тя е много добра рима).

Отговорът на бутона ще бъде проста:

Обърнете внимание на CodeSiteLogging на приложения. Стартирайте приложението като "молба" (все още мисля за мобилен клиента). Ние щракнете върху бутона - виж Konopka!

Сега ние виждаме, че CodeSite - някои грешки допълнение към Delphi IDE. Много удобно, например, често се използва тази възможност, за да се вземе правилното свързване / заявката към базата данни. Гранични не слагат в или пуснати сам Memo. Допълнителна се появява прозорец, стабилно добри, бутоните и разполага със собствен мега-удобен за използване. Разбира се, преди да сме се разбирали и Delphi IDE за отстраняване на грешки, но в случай на мобилност е - идеалното решение. Сега ще научи нашия мобилен клиент "наклон" старата към DataSnap-сървър в един цивилизован начин.

Но изпрати "отстраняване на грешки линии" - това не е нашият начин! Вземете веднага bynyu за. рог. Ние ще използваме:

  • (!) Възможността за DataSnap автоматично изпращане на обекти от клиента към сървъра (!);
  • възможност CodeSite автоматично (!), за да се направи по поръчка обекти (!) и да ги визуализира в "прозорец на живо дървар".

Добавете проект на нов модул сървър (MyObjectClass.pas), където zanesom nemudryaschy текст:

Обява текста не носи поради своята незначителност и нежелание да се наложи на техните вкусове по отношение на именуване.

След това, малко римейк отговор на бутона:

За най-артистична гледна точка на език kunshtyukov - почитат статията Марко Канту от спецификата на мобилния компилатор. Като човек, който "безплатни" причини и различия в Win32 / ARM изгражда.

Сега работещо приложение, когато натиснете бутона, той добавя "обект" в прозорец CodeSite:

Имайте предвид, че "изпраща до CodeSite" обект от дълго време е бил убит, а в "жив кутия" ще живеят толкова дълго, колкото ние искаме да го погледне. Snapshot обект за дълго време минава през истинското му брат.

метод на експозицията по поръчка

Методът се ще изглежда така (присмива на подписи).

Каква е уловката? Само че този метод ще бъде "изнесе" от факта на възникването му в желаната класа на желания модул. Но може метода "външен", така че директно да вземе ПРИПОМНЯ TObject (и дори реално полиморфна)? Забравете COM, това е - DataSnap. Такива трикове Тук се провеждат (имайте предвид, акорди на Delphi-Client / C ++ Builder сървър и обратно също).

Събиране, работи без грешки, да продължи да работи по проекта. Сега ние ще се втурне към сървърни обекти, създадени в заявката на клиента.

Изпращане на клиента обект DataSnap сървър

За да се приложи такава схема нужда, за да DataSnap-клиент на проекта, за да добавите описание на класа. Щракнете с десния бутон върху проект на клиента - Добавяне. - изберете MyObjectClass.pas файл:

Сега MyObjectClass.pas този модул ще бъде използван в проекта на клиента и сървъра:

Това е много придирчив (ме?) Трябва да направим малък отклонение pragrmaticheskoe. Произведено по-горе означава, че при създаването на клиентско приложение трябва да бъде достъпен на сървъра източник. И обратното. Когато създадете сървър за приложения (в този случай, така че по-подходяща, защото сървърът обслужва нуждите на клиента се записва. Въпреки това, "в името на чистотата" (за използване на шаблона като модел за архитектурната конструкция система за мулти-хоп) следва да се отбележи, че клиентът знае реализацията на сървъра. От COM- такива договорености просто въвеждат идеята за "невежеството" на изпълнението на клиент-сървър и клиент комуникира само обект интерфейси, лишени от прилагането му. Той е необходим за език за независимост на клиентски приложения и сървър, както и решение на ситуацията, за да кокошка "стар клиент" работи с "новия сървър." Ако приемем, че имаме пълен контрол на изходния код на проекта и клиента и сървъра, този подход изглежда е доста разумно.

Това е, което ние сме проверили "HostName" имоти "Params" SQLConnection1 компонент ClientModuleUnit1.

Сега направи "регенерация" метод (бележка в предишните версии на Delphi перо, наречено "пълномощник", но аз се разчита на използването на XE5).

Сега клиентът знае какво точно методите, изложени от сървъра. За тези, които четат курсив текст по-горе. Имайте предвид, че не е на това място, "източник предаване" от сървъра към проекта на клиента. Т.е. като за нормална работа DataSnap, разделението на "декларация" и "изпълнение" строго да се спазва. И как е? О - DataSnap (от Delphi IDE) "избира", изложени методи и генерира клас клиент (Генериране DataSnap класове клиенти, както е показано на снимката по-горе). И на снимката по-долу:

Сега е възможно да доведе до метода на клиент-сървър, минавайки позоваване на TObject.

Добавете една трета бутон:

И метода на кодовия сървър на разговор:

Тук ви помоля да не се намери виновен с кода. Естествено, на местния обект за изпращане на сървъра не е много смисъл (и да се мисли за създаване / унищожаване). В реалния живот, бизнес обекта (най-вероятно), ще бъде част от колекцията, така че времето му управление неговото съществуване ще бъде част от отговорността на кода на приложението по-високо ниво. Ако ние трябва да се премине към сървъра "просто стойност" информацията за грешки, а след това ние използваме претоварени методи Изпращане CodeSite услуга.

Ние току-що изпрати обект на TObject връзка от клиента към сървъра на DataSnap, където ние продължаваме в същата връзка TObject пренасочени към CodeSite:

Възстановен мобилни клиенти за IOS и Android са показали ефективността:

Мобилни таблетки напълно, те лесно могат да се отчуждават от жицата. И дори от друга стая на труд (което трябва да се направи панорамна снимка).

С помощта на безпрепятствен добавите към DataSnap сървъра само един метод, можете лесно да се реши проблема с отстраняване на грешки на клиентите на мобилни приложения за IOS и Android.