Różnice między wybraną wersją a wersją aktualną.
| Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
| 
                    sk2:good_practices [2022/11/21 17:50] jkonczak [Podejście niskopoziomowe / wysokopoziomowe]  | 
                
                    sk2:good_practices [2022/11/21 21:52] (aktualna) jkonczak  | 
            ||
|---|---|---|---|
| Linia 50: | Linia 50: | ||
| - wyślij nieblokująco wszystko co się da (pamiętaj o zwalnianiu pamięci) | - wyślij nieblokująco wszystko co się da (pamiętaj o zwalnianiu pamięci) | ||
| - jeśli wysłano wszystko – przestań czekać na zdarzenie zapisu | - jeśli wysłano wszystko – przestań czekać na zdarzenie zapisu | ||
| - | * jeśli progam potrzebuje pisać z wielu wątków, potrzeba jest synchronizacja (zamek) na obgługę zapisów | + | * jeśli program potrzebuje pisać z wielu wątków, potrzeba jest synchronizacja (zamek) na obsługę zapisów | 
| Metoda 2: | Metoda 2: | ||
| * dla każdego połączenia trzymany jest wątek do wysyłania, lista wiadomości, zamek i zmienna warunkowa | * dla każdego połączenia trzymany jest wątek do wysyłania, lista wiadomości, zamek i zmienna warunkowa | ||
| Linia 96: | Linia 96: | ||
| ==== Middleware ==== | ==== Middleware ==== | ||
| - | Dostępnych też jest wiele //middleware// (warstw pośredniczących) które pozwalają programiście używać sieci bez pisania kodu obsługjącego sieć, np: | + | 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: | 
| * [[https://en.wikipedia.org/wiki/Remote_procedure_call|RPC]] / [[https://en.wikipedia.org/wiki/Distributed_object_communication|RMI]] | * [[https://en.wikipedia.org/wiki/Remote_procedure_call|RPC]] / [[https://en.wikipedia.org/wiki/Distributed_object_communication|RMI]] | ||
| * [[https://pl.wikipedia.org/wiki/Message_Passing_Interface|MPI]] | * [[https://pl.wikipedia.org/wiki/Message_Passing_Interface|MPI]] | ||
| Linia 106: | Linia 106: | ||
| Często w komunikacji sieciowej korzysta się z dodatkowych warstw abstrakcji między TCP a wiadomościami aplikacyjnymi do osiągnięcia: | Często w komunikacji sieciowej korzysta się z dodatkowych warstw abstrakcji między TCP a wiadomościami aplikacyjnymi do osiągnięcia: | ||
| * bezpieczeństwa (integralności, poufności, autentyczności) wykorzystując [[https://en.wikipedia.org/wiki/Transport_Layer_Security|SSL lub TLS]] | * bezpieczeństwa (integralności, poufności, autentyczności) wykorzystując [[https://en.wikipedia.org/wiki/Transport_Layer_Security|SSL lub TLS]] | ||
| - | * kompresji danych (o ile dane dają się kompresować) wykorzystując np. [[https://en.wikipedia.org/wiki/Zlib|deflate, zlib]], [[https://en.wikipedia.org/wiki/LZ4_(compression_algorithm)|lz4]] | + | * kompresji danych (o ile dane dają się kompresować) wykorzystując np. [[https://en.wikipedia.org/wiki/Zlib|deflate, zlib]], [[https://en.wikipedia.org/wiki/LZ4_(compression_algorithm)|lz4]], [[https://en.wikipedia.org/wiki/Zstd|zstd]] | 
| ==== Testowanie ==== | ==== Testowanie ==== | ||