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
