tanszek:oktatas:informacios_rendszerek_integralasa:protobuf
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:informacios_rendszerek_integralasa:protobuf [2024/03/17 17:32] – knehez | tanszek:oktatas:informacios_rendszerek_integralasa:protobuf [2025/03/21 20:03] (current) – [Haladó lehetőségek] knehez | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Protocol | + | ===== Protocol |
- | Strukturált adatok szerializációjához használható megoldás | + | A Protocol Buffers (Protobuf) |
- | A protokol buffer | + | A **Protobuf** |
+ | |||
+ | ==== A Protobuf jellemzői ==== | ||
+ | * **Hatékonyság**: | ||
+ | * **Többnyelvű támogatás**: | ||
+ | * **Visszafelé kompatibilitás**: | ||
+ | |||
+ | A Protobuf egy adatintegrációs projektben való implementálásához tipikusan: | ||
+ | |||
+ | * Definiálni kell az adatszerkezeteket egy **.proto** fájlban. | ||
+ | * Protobuf fordító (**protoc**) az adathozzáférési osztályokat legenerálja a .proto fájlok alapján. | ||
+ | * A fejlesztő könnyen használni tudja ezeket a **generált osztályokat** | ||
További részletek itt olvashatók: | További részletek itt olvashatók: | ||
https:// | https:// | ||
- | |||
Line 42: | Line 52: | ||
A futtatás után létrejön a book_pb2.py ami generált forráskód, | A futtatás után létrejön a book_pb2.py ami generált forráskód, | ||
- | 4.) Futtassuk le a **pip install | + | 4.) Futtassuk le a **pip install protobuf** parancsot. |
5.) Hozzuk létre a server.py fájlt a következő tartalommal: | 5.) Hozzuk létre a server.py fájlt a következő tartalommal: | ||
Line 151: | Line 161: | ||
8.) Futtassuk le a szervert és klienst. **python server.py** majd a **python client.py** parancsokat és nézzük meg és elemezzük mi történik? | 8.) Futtassuk le a szervert és klienst. **python server.py** majd a **python client.py** parancsokat és nézzük meg és elemezzük mi történik? | ||
+ | |||
+ | 9.) Írjuk meg más nyelven a klienst! | ||
+ | |||
+ | Egy lehetséges megoldás az alábbi java-ban. Generáljuk le a protoc segítségével a java helper osztályt. A Maven repository-ból töltsük le a protobuf.jar-t (https:// | ||
+ | |||
+ | <sxh java> | ||
+ | import java.io.IOException; | ||
+ | import java.io.ObjectOutputStream; | ||
+ | import java.net.Socket; | ||
+ | |||
+ | public class Client { | ||
+ | Socket requestSocket; | ||
+ | ObjectOutputStream out; | ||
+ | |||
+ | Client() { | ||
+ | } | ||
+ | |||
+ | void run() { | ||
+ | try { | ||
+ | requestSocket = new Socket(" | ||
+ | out = new ObjectOutputStream(requestSocket.getOutputStream()); | ||
+ | BookOuterClass.Books books = BookOuterClass.Books.parseFrom(requestSocket.getInputStream()); | ||
+ | for (BookOuterClass.Book book : books.getBooksList()) { | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | } | ||
+ | |||
+ | } catch (IOException ioException) { | ||
+ | ioException.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public static void main(String args[]) { | ||
+ | Client client = new Client(); | ||
+ | client.run(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ |
tanszek/oktatas/informacios_rendszerek_integralasa/protobuf.1710696725.txt.gz · Last modified: 2024/03/17 17:32 by knehez