Gyakorlati hálózat Android fejlesztők számára (1. rész)

( 2020. november 7.)

Könnyű adatréteg minden alkalmazáshoz

Itt található a sorozat blogjainak listája:

  • ( 1. rész – HTTP és hálózati réteg )
  • (2. rész – TLS, tanúsítványok és rögzítés)
  • (3. rész – Hitelesítők és elfogók)
  • (4. rész – Teljesítmény, redundancia és egyidejűség)
  • (5. rész – Tesztelés és integráció)
Gyakorlati hálózat Android-fejlesztők számára

Ez a soros „Gyakorlati hálózat Android fejlesztőknek” amikor a hálózati adatrétegről egy másik látásmóddal fogunk beszélni, amely általában címzett d, mert az Android hálózata nehezen működtethető, többszörös hordozókkal, különböző és gazdag tartalommal, streameléssel, és mindezeknek egyetlen részlet hiányában be kell érkezniük a felhasználókhoz

HTTP és hálózati réteg

A Http egy hálózati protokoll, ha az Ön által használt internetre csatlakozik, akkor a definíció szép változata az, hogy a Http a következő:

„Egy alkalmazásréteg protokoll az elosztott, együttműködő, hipermédia információs rendszerek ”

Ez egy csomó dolgot jelent, alapvetően, ha webhelyet épít , okostelefonos alkalmazás, IoT, még csak egy fájl letöltése is, Ön ezt a protokollt használja, az egyszerű HTML-t tartalmazó weboldalakról a webalkalmazásokon keresztül mobilalkalmazásokká nőtte ki magát, és általánosan használt API-rétegsé vált.

Http igénylések Ezeket a felhasználóink ​​generálják, amikor a felhasználó interakcióba lép a mobilalkalmazásunkkal, akkor elkezdünk információkat kérni a szervertől, amikor egy kattintás, esetleg görgetés vagy törlés, például képzeljük el a Gmailt, minden alkalommal, amikor az alkalmazás belsejében megad egy Http-kérést úgy készül, hogy az e-mailek frissüljenek, ha törli, megválaszolja vagy akár megnyit egy e-mailt, ez Http-kérelmet generál, ezek a Http-kérelmek vagy egy origó-kiszolgálóhoz, vagy egy proxy-gyorsítótárazó kiszolgálóhoz kerülnek, és ez a szerver Http-választ generál. Általában a kérések / válaszok bármelyikének van:

  • Request – HTTP-kérést készít URL-re
  • Válasz – A Kérés olyan választ ad vissza, amely hiba vagy siker lehet.
  • Elemezhető adatok – A mobilban elemeznünk kell az objektumra, az adatokra adott választ. Osztály vagy struktúra, amelyet az alkalmazáson belül használhatunk, harmadik felek, például Moshi, Json, Gson * felhasználásával, akár saját is elkészítheti, de amikor elérte a telefont, ez egy egyszerű karakterlánc.

Általában bármelyik Http-kérelem / válasz a következő néhány dologgal rendelkezik:

  • Egységes erőforrás-kereső: egy URL egy adott hely, egy cím valahol az interneten egy meghatározott típusú módszerrel
  • Head ers: ad az ügyfélnek, és a kiszolgáló további információkat ad át HTTP-vel kérés vagy válasz. A HTTP fejléc kis- és nagybetűket nem tartalmazó nevéből áll, amelyet kettőspont követ (:), majd annak értékéből.
  • Törzs: A tényleges válasz, egy egyszerű karakterlánc, amely kiteszi a törzs tartalmát, semmilyen módszer nem lehet, még például az Egység sem.

Minden kérésre kapunk választ, függetlenül attól, hogy nem sikerült-e, állapotkóddal rendelkezünk annak megismeréséhez:

  • 1xx – Minden jó, csak várj egy kicsit
  • 2xx – Minden rendben van, ez a válasz teljesen egymást követi
  • 3xx – A válasz valahol máshol van, elveszett
  • 4xx— Az ügyfél kérése gyengén teljesült, ezért ez a hiba a mobil oldalról
  • 5xx – A szerver nem teljesítette a helyes kérést, ezért ez a hiba a háttéroldali oldalról

HTTP-módszerek

Több HTTP-módszer létezik

  • @GET: Erőforrások információinak olvasására vagy visszakeresésére szolgál. A GET kéréseket csak adatok olvasására és nem változtatására használják, biztonságosnak tekintik őket.
  • @POST: Új erőforrások létrehozására szolgál. Különösen alárendelt erőforrások létrehozására használják. Sem nem biztonságos, sem idempotens. Ezért nem idempotens erőforrás-kérelmekhez ajánlott.Két egyforma POST-kérelem készítése valószínűleg két erőforrást eredményez, amelyek ugyanazt az információt tartalmazzák.
  • @PUT: A frissítési képességekhez használják, egy ismert erőforrás-URI-hoz történő átadásra. az eredeti erőforrás újonnan frissített ábrázolását tartalmazó kérő szervvel. A PUT nem biztonságos művelet, mivel módosítja (vagy létrehozza) az állapotot a szerveren, de idempotens. Más szavakkal, ha létrehoz egy erőforrást vagy frissít egy erőforrást a PUT használatával, majd újra elvégzi ugyanazt a hívást, az erőforrás továbbra is ott van, és továbbra is ugyanaz az állapota, mint az első híváskor.
  • @DELETE: Az URL által azonosított erőforrások törlésére szolgál.
  • @PATCH: A képességek módosítására szolgál. A PATCH kérelemnek csak az erőforrás módosításait kell tartalmaznia, a teljes erőforrást nem. A PATCH sem nem biztonságos, sem idempotens.

Mindazonáltal a mobilalkalmazás ezen módszereinek bármelyikén végrehajtott módosítás szignifikánsan veszélyes lehet, lehetővé teszi egy olyan alkalmazás képét, amely válaszként kettősként kap változót , ha ezt valahogyan logikai értékre változtatják, az adatok elemzése megszakad, ez egy hatalmas buktató, amelyet a háttérmérnököknek figyelembe kell venniük minden alkalommal, amikor megváltoztatnak egy végpontot, amelyre a gyártás során konzultálnak.

HttpClient

Ma a legtöbb Android-alkalmazás API-ra épül. Az API általában egy RESTful webszolgáltatás (sok minden lehet, ez csak egy példa), amely HTTP-n keresztül érhető el, és olyan erőforrásokat tár fel, amelyek lehetővé teszik a felhasználó számára, hogy interakcióba lépjen az alkalmazással, a hozzáféréshez többnyire HttpClientre van szükségünk az internetre, és kezdje meg az adatok beolvasását a felhasználók számára.

Az Android belsejében van egy hihetetlen könyvtárunk, amely néhány másodperc alatt létrehoz egy HttpClient, OkHttpClient néven. , ez egy klienst hoz létre a readTimeOut és a ConnectionTimeOut használatával, ha a kiszolgáló nem ad választ ebben az időtartamban, akkor a kapcsolat sikertelen lesz.
Van egy nagyon fontos része ez az ügyfél a Cache-hez készíthetünk egy készítőt is (és rengeteg egyéb dolgot, amelyekről később beszélünk ebben a sorozatban)

Gyorsítótár

Az erőforrások hálózaton keresztüli lekérése lassú és drága, a fő ok az, hogy több dologtól függünk a mobilban, például attól a hálózattól, ahol a felhasználó van benne, az 5G-től 3G-ig, az optikai szálas WIFI-től a kommunikációs kábelekig

A gyorsítótárat úgy tervezték amiért mindenki számára, még a felhasználók számára is jobb hálózati hívásokat indíthat, mert felesleges hálózati kérések nélkül végződnek. A befogás soha nem helyettesíti az eredeti DNS-hívást, példányként, a gyorsítótár soha nem helyettesíti az adatok forrásból történő lekérését.

Adatbázis gyorsítótárazás valójában nem a hálózati rétegről szól, kérdezzük az API-kat az információkról, és ezt tároljuk a SharedPreferences, a DataStore vagy bármely más adatbázisban, amely lehet relációs vagy nem relációs. Az adatbázis által nyújtott teljesítmény, mind sebességben, mind teljesítőképességben az alkalmazás általános teljesítményének leghatékonyabb tényezője lehet.

Tartalom-megjelenítési hálózat
Amikor a szerverforgalom világszerte zajlik, nem mindig egyszerű és költséges módszer a teljes infrastruktúra lemásolása az egész világon, ehhez pedig rendelkezünk CDN-rel, amely lehetővé teszi, hogy használja az élhelyek globális hálózatát az API-k tartalmának gyorsítótárazott másolatának átadásához, beleértve a képeket, a streaminget és a videókat.

Domainnév Rendszer
Minden, az interneten végrehajtott tartományi kérelem lényegében a DNS-gyorsítótár-kiszolgálókról kérdez, hogy megoldja a tartománynévhez társított IP-címet. A DNS gyorsítótárazás sok szinten előfordulhat, beleértve az operációs rendszert, az internetszolgáltatókon és a DNS-kiszolgálókon keresztül.

A hálózat számára elkészíthetjük például a HttpClient kezelő gyorsítótárát (ellenőrizze a fenti kódot) és a nem gyorsítótárat. egyes alkalmazásokban előfordulhat, hogy frissítjük a frissítést, szükség lehet a gyorsítótár kihagyására és az adatok közvetlen kiszolgálóról történő letöltésére. A teljes frissítés kikényszerítéséhez adja hozzá a no-cache fájlt közvetlenül az OkHttpClient gyorsítótár-készítőjéhez. Az ilyen típusú hívások végrehajtásának döntése speciálisan termék-bölcs, mint technikai szempontból pov.

Ez mind a bejegyzés ezen részére vonatkozik . A következő részben a tanúsítványokat, a rögzítést és a TSL-t fogjuk megvitatni!

Ha segítségre van szüksége:

Mindig örömmel segítek, itt találhat:
Közepes, mint a Twitter, mint @ddinorahtovar
StackOverflow Dinorah Tovar

Boldog kódolás! 👩🏻‍💻