Аппараттық және бағдарламалық қамтамасыз етуді орнату

Қолданбаның сервер жағы оның қалай жұмыс істейтіні. Мобильді қосымшаларды әзірлеу: Серверді синхрондау

Клиент-сервер қосымшасының серверлік жағын әзірлеу архитектуралық дизайннан басталады. Көп нәрсе архитектураға байланысты: қолданбаның кеңеюінен оның өнімділігіне және қолдау/техникалық қызмет көрсетудің қарапайымдылығына дейін.

Ең алдымен, деректердің серверге қалай орналастырылатынын және клиенттен келетін сұраулар қалай өңделетінін анықтау керек. Сондай-ақ серверлік деректерді кэштеуді ұйымдастыруды ойластыру қажет.

Деректер алмасу хаттамалары мен деректерді беру форматтары туралы шешім қабылдау қажет.

API (application programming interface) – интерфейс қолданбалы бағдарламалау. Неғұрлым түсінікті тілде бұл серверге сұраныстар жиынтығы, соңғысы оны түсінеді және дұрыс жауап бере алады. API сервер логикасының функционалдығын анықтайды, ал API бұл функцияның жүзеге асырылу жолын қысқартуға мүмкіндік береді. Басқаша айтқанда, API жалпы клиент-сервер инфрақұрылымының қажетті бөлігі болып табылады.

JSON және XML салыстырыңыз. Қолдану түріне байланысты хаттамаларға мысал келтіріңіз.

Көп ағынды

Қазіргі бағдарламалаудың негізгі аспектілерінің бірі - көп ағындылық. Көп ағынның көмегімен біз орындалатын қолданбадағы бірнеше ағындарды таңдай аламыз әртүрлі тапсырмаларбір мезгілде.

Multithreading платформаның қасиеті болып табылады (мысалы, операциялық жүйе, виртуалды машинат.б.) немесе операциялық жүйеде пайда болған процесс «параллельді» орындалатын, яғни уақыт бойынша белгіленген тәртіпсіз бірнеше ағындардан тұруы мүмкін екендігінен тұратын қолданба.

Көп ағынның мәні бір орындалатын процесс деңгейіндегі квази-көп тапсырмалылық болып табылады, яғни барлық ағындар процестің адрестік кеңістігінде орындалады. Сонымен қатар, процестің барлық ағындарында жалпы адрестік кеңістік қана емес, сонымен қатар жалпы файл дескрипторлары болады. Іске қосылған процесте кемінде бір (басты) ағын бар.

Көп ағынды (бағдарламалау доктринасы ретінде) көп тапсырманы немесе көп өңдеуді шатастырмау керек, тіпті көп тапсырманы жүзеге асыратын операциялық жүйелер көп ағынды да жүзеге асыруға бейім.

Бағдарламалауда көп ағынның артықшылықтарына мыналар жатады:

Кейбір жағдайларда жалпы мекенжай кеңістігін пайдалану арқылы бағдарламаны жеңілдету.

Процесске қатысты ағынды жасауға аз уақыт жұмсалады.

Процессор есептеулері мен енгізу/шығару операцияларын параллельдеу арқылы процесс өнімділігін жақсарту.

Ағын(ағын) – орындалатын кодтың басқарылатын бірлігі. Ағынға негізделген көп тапсырмалы ортада барлық орындалатын процестерде міндетті түрде негізгі ағын болады, бірақ одан да көп болуы мүмкін. Бұл бір бағдарлама бірнеше тапсырмаларды асинхронды түрде орындай алатынын білдіреді. Мысалы, мәтінді өңдеу мәтіндік редакторбасып шығару уақытында, өйткені екі тапсырма әртүрлі ағындарда орындалады.

Кәдімгі процессорда ағынды басқару операциялық жүйемен өңделеді. Аппараттық үзіліс орын алғанша ағын орындалады, жүйелік қоңыраунемесе операциялық жүйе оған бөлінген уақыт біткенше. Осыдан кейін процессор ағынның күйін (оның контекстін) сақтайтын операциялық жүйе кодына ауысады немесе басқа ағынның күйіне ауысады, оған да орындауға уақыт бөлінеді. Осындай көп ағынмен бұл жеткілікті көп саны CPU циклдері контексттерді ауыстыратын операциялық жүйе кодына жұмсалады. Егер ағынды қолдау аппараттық құралда жүзеге асырылса, онда процессордың өзі ағындар арасында ауыса алады және идеалды жағдайда әр тактілік цикл үшін бір уақытта бірнеше ағындарды орындай алады.

– Уақытша көп ағынды (бір ағын)

– Бір мезгілде көп ағынды (бір уақытта бірнеше ағындар)

Көп ағынды бағдарламалау және кодты орындаудың кең таралған моделі ретінде бірнеше ағындарды бір процесс ішінде іске қосуға мүмкіндік береді. Бұл орындалу ағындары процестің ресурстарын ортақ пайдаланады, бірақ сонымен бірге өздігінен жұмыс істей алады. Көп ағынды бағдарламалау моделі әзірлеушілерге параллельді орындаудың ыңғайлы абстракциясын береді. Дегенмен, мүмкін, технологияның ең қызықты қолданылуы оның көп процессорлы жүйеде параллель орындалуына мүмкіндік беретін бір процесске қолданылуы болып табылады.

Көп ағынды бағдарламаның бұл артықшылығы оның жылдам жұмыс істеуіне мүмкіндік береді компьютерлік жүйелер, оларда бірнеше процессорлар, бірнеше ядролары бар процессорлар немесе машиналар кластерінде - бағдарламаны орындау ағындары процестердің шын мәнінде параллель орындалуына табиғи түрде несие беретіндіктен. Бұл жағдайда бағдарламашы жарыс жағдайларынан және басқа интуитивті емес әрекеттерден аулақ болу үшін өте сақ болуы керек. Деректерді дұрыс өңдеу үшін орындалу ағындары деректерді дұрыс ретпен өңдеу үшін жиі кездесу процедурасынан өтуі керек. Ортақ деректердің бір уақытта өзгертілуін немесе модификация процесі кезінде оқылуын болдырмау үшін орындау ағындары да мутекстерді қажет етуі мүмкін (олар жиі семафорларды пайдаланып жүзеге асырылады). Мұндай примитивтерді абайсыз пайдалану тығырыққа әкелуі мүмкін.

Көп ағынды қолданудың тағы бір түрі, тіпті бірпроцессорлық жүйелер үшін де, қолданбаның енгізуге жауап беру мүмкіндігі. Бір ағынды бағдарламаларда орындаудың негізгі ағыны ұзақ орындалатын тапсырманы орындау арқылы бұғатталған болса, бүкіл қолданба мұздатылған күйде болуы мүмкін. Ұзақ орындалатын тапсырмаларды негізгі ағынмен параллель жұмыс істейтін жұмыс ағынына жылжыту арқылы тапсырмалар орындалып жатқанда қолданбалардың пайдаланушы енгізуіне жауап беруін жалғастыру мүмкін болады. фон. Екінші жағынан, көп жағдайда көп ағындылық бағдарламаны жауап берудің жалғыз жолы емес. Дәл осыған асинхронды енгізу/шығару немесе UNIX жүйесіндегі сигналдар арқылы қол жеткізуге болады.

Көп тапсырманың екі түрі бар: процеске негізделгенжәне ағынға негізделген. Процесс негізіндегі және ағындық көптапсырманың айырмашылығы келесідей: процеске негізделген көптапсырма бағдарламаларды параллель орындау үшін ұйымдастырылған, ал ағын негізіндегі көптапсырма бір бағдарламаның жеке бөліктерін параллель орындауға арналған.

Ағынның екі түрі бар:

Алдыңғы ағындар немесе алдыңғы план. Әдепкі бойынша, Thread.Start() әдісі арқылы жасалған әрбір ағын автоматты түрде алдыңғы қатарға айналады. Бұл түріАғындар ағымдағы қолданбаны тоқтатудан қорғауды қамтамасыз етеді. Жалпы тілдің орындалу уақыты барлық алдыңғы ағындар аяқталғанша қолданбаны тоқтатпайды.

Фондық ағындар. Бұл түріағындар, сонымен қатар демон ағындары ретінде белгілі, жалпы тілдің орындалу уақыты кез келген уақытта еленбейтін кеңейтілетін орындау жолдары ретінде қарастырылады. Осылайша, барлық алдыңғы ағындар аяқталса, қолданба домені жүктелген кезде барлық фондық ағындар автоматты түрде жойылады. Фондық ағындарды жасау үшін IsBackground сипатын шын мәніне орнату керек.

Жіптердің күйлері туралы айтыңыз: жүгіру, ілулі, жүгіру, бірақ бір нәрсені күту.

Тақырыпты синхрондау мәселесі және ортақ ресурстар.

Жіптің өзара әрекеттесуі

Көп ағынды ортада параллель орындалатын ағындар арқылы бірдей деректерді немесе құрылғыларды пайдаланумен байланысты мәселелер жиі кездеседі. Мұндай есептерді шешу үшін мутекстер, семафорлар, критикалық бөлімдер және оқиғалар сияқты ағынның өзара әрекеттесу әдістері қолданылады.

Мутекссинхрондау нысаны болып табылады, ол кез келген ағынмен қамтылмаған кезде арнайы сигналдық күйге орнатылады. Бұл нысанды кез келген уақытта тек бір ағын иеленеді, демек, мұндай нысандардың атауы (ағылшын тілінен өзара эксклюзивті қатынас - өзара эксклюзивті қатынас) - ортақ ресурсқа бір мезгілде қол жеткізу алынып тасталады. Барлық қажетті әрекеттерден кейін басқа ағындарға ортақ ресурсқа кіруге мүмкіндік беретін мутекс шығарылады. Нысан сол ағынмен екінші рет рекурсивті түсіруді қолдай алады, ағынды блоктамастан есептегішті ұлғайтады, содан кейін бірнеше шығарылымдарды қажет етеді. Бұл, мысалы, Win32-дегі маңызды бөлім. Дегенмен, бұған қолдау көрсетпейтін кейбір іске асырулар бар және рекурсивті түсіру әрекеті кезінде ағынды тығырыққа тірейді. Бұл Windows ядросындағы FAST_MUTEX.

семафорларресурс пулы бос болғанша бір уақытта бірнеше ағындар арқылы алуға болатын қолжетімді ресурстарды көрсетеді. Содан кейін қосымша ағындар ресурстардың қажетті көлемі қайтадан қол жетімді болғанша күтуі керек. Семафорлар өте тиімді, өйткені олар ресурстарға бір мезгілде қол жеткізуге мүмкіндік береді.

Оқиғалар. «Сигнал берілген немесе жоқ» 1 бит ақпаратты сақтайтын объект, онда «сигнал», «сигналсыз күйге қалпына келтіру» және «күту» операциялары анықталады. Белгіленген оқиғаны күту - бұл жіптің орындалуын дереу жалғастырумен операцияның болмауы. Сигналсыз оқиғаны күту басқа ағын (немесе ОЖ ядросындағы үзу өңдеушісінің екінші фазасы) оқиғаға сигнал бергенше ағынның орындалуын тоқтатады. «Кез келген» немесе «барлығы» режимдерінде бірнеше оқиғаны күтуге болады. Сондай-ақ, бірінші және жалғыз күту ағынын оятқаннан кейін сигналсыз күйге автоматты түрде қалпына келтірілетін оқиғаны жасауға болады (мұндай нысан «сыни бөлім» нысанын іске асыру үшін негіз ретінде пайдаланылады). MS Windows жүйесінде пайдаланушы режимінде де, ядро ​​режимінде де белсенді қолданылады. Linux ядросында kwait_queue деп аталатын ұқсас нысан бар.

Сыни бөлімдерсыни бөлімдерді көрсететін нысандар бір процесте қол жетімді болатынын қоспағанда, мутекстер сияқты синхрондауды қамтамасыз етеді. Оқиғаларды, мутекстерді және семафорларды бір процесс қолданбасында да пайдалануға болады, дегенмен кейбір операциялық жүйелерде (мысалы, Windows NT) маңызды бөлімдерді іске асыру өзара синхрондаудың жылдам және тиімді механизмін қамтамасыз етеді - алу және шығару критикалық бөлімдегі операциялар ОЖ ядросына апаратын кез келген жүйелік шақыруларды болдырмау үшін бір ағынның жағдайына оңтайландырылған (қайшылық жоқ). Мутекстер сияқты, критикалық бөлімді көрсететін нысанды тек бір ағынмен пайдалануға болады осы сәтуақыт, бұл оларды ортақ ресурстарға қол жеткізуді шектеуде өте пайдалы етеді.

Шартты айнымалылар(кондварлар). Оқиғаларға ұқсас, бірақ олар жадты алатын объектілер емес – тек айнымалының адресі пайдаланылады, «айнымалының мазмұны» түсінігі жоқ, шарт айнымалысы ретінде ерікті объектінің адресі пайдаланылуы мүмкін. Оқиғалардан айырмашылығы, айнымалы мәнде күтіп тұрған ағындар болмаса, шарт айнымалы мәнін сигналдық күйге орнату ешқандай нәтиже бермейді. Ұқсас жағдайда оқиғаны орнату оқиғаның өзінде «сигнал» күйін сақтауды талап етеді, содан кейін оқиғаны күтуді қалайтын кейінгі ағындар тоқтаусыз орындауды дереу жалғастырады. Мұндай нысанды толық пайдалану үшін «мутексті босату және шарттың айнымалысын атомдық түрде күту» операциясы да қажет. UNIX тәрізді операциялық жүйелерде белсенді қолданылады. Оқиғалардың және шарт айнымалыларының артықшылықтары мен кемшіліктері туралы талқылау оқиғалар мен шарт айнымалыларының артықшылықтары мен кемшіліктері туралы талқылаулардың маңызды бөлігі болып табылады. Windows жүйесінің кемшіліктеріжәне UNIX.

Енгізу/шығаруды аяқтау порты(IO аяқтау порты, IOCP). ОЖ ядросында енгізілген және жүйелік шақырулар арқылы қолжетімді, «құрылымды кезектің соңына қою» және «кезек басынан келесі құрылымды алу» операциялары бар «кезек» объектісі – соңғы шақыру орындауды тоқтатады. ағынның кезегі бос болса және басқа ағын қою шақыруын жасамайынша. IOCP-тің ең маңызды ерекшелігі - құрылымдарды пайдаланушы режимінен жүйелік шақыру арқылы ғана емес, сонымен қатар файлдың бірінде асинхронды енгізу-шығару операциясының аяқталуы нәтижесінде ОЖ ядросының ішіне жасырын түрде орналастыруға болады. дескрипторлар. Бұл әсерге қол жеткізу үшін «файл дескрипторын IOCP-мен байланыстыру» жүйелік шақыруын пайдалану керек. Бұл жағдайда кезекке орналастырылған құрылымда енгізу-шығару операциясының қате коды, сондай-ақ осы операция сәтті болған жағдайда нақты енгізілген немесе шығыс байттардың саны болады. Аяқтау портын іске асыру құрылымды кезектен алғаннан кейін бір процессорда/ядрода орындалатын ағындардың санын шектейді. Нысан MS Windows жүйесіне тән және ағындар саны клиенттер санынан аз болуы мүмкін архитектурада серверлік бағдарламалық құралда кіріс қосылым сұраулары мен деректер бөліктерін өңдеуге мүмкіндік береді (ресурспен бөлек ағынды құру талап етілмейді. әрбір жаңа клиент үшін шығындар).

Жіп пулы

Жіп пулы туралы айтыңыз

Қазіргі заманғы маңызды бөлігі мобильді платформаларға арналған қосымшалар(iOS, Android және т.б.) сервермен бірге жұмыс істейді. Ескірген деректері бар қолданба өзінің пайдалылығын жоғалтады. Сондықтан серверден құрылғыға деректердің үнемі жаңартылып тұруын қамтамасыз ету маңызды. Бұл Интернетсіз жұмыс істеуі керек желіден тыс қолданбаларға қатысты. Интернетсіз жұмыс істемейтін (немесе пайдасыз) толығымен онлайн қосымшалар үшін (мысалы, Foursquare, Facebook) осы мақаланың ауқымынан тыс өзіндік ерекшеліктері бар.

Мысал ретінде офлайн қолданбаларымыздың бірін пайдалана отырып, біз деректерді синхрондау үшін қандай тәсілдерді қолданғанымызды айтамын. Алғашқы нұсқаларында дамыттыққарапайым алгоритмдер және болашақта тәжірибе арқылы біз оларды жетілдірдік. Осыған ұқсас дәйектілік мақалада ұсынылған - қарапайым айқын тәжірибелерден күрделірекке дейін.

Мақалада деректерді тек бір бағытта: серверден құрылғыға тасымалдау қарастырылғанын түсіндіру керек. Мұнда сервер деректер көзі болып табылады.

Барлық тәсілдерге арналған жалпы ережелер

Мысалы, ыдыс-аяқтар каталогын («ыдыс-аяқ») құрылғыға көшіруді қарастырамыз. Құрылғы «/service/dishes/update» URL мекенжайына сұраныс жасайды деп есептейміз, алмасу арқылы http протоколы JSON пішімінде ( www.json.org). Серверде келесі өрістері бар «тағамдар» кестесі бар: идентификатор (жазба идентификаторы), аты (тағам атауы), жаңартылған (тағамды жаңарту уақыты, уақыт белдеуін бірден қолдаған дұрыс, «ЖЖЖЖ-АА-КК:мм:ssTZD», мысалы, “1997 -07-16T19:20:30+01:00”), жойылды (жойылған жазбаның белгісі).

Соңғы өрістің болуына қатысты ескерту. Әдепкі бойынша оның мәні 0 болады. Нысандар клиент пен сервер арасында үндестірілетін қолданбада деректерді серверден физикалық түрде жою ұсынылмайды (қателер болмас үшін). Сондықтан, жойылған тағамдар үшін is_deleted = 1 орнатылады. is_deleted = 1 мәні бар нысан құрылғыға келгенде, ол құрылғыдан жойылады.

Төменде талқыланатын кез келген тәсілмен сервер құрылғыларға оралады json массивінысандар (бос болуы мүмкін):

[
(id: ,аты: .жаңартылған: ,жойылған: },…
]

Сервер жауабының мысалы:

[
(id: 5625, атауы: "Нан", жаңартылған: "2013-01-06 06:23:12",жойылған: 0),
(id: 23, атауы: "Пісірілген жарма", жаңартылған: "2013-02-01 14:44:21",жойылған: 0),(

аты: «Балық сорпасы»,

жаңартылды: "2013-08-02 07:05:19",

Құрылғыдағы деректерді жаңарту принциптері

  1. Құрылғыдағы элемент келсе және жойылған = 0 болса, ол жаңартылады
  2. Құрылғыда жоқ элемент келсе және жойылған = 0 болса, ол қосылады
  3. Құрылғыдағы элемент келсе және жойылған = 1 болса, ол жойылады
  4. Құрылғыда жоқ элемент келсе және Deleted = 1 болса, ештеңе жасалмайды

1-тәсіл: Әрқашан барлығын синхрондаңыз

Бұл ең оңай әдіс. Құрылғы серверден тағамдар тізімін сұрайды, ал сервер бүкіл тізімді жібереді. Бүкіл тізім әр уақытта шығады. Сұрыпталмаған.

Сұраныс мысалы: null немесе «()»

Артықшылықтары:

  • сервердегі логика қарапайым - біз әрқашан бәрін береміз
  • құрылғыдағы логика қарапайым - біз әрқашан бәрін қайта жазамыз

Кемшіліктері:

  • егер сіз тізімді жиі (әр 10 минут сайын) сұрасаңыз, ол солай болады үлкен интернеттрафик
  • егер сіз тізімді сирек сұрасаңыз (күніне бір рет), онда деректердің өзектілігі бұзылады

Қолдану саласы:

  • аз трафик қолданбалары үшін
  • өте сирек өзгеретін деректерді беру (қалалар, санаттар тізімі)
  • қолданба параметрлерін тасымалдау
  • ең бірінші мобильді қосымша прототипіне арналған жобаның басында

2-тәсіл: Тек жаңартылған

Құрылғы алдыңғы қадамдастырудан жаңартылған тағамдар тізімін сұрайды. Тізім өсу ретімен «жаңартылған» бойынша сұрыпталады (міндетті емес, бірақ ыңғайлы). Құрылғы ең соңғы жіберілген тағамның «жаңартылған» мәнін сақтайды және оны келесі сұрауда «соңғы жаңартылған» параметрінде серверге жібереді. Сервер "соңғы жаңартылған" (жаңартылған > LastUpdated) нұсқасынан жаңарақ тағамдар тізімін жібереді. Серверге бірінші сұрауда «lastUpdated» = null.

Сұраныс мысалы: (соңғы жаңартылған уақыты: «2013-01-01 00:00:00» )

Диаграммада: «last_updated» - құрылғыда сақталған мән. Әдетте әрбір нысан үшін (тағамдар, қалалар, ұйымдар және т.б.) осы «соңғы_жаңартылған» мәндерді сақтау үшін құрылғыда бөлек кесте жасалады.

Бұл тәсіл барлық құрылғылар үшін құрылғыға бірдей келу ережелері бар қарапайым сызықтық тізімдерді синхрондау үшін қолайлы. Неғұрлым таңдаулы синхрондау үшін 5-тәсіл: Құрылғыда не бар екенін біле отырып синхрондау бөлімін қараңыз.

Әдетте бұл тәсіл қажеттіліктердің көпшілігін қамтиды. Құрылғыға тек жаңа деректер келеді, сіз кем дегенде әр минут сайын синхрондауға болады - трафик аз болады. Дегенмен, шектеулерге байланысты проблемалар бар. мобильді құрылғылар. Бұл жад және процессор.

3-тәсіл: бөліктерде синхрондаңыз

Мобильді құрылғылар аз жедел жады. Егер каталогта 3000 тағам болса, серверден үлкен json жолын құрылғыдағы нысандарға талдау жад тапшылығын тудыруы мүмкін. Бұл жағдайда қолданба бұзылады немесе сол 3000 тағамды сақтамайды. Бірақ тіпті егер құрылғы мұндай жолды сіңіре алса да, фондық режимде синхрондау сәтіндегі қолданбаның өнімділігі төмен болады (интерфейстің лагтары, біркелкі айналдыру емес және т.б.). Сондықтан, оны сұрау керек. кішірек бөліктерде тізім.

Мұны істеу үшін құрылғы бөлік өлшемін анықтайтын басқа параметрді («сома») береді. Тізім міндетті түрде өсу ретімен «жаңартылған» өріс бойынша сұрыпталған түрде жіберіледі. Құрылғы алдыңғы тәсілге ұқсас, соңғы жіберілген нысанның «жаңартылған» мәнін есте сақтайды және оны «соңғы жаңартылған» өрісіне өткізеді. Егер сервер дәл бірдей нысандар санын жіберсе, құрылғы синхрондауды жалғастырады және қайта сұраныс жасайды, бірақ жаңартылған «lastUpdated». Егер сервер азырақ нысандар жіберсе, бұл оның жаңа деректері жоқ екенін және синхрондау аяқталатынын білдіреді.

Диаграммада: «соңғы_жаңартылған» және «сома» сақталған мәндер мобильді қосымша. «соңғы_элемент» – серверден жіберілген соңғы нысан (тағам). Бұл мәннен жаңарақ болса, келесі тізім сұралады.

Сұраныс мысалы: (соңғы жаңартылған: «2013-01-01 00:00:00», сомасы: 100 )

Артықшылықтары:

  • Құрылғы бір уақытта өңдей алатындай көп деректерді алады. Қызмет көрсету мөлшері тәжірибелік сынақтармен анықталады. Қарапайым нысандарды бір уақытта 1000 синхрондауға болады. Бірақ бұл да болады, бұл субъектілері бар үлкен мөлшерөрістер мен күрделі сақтауды өңдеу логикасы әдетте 5 данадан аспайтын синхрондалады.

Кемшіліктері:

  • Егер бірдей жаңартылған 250 ыдыс болса, сома = 100 болса, соңғы 150-і құрылғыларға жеткізілмейді. Бұл жағдай өте нақты және келесі тәсілдемеде сипатталған.

4-тәсіл: бөліктерді дұрыс бөлу

Алдыңғы тәсілде, егер кестеде бірдей «жаңартылған» 250 тағам болса (мысалы, «2013-01-10 12:34:56») және порция мөлшері 100 болса, онда тек алғашқы 100 жазба келеді. Қалған 150-і қиын жағдайға байланысты үзіледі (жаңартылған > соңғы жаңартылған). Неліктен бұл болады? Алғашқы 100 жазбаны сұрау кезінде lastUpdated параметрі «2013-01-10 12:34:56» мәніне орнатылады және келесі сұрауда шарт болады (жаңартылған > «2013-01-10 12:34:56»). Тіпті шартты жұмсарту (жаңартылған >= “2013-01-10 12:34:56”) көмектеспейді, себебі құрылғы содан кейін алғашқы 100 жазбаны шексіз сұрайды.

Дәл осындай «жаңартылған» жағдай сирек емес. Мысалы, деректерді импорттау кезінде мәтіндік файл"жаңартылған" өріс NOW() күйіне орнатылды. Мыңдаған жолдардан тұратын файлды импорттау бір секундтан аз уақыт алуы мүмкін. Сондай-ақ, бүкіл каталогта бірдей «жаңартылған» болуы мүмкін.

Бұны түзету үшін кем дегенде бір сәтте («жаңартылған») бірегей болатын тағам өрісін пайдалану керек. «id» өрісі бүкіл кестеде бірегей, сондықтан оны синхрондау кезінде қосымша пайдалану керек.

Қорытындылай келе, бұл тәсілді жүзеге асыру келесідей көрінеді. Сервер «жаңартылған» және «идентификатор» бойынша сұрыпталған тізімді қайтарады және құрылғылар «lastUpdated» және жаңа «lastId» параметрін пайдаланып деректерді сұрайды. Сервер үшін таңдау шарты күрделене түседі: ((жаңартылған > соңғы жаңартылған) НЕМЕСЕ (жаңартылған = lastUpdated және id > lastId)).

Диаграммада: «соңғы_жаңартылған», «соңғы_идентификатор» және «сома» мобильді қосымшада сақталатын мәндер болып табылады. «соңғы_элемент» – серверден жіберілген соңғы нысан (тағам). Бұл мәннен жаңарақ болса, келесі тізім сұралады.

5-тәсіл: Құрылғыда бұрыннан бар нәрсені білумен синхрондау

Алдыңғы тәсілдер сервер деректердің құрылғыда қаншалықты сәтті сақталғанын шынымен білмейтінін ескермейді. Құрылғы түсініксіз қателерге байланысты кейбір деректерді сақтай алмады. Сондықтан құрылғыдан барлық (немесе барлығы емес) ыдыс-аяқтардың сақталғаны туралы растау алу жақсы болар еді.

Сонымен қатар, қолданба пайдаланушысы қолданбаны деректердің бір бөлігін ғана қажет ететіндей етіп конфигурациялай алады. Мысалы, пайдаланушы 10 қаланың ішінен тек 2 қаланың тағамдарын синхрондауды қалайды. Бұған жоғарыда сипатталған синхрондаулармен қол жеткізу мүмкін емес.

Тәсілдің идеясы келесідей. Сервер құрылғыда қандай тағамдар бар екендігі туралы ақпаратты («сақталған_элемент_тізімі» жеке кестеде) сақтайды. Бұл жай ғана «id - жаңартылған» жұптардың тізімі болуы мүмкін. Бұл кесте барлық құрылғыларға арналған «id – жаңартылған» тағам жұптарының барлық тізімдерін сақтайды.

Құрылғы құрылғыда қолжетімді тағамдар туралы ақпаратты («id – жаңартылған» жұптардың тізімі) синхрондау сұрауымен бірге серверге жібереді. Сұралған кезде сервер құрылғыда қандай тағамдар болуы керек екенін және қайсысы қазір қолжетімді екенін тексереді. Осыдан кейін айырмашылық құрылғыға жіберіледі.

Сервер құрылғыда қандай тағамдар болуы керектігін қалай анықтайды? Ең қарапайым жағдайда сервер барлық тағамдардың «id - жаңартылған» жұптарының тізімін қайтаратын сұраныс жасайды (мысалы, SELECT идентификаторы, FROM тағамдарынан жаңартылған). Диаграммада бұл «WhatShouldBeOnDeviceMethod()» әдісімен орындалады. Бұл тәсілдің кемшілігі - сервер құрылғыда не болуы керек екенін есептеуі керек (кейде ауыр SQL сұрауларын жасайды).

Сервер құрылғыда қандай тағамдар бар екенін қалай анықтайды? Ол осы құрылғы үшін "сақталған_элемент_тізімі" кестесін сұрайды және "id - жаңартылған" жұптардың тізімін алады.

Осы екі тізімді талдай отырып, сервер құрылғыға не жіберу керектігін және нені жою керектігін шешеді. Диаграммада бұл “delta_item_list”. Сондықтан сұрауда «lastUpdated» және «lastId» жоқ, олардың тапсырмасы «id - updated» жұптары арқылы орындалады.

Сервер құрылғыда қолжетімді тағамдар туралы қайдан біледі? Серверге сұранысқа қосылды жаңа параметрСоңғы синхрондау кезінде құрылғыға жіберілген идентификатор элементтерінің тізімін қамтитын «элементтер», («құрылғы_соңғы_сақталған_элемент_тізімі»). Әрине, сіз алгоритмді қиындатпай, құрылғыдағы барлық тағамдардың идентификаторының тізімін жібере аласыз. Бірақ құрылғыда 3000 ыдыс болса және олар әр уақытта жіберілетін болса, онда трафик шығындары өте жоғары болады. Синхрондаудың басым көпшілігінде «элементтер» параметрі бос болады.

Сервер өзінің «сақталған_элемент_тізімін» «элементтер» параметріндегі құрылғыдан келген деректермен үнемі жаңартып отыруы керек.

Сақталған_элемент_тізіміндегі сервер деректерін тазалау механизмін енгізу керек. Мысалы, қолданбаны құрылғыға қайта орнатқаннан кейін сервер деректер құрылғыдағы әлі де жаңартылған деп есептейді. Сондықтан, қолданбаны орнату кезінде құрылғы осы құрылғы үшін сақталған_элемент_тізімін тазарту үшін серверге қандай да бір түрде хабарлауы керек. Біздің қолданбада біз бұл жағдайда қосымша «clearCache» = 1 параметрін жібереміз.

Қорытынды

Осы тәсілдердің сипаттамалары бойынша жиынтық кесте:

Тәсіл Трафик көлемі(5 - үлкен) Дамудың еңбек қарқындылығы(5 - жоғары) Құрылғы жадын пайдалану(5 - жоғары) Құрылғыдағы деректердің дұрыстығы(5 - жоғары) Белгілі бір құрылғыны таңдауға болады
1 Барлығы әрқашан синхрондалады 5 1 5 5 Жоқ
2 Синхрондалған тек жаңартылған 1 2 5 3 Жоқ
3 Бөлшектерде синхрондау 1 3 1 3 Жоқ
4 Бөлшектерде дұрыс синхрондау 1 3 1 3 Жоқ
5 Құрылғыда бұрыннан бар нәрсені білумен синхрондау 2 5 2 5 Иә

«Құрылғыдағы деректердің дұрыстығы» — құрылғыда сервер жіберген барлық деректердің болуы ықтималдығы. №1 және №5 тәсілдер жағдайында құрылғыда барлық қажетті деректер бар екеніне 100% сенімділік бар. Әйтпесе, мұндай кепілдік жоқ. Бұл басқа әдістерді қолдануға болмайды дегенді білдірмейді. Бұл жай ғана деректердің бір бөлігі құрылғыда жоғалып кетсе, оны серверден түзету жұмыс істемейді (бұл туралы сервер жағында білу үшін одан да көп).

Мүмкін, Интернет үшін шектеусіз тарифтер және тегін болған жағдайда wifi мәселесімобильді қосымша арқылы жасалған трафикке шектеулердің өзектілігі азаяды. Бірақ әзірге біз әртүрлі айла-шарғыларға баруымыз керек, желі шығындарын азайтатын және қолданбаның өнімділігін арттыратын «ақылды» тәсілдер ойлап табуымыз керек. Бұл әрқашан жұмыс істемейді. Кейде жағдайға байланысты «қарапайым болса, соғұрлым жақсы» болады. Бұл мақала сізге пайдалы әдісті табуға көмектеседі деп үміттенемін.

Серверді синхрондаудың таңқаларлық аз сипаттамалары бар және мобильді құрылғылар. Сонымен қатар, осы схемаға сәйкес жұмыс істейтін көптеген қосымшалар бар. Қызығушылық танытқандар үшін бірнеше сілтемелер.

Қолданбаның серверлік жағын әзірлеу

Кіріспе

Интернетте болу қазіргі заманғы компаниялар үшін қажеттілікке айналды. Онсыз тұтынушылармен толыққанды өзара әрекеттесу құру мүмкін емес. Көбінесе мұндай мәселені шешу үшін олар клиент-сервер қосымшаларын жасауға жүгінеді. Олардың әрқайсысы клиент бөлігінен және бэк-эндтен тұрады. Соңғы термин қолданбаның сервер жағына қатысты. Болашақта мазмұнды өзіңіз өзгерту қажет болса мобильді бағдарлама, содан кейін Back-end әсіресе жоғары сапалы жасалуы керек. Appomart қойылған міндеттердің талаптарға сәйкес орындалуына кепілдік береді. Сондықтан, серверлік қосымшаларды жасауға тапсырыс бергенде, сіз дұрыс нәтижеге сенімді бола аласыз.

Back-end не үшін қажет?

Клиент-сервер қосымшаларын әзірлеу екі бөлікті құруды қамтиды. Бірінші, Front-end, пайдаланушылардың сұрауларын қабылдайды. Ол тұтынушылардың мобильді құрылғыларының экрандарынан көрінеді. Екіншісі, серверлік қосымша, қабылданған сұраныстарды өңдейді және әкімшілік панель ретінде әрекет етеді. Мұнда деректер базасы мен бағдарлама логикасы сақталады. Онсыз ешбір клиент-сервер қолданбасы жұмыс істемейді. Шын мәнінде, бэк-энд бағдарламаның жүрегі болып табылады. Бұл тұтынушылардың сұраныстарын өңдеуге, қолданбаның жылдамдығына жауап беретін интеллект. Сондықтан серверлік қосымшаның архитектурасы ең кішкентай бөлшектерге дейін ойластырылған болуы маңызды, сондықтан тіпті жоғары жүктелген қызметтер біркелкі және жылдам жұмыс істейді.

Бағдарламалау тілін қалай таңдауға болады?

Дайындықта техникалық тапсырма(жобаға арналған жұмыс құжаттамасының бөліктері), сәулетші мәліметтер қоры жүйесін және сілтемелерін жобалайды, объектілерді және олардың қасиеттерін сипаттайды және қажетті сервер әдістерін әзірлейді (сервермен байланысқан кезде мобильді қосымшалардың «пайдаланатынын» сұрайды).

Құжаттаманың және тоқтатылған жобалардың маңыздылығы

Appomart-қа басқа мердігерлер бір немесе басқа себептермен «тастап кеткен» тұтынушылар жиі хабарласады. Біз біреудің, кейде тіпті дұрыс жұмыс істемейтін жобасын аламыз, біз оның аудитін жүргіземіз, содан кейін қайта қарап, қолдау көрсетеміз. Оқу процесінде бастапқы коджәне тапсырыс берушіден алынған материалдар, біз көптеген әзірлеушілер клиентті өздерімен байланыстыру үшін сервер әдістерін әдейі құжаттамайтындығымен бетпе-бет келдік, себебі жобаны басқа әзірлеушіге қолдау көрсетуге аударуға жұмсалатын еңбек шығындарының сәйкес келмеуі салдарынан сервер бөлігі үшін құжаттаманың жоқтығына, кейде жай ғана кәсіби еместігі үшін. Бұл факт, өкінішке орай, қайғылы ғана емес, сонымен қатар кең таралған. Бұл жағдайда тапсырыс беруші жобаны қолдаудың тиімділігін, ыңғайлылығын және орындылығын бағалау мүмкін болмас бұрын, бар жобаның құжаттамасын әзірлеуге, сондай-ақ бастапқы кодтың аудитіне ақы төлеуі керек. Appomart кейінірек пайдалану үшін Postman және Swagger қолдайтын пішімдегі бэк-әдістердің электрондық құжаттамасын жүргізеді.

Келісімшартқа қол қоймас бұрын мердігерді қалай тексеруге болады?

Біз мердігерді мұқият таңдап, қызықты бағаға ғана емес, сонымен қатар жобамен бірге алатын құжаттар тізіміне, сондай-ақ бастапқы кодты беру шарттарына және кодты ескертулермен қамтуға шақырамыз. , дерекқор схемалары (бұл Mongo DB немесе MySQL болсын). Табыстың кілті, әдетте, жұмыстың әрбір кезеңі аяқталғаннан кейін сізге берілетін материалдарға қойылатын талаптарды нақты көрсететін құзыретті жұмыс құжаттамасы болып табылады.

Әзірлеу ерекшеліктері

серверге арналған PHP

Қолданбалардың серверлік жағын құру («аппараттық құрал» немесе компьютерлер сияқты серверлермен шатастырмау керек, өйткені біз бағдарламалық жасақтама жағы туралы айтып отырмыз) сервер жағында қолданылатын бағдарламалау тілін білу және арнайы кәсіби дағдыларды қажет етеді. Клиент-сервер қосымшаларының мысалдарын қарастырсақ, РНР танымал екенін көреміз. Бұл серверлік қосымшаларды әзірлеудегі сөзсіз көшбасшы. Әлемдегі сайттардың жартысынан көбі осы тілде бір немесе басқа конфигурацияда жазылған. РНР-ді әзірлеу және қолдау оңай, сонымен қатар PHP-де дамуды тездететін арнайы фреймворктар бар.

Рамка

Framework( бағдарламалық платформа) - абстракция деңгейін ұйымдастыру және арттыру үшін пайдаланылады, бұл жобаны икемді және ауқымды етеді. Дегенмен, жобаның жұмыс құжаттамасын терең талдау негізінде негізді дұрыс таңдау керек екенін түсіну керек, онсыз сапалы өнімді әзірлеу мүмкін емес.

Delphi, JAVA, Python

Back-end жасау үшін қолданылатын басқа тілдер бар. Сонымен, жылы құрылған Delphi ортасы серверлік қолданбалар. Оның көмегімен бағдарлама жөндеуді жақсартады, сонымен қатар ортада бірегей бағдарламаларды жасау оңай, ол қамтамасыз етілген. визуалды жасау, бұл әдемі, түсінікті және жасауға мүмкіндік береді пайдаланушыға ыңғайлы интерфейс. Java серверлік қосымшалары да танымал болды. Олар оңай толықтырылады, кез келген платформада оңай орындалады және лайықты қауіпсіздік деңгейіне ие. Тағы бір танымал тіл - Python. Оның көмегімен серверлік қосымшалар тез, қарапайым, елеулі шығындарсыз жасалады.

Тарату

Клиент-сервер қосымшаларын құру корпоративтік ортада сұранысқа ие. Жиі ұқсас бағдарламаларжұмыс топтары немесе құру үшін пайдаланылады ақпараттық жүйелеркәсіпорын ішінде. Басым көпшілігі мобильді қосымшаларклиентпен байланысты қолдау үшін де ұқсас архитектура бар. Танымалдығы сервер мүмкіндіктерін пайдалану желі жүктемесін азайта отырып, жүйені басқаруды және тұтастығын қамтамасыз етуге мүмкіндік беретіндігіне байланысты.

Біз жоғары сапалы және уақытылы Android, iOS үшін клиент-сервер қосымшасын жасаймыз

Кілтке тапсыру

Appomart бағдарламашылары әртүрлі деңгейдегі тапсырмаларды орындау үшін тәжірибелі және білікті. Біз әлеуметтік желілерді, жоғары жүктемелі бизнес жобаларды немесе шағын стартаптарға арналған бағдарламалық қамтамасыз ету бөлігін жүзеге асыруда бірдей жақсымыз. Қажет болса, біз қолданбаның клиент бөлігін жасаймыз Android басқару, бар қажеттіліктерге, талаптарға сәйкес iOS.

Appomart сайтындағы бэк-end

Біздің бағдарламашылар әртүрлі технологиялармен жұмыс істейді және оны бірдей жақсы орындайды. Appomart-та ​​сіз Java, PHP және Node.JS тіліндегі клиент-сервер қолданбасына тапсырыс бере аласыз. Жүйе талаптары жобалардың әрқайсысы үшін жеке талданады, бұл бағдарламаның оңтайлы орындалуын қамтамасыз етуге мүмкіндік береді. Біз Java, PHP және Node.JS клиент-сервер қолданбасын нөлден жасаймыз немесе жақсартулар мен жаңартуларға қолдау көрсету үшін барын аламыз. Егер сіз жаңа сервер бөлігін әзірлеуге немесе бұрыннан барын қолдауға қызығушылық танытсаңыз, жұмыс құнының егжей-тегжейлі есебін және ынтымақтастық нұсқаларын алу үшін сұрау қалдырыңыз.

Біздің компания сервер бөліктерін жасау қызметтерін ұсынады мобильді бизнес қолданбаларыжәне жоғары жүктеме орталарында жұмыс істейтін клиенттік веб-қызметтері. Әрбір жобаны әзірлеу кезінде біз алынған өнім тапсырыс берушінің нақты мақсаттарының ең оңтайлы шешімі болуы үшін жеке тәсілді қолдануға тырысамыз.

Егер сіз серверде деректерді сақтайтын және/немесе өңдейтін күрделі қолданбаны пайдалансаңыз, оның артында Back-end бар - бағдарламалық пакет, веб-серверде орналастырылған және қолданбада жұмыс істейді, бұл жағдайда ол Front-end деп аталады. Серверде орналастырылған қосымша көптеген клиенттермен бір уақытта жұмыс істей алады, бұл оның жұмысының жоғары жылдамдығы мен қауіпсіздігіне талаптар қояды.

Көбінесе қолданбаның сервер жағы жазылады РНР тілі, мұндай шешімдер үшін ең танымал ретінде. Қарапайым серверлік тапсырмаларды орындау үшін стандартты жүйелерді қолдануға болады, бірақ нақтырақ болса, стандартты жүйелерге өзіңіздің шешіміңізді немесе қондырмаларды әзірлеу қажет.

Мобильді қосымша үшін серверді әзірлеу принциптері

Біздің бағдарламашылар кез келген, тіпті өте жоғары жұмыс жүктемесі және әртүрлі салалар үшін шешімдердің кең ауқымын енгізуге мүмкіндік беретін технологиялармен жұмыс істейді. Біз сондай-ақ жеке тапсырмалар үшін бөлек сервер шешімдерін жасаймыз.

Ұйымдастырушылық бақылау

Әрбір жобаны әзірлеудің барлық кезеңдеріне жауапты мамандардың жеке тобы жасайды және жобаны уақытында жеткізеді.

Бағдарламалау

Сервер архитектурасын жобалау - бұл мәліметтер базасы құрылатын және қажетті алгоритмдер қалыптасатын ең маңызды қадам.

Тестілеу

Бағдарламалық қамтамасыз ету бөлігіқателер мен сәтсіздіктерсіз жұмыс істеуі керек. Бұл жүйені тексеруді жүзеге асыратын тестілеушілердің жауапкершілігі.

Техникалық көмек

Біздің қызметкерлер кемшіліктерді тез жоюға және жаңартулар жасауға мүмкіндік беретін бағдарламаларға толыққанды техникалық қолдау көрсетеді.

Әзірлеу ерекшеліктері

Дұрыс дамуы үшін сервер бөлігіқосымшалар, белгілі бір дағдылар мен серверде қолданылатын бағдарламалау тілін білу қажет. Тәжірибе көрсеткендей, клиент-сервер қолданбалары PHP тілінде жасалған. Ол осы саладағы сөзсіз көшбасшы. Әлемдегі сайттардың жартысынан көбі РНР тілінде жазылған, оны әзірлеуге және қолдауға ыңғайлы.

Рамка

Бұл бағдарламалық платформа жобаны ауқымды және икемді етуге мүмкіндік береді. Дегенмен, рамка мүмкіндігінше дұрыс таңдалуы керек, сондықтан ол талап етіледі терең талдаукейіннен жоғары сапалы өнімді әзірлеуге көмектесетін жобаның жұмыс құжаттамасы.

үшін қолданылатын басқа тілдер бар кері даму. Мысалы, Delphi ортасында жасалған серверлік қосымшалар танымал. Осының арқасында бағдарлама жөндеуді жақсартты. Сонымен қатар, ондағы бірегей бағдарламаларды жасау оңайырақ, ол визуалды құруды қамтамасыз етеді. Мұның бәрі түсінікті және ыңғайлы интерфейс жасауға мүмкіндік береді.

Java серверлік қосымшалары кем емес танымал. Олар қиындықсыз толықтырылған, әртүрлі платформаларда оңай орындалады жоғары деңгейқауіпсіздік.

Тағы бір жиі қолданылатын тіл. Оның көмегімен серверлік қосымшалар оңай, жылдам және қосымша шығынсыз жасалады.

Қазіргі заманғы компаниялардың барлығында дерлік өздерінің виртуалды кеңселері бар. Веб-сайт визитка немесе портал немесе төлем опциялары бар онлайн каталог болуы мүмкін.

Бұл жағдайда бизнес-процестер веб-серверлерге, атап айтқанда, олардың шабуылдарға, бұзу әрекеттеріне және сыртқы жағымсыз әсерлерге төтеп беру қабілетіне, сондай-ақ бір уақытта қабылданған көптеген сұраулар үшін жеткілікті өнімділікке байланысты.

Веб-сервистің даму кезеңдері

Нарықтың әртүрлі сегменттері үшін қосымшалар жасай отырып, біз жұмысымызды сәйкес ұйымдастырамыз біртұтас принцип– біз бүкіл процесті жеке қадамдарға бөлеміз, олардың барысы мен нәтижелері тұтынушыларға хабарланады. Осылайша, мобильді қосымшаның сервері дәл осылай әзірленген.

1. Идеяны дамыту

2 аптаға дейін

Бұл кезеңде іргетас құрылуда, ол не қаланып, қандай бағытта дамитындығы туралы түсінік береді.

2. Жобаны бағалау

2-3 апта

Біздің мамандар жұмыстың уақыты мен құнын бағалайды, содан кейін әзірлеуге алдын ала ұсыныс жасалады.

3. Техникалық тапсырма және шарт

2 аптаға дейін

Тапсырыс берушімен процестің барлық нюанстарын талқылап, егжей-тегжейлі TOR құрастырғаннан кейін келісімшарт дайындалады және қол қойылады.

4. Интерфейсті дамыту

2-3 апта

Бағдарламалық модульдерді жазу кезінде қажетті интерфейстерді құру үшін дизайнерлер жауап береді.

6. Тестілеу

2-3 апта

Алынғандарды жан-жақты тексеру бағдарламалық шешімсәйкес құралдар жиынтығы арқылы сынаушылар шығарған.

7. Жобаның аяқталуы

2 аптаға дейін

Келісілген мерзімде дайын, мұқият тексерілген веб-қызмет тұтынушыға беріледі.

біздің команда

Коммерциялық әрекеттерді және тұтынушыларымыздың қажеттіліктерін талдау арқылы біз бизнес мәселелерінің ауқымын шешуге көмектесетін нақты өнімдерді жасаймыз. Қолданылуы заманауи технологияларсерверді іске асыру үшін кең мүмкіндіктер береді бағдарламалық қамтамасыз ету, бұл сәйкес мобильді қосымшалардың жоғары өнімділігіне кепілдік береді. Біздің команданың атынан:

Жоба менеджерлері

Бұл қызметкерлер клиенттермен де, әзірлеушілермен де өзара әрекеттеседі, олардың арасындағы байланысты қамтамасыз етеді. Олар қазірдің өзінде жоспарланған іс-шаралардың да, қажетті жақсартулардың да орындалуын бақылайды.

Дизайнерлер

Өз жұмысында біздің мамандар интерфейстерді құруға қойылатын талаптарды ескереді операциялық жүйелер iOS және Android, сондықтан шығарылған қолданбалар әртүрлі құрылғыларда дұрыс жұмыс істейді.

Әзірлеушілер

Мобильді қосымшалардың өнімділігін оңтайландыру үшін бағдарламашылар оларды талдайды жүйелік талаптаржәне арнайы сервер бағдарламалық құралын жасау.

Сынақшылар

Мұқият тестілеу дайын өнім сапасының кепілі және сақталған және өңделген деректердің қауіпсіздігінің кепілі болып табылады. Бұл мамандар әртүрлі құралдар мен тиімді әдістемені пайдаланады.

Біз қандай қызметтерді жасаймыз

Сайт бағдарламалық құралына ендірілген немесе тәуелсіз бағдарлама, веб-қызмет жарнамаға, талдауға, жоспарлауға және бизнесті жылжытуға қатысты тапсырмаларды орындау үшін пайдаланылады. Осыған байланысты қандай ресурс түрі ең жақсы шешім болатынын шешу қажет.

Ақпараттық жобалар

Әртүрлі мазмұнды орналастыруға арналған.

Тақырыптық сайттар

Олардың беттерінің барлығы дерлік бір тақырыпқа арналған. Оларға деген сұраныс әлі де жоғары.

жаңалықтар сайттары

Олар өмірдің негізгі салаларын көрсететін бір немесе бірнеше тақырыптар аясында түрлі жаңалықтардан хабардар етеді.

Блогтар

Бұл ресурстардың танымалдылық деңгейі үнемі өсіп келеді. Жаңалық сайттары сияқты олар интернет қауымдастығына сол немесе басқа ақпаратты жеткізеді, бірақ бұл жағдайда авторлар өздерінің жеке пікірін білдіреді.

Әлеуметтік жобалар

Олардың ішінде мамандандырылған әлеуметтік желілер, қауымдастықтар, форумдар және т.б.

Форумдар

Әртүрлі жаңалықтарды, өнімдерді / қызметтерді және т.б. талқылау үшін жасалған. Олар тар бағытта және әртүрлі болуы мүмкін.

Әлеуметтік желілер

Бұл ресурстардың миллиондаған аудиториясы бар. Олардың негізгі міндеті - Интернет пайдаланушыларына мәтін арқылы онлайн қарым-қатынас жасау мүмкіндігін беру / дауыстық хабарламаларжәне бейне байланыстар.

Әртүрлі веб-қызметтер

Қазіргі кезде кең тараған олар бірнеше түрге бөлінеді.

Каталогтар

Пошта қызметтері

Пайдаланушыларға барлық мүмкіндіктер мен артықшылықтарды беріңіз Электрондық пошта, соның ішінде хаттар мен құжаттарды қарау, жіберу, өңдеу және т.б.

Іздеу жүйелері

Сайттарды іздеу үшін пайдаланылады және әртүрлі ақпаратбелгілі бір сұраулар үшін.

Хабарландыру тақталары

Бұл желі пайдаланушылары әртүрлі тақырыптарда қызметтерді сату және сатып алу туралы жарнамаларын орналастыратын веб-ресурстар.

Хостинг сайттары

Файлдарды уақытша сақтауға арналған. Олардың кейбіреулері жүктеу алдында деректермен танысуға мүмкіндік береді.

Жиі қойылатын сұрақтар

Төменде біз мамандарымызға жиі қойылатын сұрақтарға жауаптарды ұсынамыз. Егер сіз іздеген ақпаратты осы жерден таппасаңыз, сұрағыңызды осында қалдырыңыз. пішінжәне біз оған міндетті түрде жауап береміз.

Қолданбаны және веб-серверді жасауға қанша уақыт кетуі мүмкін?

Орташа алғанда, бұл жұмыс 9-дан 20 аптаға дейін созылады. Мұның бәрі орындалатын тапсырманың күрделілігіне байланысты.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!