protobuf хабары өзгермейтін тізімдерді қолданады және мен оны дерекқор ретінде пайдалануға тырысамын

Деректер алу үшін веб-сервермен байланысатын Android қосымшасын жазамын. Протобуфты және барлық шығармаларды шеберлікті қолдануға бел будым.

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

Мен java класын жасау үшін протоколды қолдандым, ол жақсы жұмыс істейді және мен жақсы жағымды объект құрылымын аламын (бастапқы деңгейдегі деректермен ғана). Дегенмен, менің құрылымымның құрылымын менің қолданымдағы негізгі дерекқор ретінде пайдалану туралы шешім қабылдадым және осы қолданбадағы барлық тізімдер өзгермейтіндіктен, кейінірек кеңейте алмаймын, бұл қосымша деректермен кеңейе алмайды және бұл маған үлкен бас ауырлық туғызады.

Қазіргі сәтте мен тек автоматтандырылған java файлын редакцияладым, ол протоколды қалыпты тізімдерді қайтаруға емес, орнықтырмайды, бірақ бұл кейінірек бұл файлды қалпына келтіру қажет болғанда өте ақымақ.

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

2

1 жауаптар

Жасалатын протокол буферінің сыныптарын ешқашан өзгертпеуіңіз керек.

Жасалынатын хабарлар сыныптары дизайнмен өзгермейді. Нысанды өзгерту үшін, сәйкесінше Builder сыныбын қолданып, оның жаңа хабарын жасау үшін, оны баптау әдістерімен басқарыңыз, содан кейін build() өзгертілген нысан. Мысалға:

person.toBuilder()
    .setName("Jeff")
    .addPhone(phoneNumber)
    .build();

Протокоб оқу құралында «Құрылысшылар мен хабарламалар» бөлімін қараңыз:

http://code.google.com/apis/protocolbuffers/docs/javatutorial .html # құрылысшылар

1
қосылды
Рақмет сізге. Келетін деректерді құрастырушыға айналдыруға және оны қолданбалар деректерінің құрылымы ретінде сақтауға жақсы праксис бола ма? немесе дербес деректер құрылымы болуы ұсынылады?
қосылды автор Rickard Liljeberg, көзі
Бірақ құрастырушы жаңа нысанды қайтарады және менің протоколымда хабарламаларды кірістіргендіктен, жаңадан жасалған нысанды басты нысанның тізіміне кіргізуге рұқсат бермеймін '
қосылды автор Rickard Liljeberg, көзі
Әзірлеушіге белгілі бір код үшін бір код жолына кіруге немесе жасауға болады, сондықтан оны сақтағыңыз келетінін түсінбеймін. Google-дің пікірінше, ең жақсы тәжірибе жасалатын протокол буферінің класын өз қосымшаңыздың белгілі бір класына орап қою болып табылады (байланысқан оқулықта «Protocol Buffers and O-O Design» бөлімін қараңыз).
қосылды автор Jeff Gilfelt, көзі