Spis treści

Code patterns

Typowe podejścia do odbierania wiadomości

Metoda 1: (do użycia tylko jeśli rozmiar wiadomości jest wysyłany na początku lub jest z góry znany)

Metoda 2:

Produkowanie wiadomości z bufora

Zmieniając wiadomości (struktury / obiekty w języku programowania) w dane do wysłania w sieć (ciąg bajtów) (=serializacja) i na odwrót (=deserializacja), można:

Zwykle przygotowując ręcznie funkcję serializującą / deserializującą wiadomość:

Typowe podejścia do wysyłania wiadomości

Metoda 1:

Metoda 2:

Do oceny przy wysyłaniu czy połączenie zostało zerwane można sprawdzić:

Zadania

Zadanie 1. W plikach ctr_srv.cpp i ctr_cli.cpp znajduje się odpowiednio serwer i przykładowy klient usługi 'licznika'.

Good practices

Podejście niskopoziomowe / wysokopoziomowe

Przy programach nie wymagających wysokiej wydajności zwykle szuka się rozwiązań wymagających jak najmniej czasu od programisty - czyli szuka się bibliotek które robią większość rzeczy za programistę.

Dla osiągnięcia wysokiej wydajności zaleca się korzystanie z wydajnych, zwykle niskopoziomowych mechanizmów - albo bezpośrednio, albo za pomocą bibliotek nastawionych na wydajność (a nie wygodę użytkownika). Takie biblioteki są dostępne na różnym poziome abstrakcji, porównaj np. boost asio i libevent). Wysokowydajne mechanizmy niskopoziomowe to:

Web services

Wiele usług sieciowych korzysta z ustandaryzowanych protokołów wymiany wiadomości, np. REST czy SOAP

Middleware

Dostępnych też jest wiele middleware (warstw pośredniczących) które pozwalają programiście używać sieci bez pisania kodu obsługującego sieć, np:

Kryptografia, kompresja...

Często w komunikacji sieciowej korzysta się z dodatkowych warstw abstrakcji między TCP a wiadomościami aplikacyjnymi do osiągnięcia:

Testowanie

Aplikacje korzystające z sieci powinny dodatkowo zostać przetestowane pod kątem: