SMB Chmura Obliczeniowa

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Decyzje projektowe w .NET Framework
Bezpieczeństwo aplikacji WWW
CORBA Łukasz Wnęk.
SIECI KOMPUTEROWE (SieKom) PIOTR MAJCHER WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU W SOCHACZEWIE Zarządzanie.
Architektura systemu Gra strategiczna „Strusia Jama”
WITAM NA SZKOLENIU Porady na dziś i jutro.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Systemy operacyjne.
Proxy (WWW cache) Sieci Komputerowe
Usługa Windows Server Update Services (WSUS)
Longhorn - Usługi terminalowe
Wzorce projektowe w J2EE
Artur Szmigiel Paweł Zarębski Kl. III i
Systemy zarządzania treścią CMS
USŁUGA FTP 1. Definicja FTP. FTP (File Transfer Protocol, ang. protokół transmisji plików) jest protokołem typu klient-serwer, który umożliwia przesyłanie.
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Konfiguracja kont w programie Adobe Dreamweaver
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
Prezentacja funkcjonalności dziennika e-klasa
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Cloud computing – chmura obliczeniowa
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Moduł Lojalnościowy. Czyli zatrzymanie klienta przy naszym zakładzie optycznym.
Prezentacja funkcjonalności dziennika e-klasa
1 PREZENTACJA FUNKCJONALNOŚCI DZIENNIKA UCZNIA Moduł Dyrektora ZAPRASZAMY ZAPRASZAMY O&S Computer-Soft ul. Żwirki i Wigury 8-12, Wałbrzych, woj.
Lokalne serwery www Serwer WWW - ang. Web server jest to oprogramowanie zainstalowane na serwerze podłączonym do sieci Internet. Używające technologii.
System zamawiania on-line
Witaj. Zapraszamy Ciebie do zapoznania się z przewodnikiem, który pokaże jak założyć konto oraz w jaki sposób można korzystać z usług w serwisie iplay.pl.
Prezentacja i szkolenie
Programowanie obiektowe – zastosowanie języka Java SE
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Wybrane zagadnienia relacyjnych baz danych
Projekt i realizacja aplikacji sklepu internetowego z obsługą księgowania w środowisku cloud computing Rafał Ogrodnik Promotor mgr inż. Michał Dobrzyński.
Komendy SQL do pracy z tabelami i bazami
Sieci komputerowe.
Narzędzie wspierające zarządzanie organizacj Parentis Sp. z o. o
Projektowanie stron WWW
Urządzenia 1 mld smartfonów do 2016 r., 350 mln z nich jest używanych w pracy Ludzie 82 % populacji online korzysta z sieci społecznościowych Chmura.
Informatyka Poczta elektroniczna.
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Treści multimedialne - kodowanie, przetwarzanie, prezentacjaOdtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Podstawy języka skryptów
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
Jak powstaje chmura? Maciej Nabożny, Miłosz Zdybał
Iga Lewandowska I EMII MU
Sposoby zdalnego sterowania pulpitem
Serwery Aplikacji Bezpieczeństwo w Aplikacjach.NET uruchamianych pod IIS Arkadiusz Popa, WMiI, UŁ.
Programowanie Zaawansowane
Struktura systemu operacyjnego
Podział sieci komputerowych
EBSCOhost Collection Manager Konto osoby proponującej książki do zakupu Przewodnik support.ebsco.com.
Bartosz Pawlak Wiktor Paliwoda Bezpieczeństwo Systemów Operacyjnych IMAP vs POP.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Politechnika Warszawska Wydział Elektryczny Kierunek: Informatyka stosowana Praca dyplomowa inżynierska Aplikacja do kontroli wydajności produkcji w.
System lokalizacji GPS
Wady i zalety pracy w chmurze
Grzegorz Chodak Wykład
SMB Chmura Obliczeniowa
AudaPad / AudaShare AudaShare PRO (2.8)
Sieci komputerowe Usługi sieciowe 27/09/2002.
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Konteneryzacja i DevOps
Platforma LearningApps
Zapis prezentacji:

SMB Chmura Obliczeniowa Michail Mokkas

Chmura obliczeniowa Model udostępniający zasoby (serwery, dane, aplikacje) w sieci Stwarza iluzję nieskończonych zasobów dostępnych na żądanie Umożliwia naliczanie opłat za korzystanie z ww. zasobów (nie płacimy za niewykorzystane zasoby)

Historia 1950 – mainframe-thin client: użytkownicy mogli korzystać ze współdzielonych zasobów (głównie CPU) 1960 – wiele spekulacji na temat przyszłości obliczeniowej, głównie bazujące na małej ilości „mainframeów” i dużej „dumb terminals”. Pomysł, że cały świat mógłby wykorzystywać tylko 15 centrali danych. 2000 - Amazon usprawniła swoje centra danych używające tylko 10% pojemności, by zostawić miejsce na okresowe zawahania. Powstał pierwszy wzór architektury chmury obliczeniowej. Wystartował Amazon Web Services (AWS). 2008 – Eucalyptus: pierwsza kompatybilna z AWS API platforma do tworzenia środowisk chmur obliczeniowych. Rusza także Google App Engine (beta). Obecnie - szeroka dostępność wydajnych sieci i tanich komputerów oraz urządzeń przechowujących dane jak i ekspansja wirtualizacji sprzętowej oraz architektury bazującej na usługach przyczyniły się do szybkiego rozwoju chmury obliczeniowej

Jak działa Komunikacja z usługami a nie ze szczególnym urządzeniem/sprzętem Przeniesienie wszystkich świadczeń usług IT na serwer Umożliwienie stałego dostępu do nich Szybkość procesów wynika z mocy obliczeniowej serwera http://www.cloudproviderusa.com/wp-content/uploads/2012/09/website-cloud-vs-traditional-smallcopy.jpeg

Dlaczego na mobilne? Pozwala na zlecenie bardziej złożonych obliczeń zewnętrznej usłudze oszczędzając w ten sposób własne zasoby systemowe Umożliwia przetrzymywanie oraz udostępnianie dużej ilości danych, nie zapełniając lokalnych nośników Udostępnia dodatkowe usługi, które mogą wspomagać naszą aplikację

Rodzaje Rodzaje wdrożeniowe chmur (według NIST): Prywatne (private) Wspólnotowe (community) Publiczne (public) Hybrydowe (hybrid)

Prywatne Infrastruktura chmury działająca jedynie dla pojedynczej organizacji Może być zarządzana przez tę organizację lub osobę trzecią i być hostowana wewnętrznie lub zewnętrznie Korzystają z niej jednostki biznesowe (działy) firmy Może ułatwić procesy biznesowe, jednak jest potrzebne zaangażowanie w jej poprawne wdrożenie Zwykle nie posiada elementu finansowego, z którego chmury słyną

Wspólnotowe Infrastruktura chmury wykorzystywana jest przez wspólnoty lub organizacje, które posiadają wspólne cele/misje Jest zarządzana przez kombinację organizacji wchodzących w skład wspólnoty lub osobę trzecią.

Publiczne Zasoby sprzętowe nie są dedykowane pod poszczególnych klientów korzystających z usług firmy dostarczającej chmurę Klient określa, jakie parametry go interesują i płaci dokładnie za to, co zamówił Klient także może w każdej chwili zwiększyć lub zmniejszyć zasoby w dzierżawionym przez siebie środowisku Zmiany zostaną zastosowane natychmiast, bez potrzeby zatrzymywania pracujących aplikacji i maszyn wirtualnych

Hybrydowe Połączenie dwóch lub więcej z poprzednich Część usług i infrastruktury klienta pracuje w chmurze publicznej a inna część w prywatnej lub wspólnotowej

Modele Istnieje wiele klasyfikacji chmur obliczeniowych Najpopularniejsze to: IaaS (Infrastructure as a Service) PaaS (Platform as a Service) SaaS (Software as a Service) NaaS (Network as a Service)

Hoteling/Kolokacja Udostępniane nam jest miejsce w serwerowni, prąd, klimatyzacja i dostęp do internetu My kupujemy sprzęt, zabezpieczenia, system operacyjny, oprogramowanie oraz aplikacje My także tym wszystkim zarządzamy Płacimy jedynie za dzierżawę miejsca w serwerowni

IaaS Dostarcza klientowi infrastrukturę informatyczną (sprzęt oraz serwisowanie) My dostarczamy system operacyjny, oprogramowanie oraz aplikacje Najczęściej wykorzystuje się maszyne wirtualną, którą dostawca może przenosić na mniej obciążone fizycznie serwery Płacimy za faktycznie zużytą moc obliczeniową serwerów Przykłady: Amazon EC2 oraz Azure Virtual Machines

PaaS Dostajemy gotowy i dostosowany do naszych potrzeb komplet aplikacji Nie martwimy się o system operacyjny a jedynie zajmujemy się pisaniem i utrzymaniem aplikacji Klient ma dostęp do interfejsu poprzez program kliencki (zazwyczaj przeglądarkę) Płacimy za zużycie zasobów (czas procesora, miejsce na dysku, liczbę zapytań i transfer danych) Przykłady: Google AppEngine, Microsoft Azure

SaaS Mamy zapewniony sprzęt, system operacyjny oraz finalną aplikację My korzystamy tylko z funkcjonalności danej aplikacji Nie mamy wpływu na rozwój aplikacji Zwykle wiąże się z opłatą każdego użytkownika za miesiąc jej użytkowania Przykład: Google Apps, SkyDrive, Hotmail

NaaS Zapewnia nam usługi związane z transportem sieciowym Zazwyczaj wiąże się z wirtualizacją sieci i ich dzierżawą poprzez wykorzystanie protokołów, jak np. OpenFlow

XaaS X = jakakolwiek usługa Usług przybywa RaaS (Research as a Service) CaaS (Communication as a Service) SaaS (Storage as a Service)

Zarządzanie chmurą Chmura wymaga adaptacyjnych narzędzi zarządzającyh oraz monitorujących, które poradzą sobie w tym dynamicznym środowisku Wymagane jest użycie specyficznych parametrów do pracy z komponentami chmury (np. sprzęt pośredniczący), które często są niewidoczne dla klientów Zarządzanie opłatą za dostęp do zasobów i usług stanowi istotne wyzwanie dla publicznych chmur

Zalety Zwiększone możliwości Zwiększona wydajność Mniejsze koszty Łatwa skalowalność Pozwala skupić się na bardziej kreatywnych aspektach naszej pracy http://www.webhostingspree.com/cloud/images/cloud_dir.png

Wady Bezpieczeństwo danych Obawy dotyczące dostępności danych i aplikacji Uzależnienie od dostawcy usług chmury obliczeniowej

GAE Google App Engine: platforma chmury obliczeniowej wykorzystywana do hostowania aplikacji webowych na serwerach Google’a Oferuje możliwość skalowania wymaganych zasobów dla potrzeb działających w niej usług/aplikacji Jest to platforma jako usługa (PaaS)

Wspierane języki Aktualnie można pisać aplikacje w językach: Python (w tym framework Django i inne) Java (w tym Java Server Pages i inne) PHP Go W przyszłości ma ich być więcej Ewentualnie można skorzystać z opcji “Custom Runtime”, który umożliwia pisanie w dowolnym języku wspierającym żądania HTTP

Restrykcje Otrzymujemy wgląd (read-only) do systemu plików na App Engine App Engine może wykonywać polecenia otrzymane wyłącznie za pośrednictwem zapytań HTTP Aplikacje Javowe mogą korzystać tylko z części listy wszystkich klas dostępnych w standradowej edycji JRE http://strona.pl -> http://www.strona.pl

GAE Datastore Służy do przechowywania danych po stronie serwerowej Korzystamy z języka podobnego do SQL, zwanym GQL, który niestety nie obsługuje odpowiednika „join” Możemy korzystać z interfejsu Twig Object Datastore, co umożliwi asynchroniczne i nie blokujące wykonywanie zapytań Alternatywnie można korzystać z Google Cloud SQL (wspiera Java DataBase Connectivity - interfejs programowania łączący do baz danych za pomocą języka SQL; odpowiednik ODBC)

Google Cloud Endpoints Umożliwia proste i zautomatyzowane generowanie bibliotek służących do sprawnej komunikacji pomiędzy aplikacją frontendową i backendową Ponadto mamy możliwość korzystania z uwierzytelniania Oauth 2.0

Google Cloud Messaging for Android Usługa umożliwiająca przesyłanie danych z serwera do aplikacji frontendowych na urządzeniach Android Wiadomości mogą ważyć do 4 KB Przykłady wiadomości: (notyfikacje o nowej wersji oprogramowania, wiadomość komunikatora) W 2017 r. została zastąpiona Firebase Cloud Messaging.

Zależności Stworzyć moduł backendowy W settings.gradle dodać: ustawić localhost:8080 w run configuration W settings.gradle dodać: include ‘:apka’, ‘:backend’ W build.gradle:apka dodać do dependencies: compile project(path: ‘:backend’, configuration: ‘android-endpoints’) W build.gradle:backend dodać: endpoints{ getClientLibsOnBuild = true getDsicoveryDocsOnBuild = true } Na koniec: “Sync Project with Gradle Files”

Projekt: Frontend Frontend (aplikacja na Android): File -> New -> Android Application Project Reszta jak zwykle ;)

Projekt: Backend Backend (aplikacja po stronie chmury): Dodajemy jako nowy moduł File > New > New Module... > Google Cloud Module API Key oraz Project Number otrzymujemy z Google API console (można pozostawić puste na razie)

Entity Struktura, która odzwierciedla element przechowywany w Datastore (wiersz) Nasza klasa entity musi być oznakowana: @Entity Ponieważ Datastore nie posiada kolumn, posiadają one atrybuty (pola naszego entity) Dla przykładu - Entity osoba posiada Entity Kind = Osoba, Entity Key = PESEL oraz atrybuty: imię, nazwisko, wzrost itd.

Entity: Person (backend) Przy wykorzystaniu Key potrzebne jest dodanie do wygenerowanego end-pointa kawałek kodu sprawdzający czy nie jest on Null.

Entity: Person (backend) Należy kliknąć prawym przyciskiem myszy na klasę Person i następnie wybrać Google -> Generate Cloud Endpoint from Java Class Uzyskamy w ten sposób automatycznie wygernerowaną klasę PersonEndpoint wraz z metodami potrzebnymi do korzystania z DataStore

Przetestowanie projektu W MainActivity.java umiesczamy:

Odpalenie lokalnie Należy wybrać Run > Edit Configurations > + > App Engine DevAppServer Następnie w edytorze wyznaczyć konfiguracji nazwę oraz podać moduł “backendowy”, który powinien odpalać Na koniec należy wybrać “synchronize with build.gradle configuration”

Uruchomienie Zaczynamy od backendowego projektu: Run as -> Web Application Po ukończeniu uruchamiania app engineu możemy odpalić aplikację androidową Jeżeli wybraliśmy lokalne odpalenie app engine, musimy odpalić aplikację w emulatorze

Rezultat Wystarczy wejść na jedną z poniższych stron: localhost:8888/_ah/admin localhost:8888/_ah/admin/datastore localhost:8000/datastore Uzyskamy wgląd do entites, które znajdują się w bazie danych Przed odpaleniem frontendu będzie pusta, po odpaleniu doda Entity Kind: Person Po kliknięciu List Entities będziemy mogli zobaczyć nowy rekord z atrybutem name, jaki dodaliśmy

Rezultat kont. 1

Przykład - MyBean.java

Przykład - MyEndpoint.java Można automatycznie wygenerować MyBeanEndpoint na podstawie klasy MyBean.java . (opcja: Generate Cloud Endpoint from Java Class)

Przykład - WEB-INF: index.html

Rezultat Po odpaleniu backendu i skierowaniu przeglądarki na adres: localhost:8080.

API Explorer Naprowadzając przeglądarkę na localhost:8080/ah_/api mamy możliwość przejrzenia metod w naszym API.

Przykład: request - response Dane są przesyłane w formacie JSON.

Pobranie danych z DataStore Za odbieranie danych w naszym projekcje frontendowym odpowiedzialna jest klasa: collectionResponsePerson.java Można ją znaleźć w paczce wygenerowanych klas endpoint-libs/libpersonendpoint... Ma za zadanie przetworzenie (przeparsowanie oraz zserializowanie) obiektu w formacie JSON przesyłanego poprzez endpoint (za pośrednictwem HTTP)

Pobr. danych z DS kont. 1 Więcej na ten temat: https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/HelloEndpoints

Objectify Jest to biblioteka usprawniająca wymianę danych poprzez API, które zostało specjalnie zaprojektowane pod Google App Engine datastore. Pozwala na zapisanie, odzyskanie, usunięcie oraz odpytywanie naszych własnych typów objektów. Przykład: Aby skorzystać z objectify należy dopisać do dependencies: compile ‘com.googlecode.objectify:objectify:5.0.3’

Dodawanie danych poprzez skrypt Istnieje możliwość skorzystania z gotowego skryptu do zapełnienia naszego DataStore’a danymi: Wystarczy uruchomić i podać plik csv jako arg1 oraz nazwę encji jako arg2 Przykładowy plik csv dla encji Person:

Dodawanie danych kont.1 Do pliku web.xml w projekcie backendowym dodajemy:

Dodawanie danych kont. 2 Dodatkowo musimy dorobić plik bulkloader.yaml :

Sprawdzenie danych Po uruchomieniu skryptu powinniśmy otrzymać następujący rezultat:

Postawienie na chmurze Google

Zmiany (z lokalnej wersji) W skrypcie należy zmienić url na: http://naszeAppID.appspot.com/remote_api W backendowym projekcie w pliku appengine-web.xml: <application>naszeAppID</application> W frontendowym projekcie należy zmienić w pliku CloudEndpointUtils.java wartość LOCAL_ANDROID_RUN z true na false Uruchamiamy backendowy projekt za pomocą opcji Deploy to App Engine, następnie uruchamiamy frontendową aplikację (jak zwykle)

Infrastruktura

Search API GAE dysponuje Search API Przydatne do wyszukiwania danych dotyczących elementów naszej implementacji, które z kolei są opisane w specjalnym modelu do indeksowania dokumentów posiadających strukturę Użytkownik wpisuje słowo kluczowe (może być częścią nazwy lub opisu) a w rezultacie otrzymuje elementy pasujące Dodatkowo umożliwia wyszukiwanie geolokalizacyjne obiektów bez konieczności pisania własnego rozwiązania

Task Queues W przypadku, gdy musimy wykonać jakieś dodatkowe czynności w związku z nadesłanym zapytaniem i są one czasochłonne, możemy wykorzystać usługi Task Queue, aby zakoleikować te zadania i wykonać je asynchronicznie Dodatkowe rezultaty mogą być przesłane w późniejszym terminie (GAE decyduje kiedy) Alternatywnie nasz kod może na żądanie odpytywać i odbierać rezultaty z zaległych zadań

Scheduled Tasks Poza przetwarzaniem zapytań od mobilnych klientów synchronicznie (Google Cloud Endpoints) oraz asynchronicznie (Task Queues), nasz kod po stronie GAE może co jakiś czas wykonywać pewne zaplanowane zadania Do planowania zadań wykorzystujemy usługę Cron Service Przykładem zastosowania może być co kilkuminutowa aktualizacja listy najlepszych graczy naszej gry

Cron Service (przykład)

Mail API Aplikacje App Engine mogą przesyłać wiadomości email w imieniu administratorów aplikacji lub uzytkowników posiadających konto Google Pliki appengine-web.xml oraz web.xml Dodatkowo potrzebna jest klasa MailHandlerServlet

Mail API (wysyłanie)

Przykład: Projekt GAE (frontend i backend) Frontend rejestruje się do backendu Możliwość wysyłania wiadomości do podłączonych urządzeń poprzez usługę Google Cloud Messaging for Android

Przykład kont. 1 Należy wpisać API key oraz numer projektu: API key można uzyskać po uruchomieniu Google Cloud Messaging for Android pod adresem: https://console.developers.google.com/project/<nasz projekt>/apiui/api Następnie należy wybrać tab Credentials i stworzyć nowy klucz Public API access lub OAuth Numer projektu widoczny jest w tabie overview (lewy górny róg).

Przykład kont. 2 Przestawiamy LOCAL_ANDROID_RUN  z false na true (znajduje się w projekcie frontendowym w klasie: CloudEndpoints) Startujemy backend jako web service Uruchamiamy frontend jako aplikację androidową na emulatorze Jeżeli nie wpisaliśmy API key podczas tworzenia projektu, mamy możliwość jego dodania i modyfikacji w klasie MessageEndpoint (wartość API_KEY)

Działanie

Działanie kont. 1

Więcej na temat GAE https://developers.google.com/eclipse/docs/endpoints-androidconnected-gae https://cloud.google.com/developers/articles/mobile-application-solutions https://cloud.google.com/developers/articles/how-to-build-mobile-app-with-app-engine-backend-tutorial https://cloud.google.com/developers/ https://developers.google.com/appengine/docs/java/ https://developers.google.com/appengine/docs/java/gettingstarted/introduction

Firebase Platforma wykorzystywana do budowy aplikacji mobilnych oraz webowych. Wcześniejsza wersja (Envolve) umożliwiała aplikacjom dodawanie funkcjonalności czatu. Była jednak wykorzystywana często do synchronizacji i przesyłania informacji, które nie były zwykłymi wiadomościami komunikatora. W 2011 roku nastąpił podział firmy co skutkowało powstaniem Firebase. Przejęta przez Google w 2014 r. Wieloplatformowa (m.in. Android, iOS)

Firebase - Usługi Niektóre z usług jakie oferuje Firebase: Realtime Database – baza danych (posiada REST API) Authentication – uwierzytelnienie użytkowników po stronie klienta (można korzystać z social login providerów jak m. in. Facebook czy Google) Cloud Functions – rozszerza aplikację o backendowe możliwości wykorzystując m. in. Google Cloud Services Hosting – umożliwia hostowanie stron (plików HTML, CSS, Javascript i innych) Google Analytics – daje wgląd do informacji dotyczących użytkowanie aplikacji i statystyk dotyczących interakcji użytkowników. Cloud Messaging – stosowane w celu tworzenia notyfikacji oraz rozsyłania informacji. AdMob – tworzenie reklam w celu uzyskania źródła dochodów w naszej aplikacji.

Korzystanie z Firebase Kroki: Zarejestrować konto na: https://console.firebase.google.com/u/0/ Dodać projekt Przepisać “package name” naszej apki Wygenerować SHA-1 keytoolem Zarejestrować apkę i ściągnąć google-services.json Zmodyfikować plik gradlowe według wskazówek na stronie (po rejestracji) Zmodyfikować reguły Realtime Database. Z poziomu Android Studio jest dostępny assystent, który pomaga z całym procederem.

Korzystanie z Firebase – kroki 2

Korzystanie z Firebase – kroki 3

Uwierzytelnianie w Firebase Należy dodać następującą zależność w build.gradle : FirebaseAuth - klasa zarządzająca uwierzytelnianiem w Firebase. implementation 'com.google.firebase:firebase-auth:16.0.5' public class MainActivity extends Activity { private FirebaseAuth fa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fa = FirebaseAuth.getInstance(); } }

Uwierzytelnianie w Firebase - rejestracja fa.createUserWithEmailAndPassword(et_user.getText().toString(), et_pass.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { FirebaseUser user = fa.getCurrentUser(); } else { Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } } });

Uwierzytelnianie w Firebase - logowanie fa.signInWithEmailAndPassword(et_user.getText().toString(), et_pass.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { FirebaseUser user = fa.getCurrentUser(); } else { Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } } });

Uwierzytelnianie w Firebase - informacje o użytkowniku FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { String name = user.getDisplayName(); String email = user.getEmail(); Uri photoUrl = user.getPhotoUrl(); boolean emailVerified = user.isEmailVerified(); String uid = user.getUid(); Task<GetTokenResult> tr = user.getIdToken(false); //autorefresh }

Realtime Database - dane Dane w RTDB są trzymane w postaci obiektów JSON. Tworzą one strukturę drzewa. Przykład: {   "users": {     "user1": {       "name": "Michail Mokkas",      },     },     "products": { "product1": { "name": "Mleko", }   } }

Realtime Database - uprawnienia Wymaga uprawnień do czytania/edycji dla użytkowników z urpawnieniami. Można jednak ustawić na publiczne: Ewentualnie tylko dla wybranych użytkowników: {   "rules": {     ".read": true,     ".write": true   } } {   "rules": {     "users": {       "$uid": {         ".read": "$uid === auth.uid",         ".write": "$uid === auth.uid"       }     }   } }

Realtime Database - obiekt bazy oraz zapis FirebaseDatabase - klasa, której obiekty reprezentują rtdb. DatabaseReference - referencja do lokacji danych w bazie. Otrzymujemy obiekt reprezentujący bazę poprzez wykorzystanie metody FirebaseDatabase.getInstance() Do zapisu danego obiektu w bazie, wymagany jest obiekt reprezentujący referencję w bazie. Referencję otrzymujemy poprzez metodę getReference("Klasa obiektów") na wczesniej uzyskanym obiekcie FirebaseDatabse. Następnie możemy już zapisać nasze dane poprzez metodę setValue(moj_obiekt) na referencji bazy.

Realtime Database - odczyt Aby nasze dane w bazie były uaktualniane w czasie rzeczywistym, powinniśmy dodać ValueEvenListener do naszej referencji. Metoda onDataChange() jest wykonywana kiedy nasz listener jest dodany i za każdym razem kiedy nastepują zmiany w danych. W razie błędu zostanie wywołana metoda onCancelled().

Realtime Databsse - dodaktowe metody i interfejsy DataSnapshot - reprezentuje dane z lokacji w bazie. push() - dodaje dane i zwraca klucz, który jest potrzebny do dodania kolejnych danych ChildEventListener - interfejs, który jest wykorzystywany do otrzymywania zdarzeń na temat zmian w potomnych lokacjach danego DatabaseReference. onCancelled() - metoda ta wykona się, jezeli pojawił się błąd po stronie serwera lub zostały zmienione uprawnienia. onChildAdded() - metoda ta wykona się, jeżeli pojawi się nowa lokacja potomna. onChildChanged() - metoda ta wykona się, jeżeli dane w lokacji potomnej się zmieniły onChildMoved() - metoda ta wykona się, jeżeli priorytet lokacji potomnej się zmieni. onChildRemoved() - metoda ta wykona się, jeżeli lokacja potomna zostanie usunięta.

Firebase - przykład (Baza ludzi)

Firebase – przykład kont. 1

Firebase – przykład kont. 2

Rezultat - apka

Rezultat na stronie