dotnetomaniak.pl

dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Programowanie rozproszone - Strona 2

W poprzednim poście użyliśmy metody ActorSelection w celu uzyskania referencji do aktora: var actor1 = system.ActorSelection("/user/ApplicationUserControllerActor/Piotr") Dzisiaj chciałbym bardziej skupić się na definiowaniu ścieżki do aktora. Pełna ścieżka może zawierać następujące elementy: – protokół – nazwa systemu – adres ip aktora – seria nazw aktorów opisująca hierarchie np. ApplicationUserControllerActor/actor1/actor2 itp.

Dziel się z innymi:
AKKA .NET – definiowanie ścieżki aktora

Programowanie rozproszone 553 dni, 8 godzin, 54 minuty temu rroszczyk 53 rozwiń

Dzisiaj zacząłem pisać post o hierarchii aktorów. Jest to bardzo ważny element w celu osiągnięcia skalowalności i dobrej obsługi błędów (np. poprzez izolacje wadliwych aktorów). W połowie jednak stwierdziłem, że najpierw wypada napisać krótki wpis o zdarzeniach (hooks), jakie możemy zdefiniować w AKKA. Pozwoli nam to potem lepiej zrozumieć przepływ informacji w hierarchiach aktorów. Każdy aktor, może znajdować się w następujących etapach...

AKKA.NET – czas życia aktorów, zdarzenia (hooks)

Programowanie rozproszone 558 dni, 14 godzin, 16 minut temu rroszczyk 72 rozwiń

Tym razem zaczyna się od kodu i od razu dowiemy się dlaczego jest on niebezpieczny...

Dziel się z innymi:
Code review: Async void

Programowanie rozproszone 561 dni, 15 godzin, 10 minut temu rroszczyk 236 rozwiń

Zanim będę kontynuował serię o AKKA.NET, warto zapoznać się z podstawami programowania reaktywnego. Pozwoli to później zrozumieć, w jaki sposób AKKA.NET implementuje założenia programowania reaktywnego. Dzisiaj zatem przedstawię tzw. “The Reactive Manifesto”, którego pełną treść można znaleźć tutaj. Moim zdaniem jednak, manifest może wydawać się trochę skomplikowany i dlatego zdecydowałem się wyjaśnić to po swojemu.

Programowanie reaktywne

Programowanie rozproszone 565 dni, 15 godzin, 8 minut temu rroszczyk 228 rozwiń

W ostatnich dwóch wpisach pokazałem zasady działania modelu aktor. W kolejnych postach będę korzystał już z Akka.net zamiast pseudokodu. Dzisiaj czysty opis podstaw API – bez konkretnego problemu do rozwiązania. Akka.net można zainstalować w formie pakietu Nuget: Install-Package Akka

Dziel się z innymi:
Akka.net – pierwszy przykład

Programowanie rozproszone 577 dni, 5 godzin, 58 minut temu rroszczyk 255 rozwiń

W ostatnim wpisie przedstawiłem zasadę działania modelu aktor. Zachęcam do przeczytania poprzedniego wpisu ponieważ dzisiaj skupię się na przykładzie, a nie podstawach teoretycznych. Jeśli poprzedni wpis nie był do końca zrozumiały, zachęcam do przeanalizowania przykładu z tego wpisu i potem powrócenia do poprzedniego postu – wtedy myślę, że wiele zagadnień będzie prostsze w zrozumieniu.

Wielowątkowość: przykład modelu aktor

Programowanie rozproszone 578 dni, 13 godzin, 33 minuty temu rroszczyk 166 rozwiń

Aktor jest modelem budowania aplikacji wielowątkowych. Powstał w celu ułatwienia synchronizacji między różnymi wątkami. Programiści piszący aplikacje wielowątkowe zwykle korzystają z klasycznych blokad (lock) w celu opisania sekcji krytycznej. W wielu sytuacjach jest to najlepszy i najprostszy sposób. Niestety dla dużych i skomplikowanych systemów, utrzymywanie takiego kodu jest bardzo trudne, mozolne i niezwykłe podatne na powstanie deadlock lub livelock.

Wielowątkowość: Wzorzec aktor (actor based programming)

Programowanie rozproszone 582 dni, 14 godzin, 23 minuty temu rroszczyk 250 rozwiń

Coraz więcej API dostarcza asynchroniczne wersje metod. Niektóre z nich, idą o krok dalej i w ogóle nie posiadają synchronicznej wersji. Załóżmy, że zewnętrzna biblioteka ma następującą metodę: async Task

Metody asynchroniczne z async oraz oczekiwanie na rezultat

Programowanie rozproszone 585 dni, 11 godzin, 25 minut temu rroszczyk 310 rozwiń

W .NET 4.5 pojawiła się metoda Task.Run. Z przyzwyczajenia jednak przez długi czas używałem tylko Task.Factory.StartNew. Obie metody służą do stworzenia nowego wątku i natychmiastowego jego uruchomienia. Sposób wywołania wygląda bardzo podobnie...

Dziel się z innymi:
Różnica między Task.Run, a Task.Factory.StartNew

Programowanie rozproszone 599 dni, 1 godzinę, 39 minut temu rroszczyk 260 rozwiń

Tworząc nowe zadania (wątki) za pomocą TPL, możemy przekazać parametry AttachedToParent lub DenyChildAttach. Określają one, czy wątek powinien być podłączony do rodzica czy nie. W dzisiejszym wpisie postaram wyjaśnić się, czym one różnią się. Parametry definiują relację wątku z nadrzędnym wątkiem. Jeśli wątek A, tworzy kolejny wątek B, wtedy za pomocą powyższych wartości możemy określić relacje wątku B z A. Spróbujmy zatem wyjaśnić jak ta relacja wpływa na...

Dziel się z innymi:
Tworzenie wątków: TaskCreationOptions.DenyChildAttach, TaskCreationOptions.AttachedToParent

Programowanie rozproszone 599 dni, 1 godzinę, 39 minut temu rroszczyk 58 rozwiń

BlockingCollection jest specjalną kolekcją danych, przygotowaną do implementacji wzorca producent-konsument. Nakład pracy do implementacji tego wzorca jest minimalny z BlockingCollection. Nie musimy martwić się o synchronizację, sekcję krytyczną czy deadlock. Zacznijmy od razu od przykładu. Producent będzie wyglądać następująco...

Producent-konsument w C# – BlockingCollection

Programowanie rozproszone 607 dni, 14 godzin, 54 minuty temu rroszczyk 289 rozwiń

O usługach REST, które dzisiaj są wszechobecne pisałem już wiele razy np. tutaj.  Dzisiaj chciałbym napisać krótkie podsumowanie w formie porad i antywzorców. Zaczynamy: 1. Nigdy nie używaj czasowników w URI. Przykład błędnych linków: GET: localhost\persons\1\UpdateEmail?email=’…’ Jedynym dozwolonym czasownikiem w adresie to HTTP verb. Całość linku to nic innego jak hierarchia zasobów. Poprawna aktualizacja adresu email może wyglądać zatem następująco: PUT: localhost\persons\1\email Metoda PUT ozn...

Tagi: .Net, C#, REST, RPC
Dziel się z innymi:
Kilka porad na temat usług REST

Programowanie rozproszone 621 dni, 13 godzin, 26 minut temu rroszczyk 399 rozwiń

I’ve recently seen a few articles about video streaming with raspberry pi using node.js streaming server and ffmpeg utility. It’s funny how easily you can create your own live video streaming with opensource tools and cheap mini-computer. But there are some problems with this approach. The highest resolution I was able to capture, encode and live stream was 160×120. It is too low to recognize people or plate numbers seen on the picture. There are also some network issues that make things...

Cheap web-cam monitoring in the Cloud with raspberry pi, ASP.NET MVC and Marionette.js | WellDesignedSoftwareException

Po ostatnim poście powinno być jasne dlaczego i kiedy warto używać CORS. Przedstawiony przykład pokazywał dwa kluczowe nagłówki: origin oraz Access-Control-Allow-Origin. W praktyce jednak, może zdarzyć się, że przeglądarka wyśle dodatkowy pakiet, tzw. “prefight”. Przeglądarki omijają ten etap, gdy następujące warunki sa spełnione:Zapytanie jest typu GET, HEAD lub POSTW nagłówku nie ma innych zapytań niż  Accept, Accept-Language, Content-Language lub Content-TypeContent-Type ma wyłącznie wartości takie ja...

Dziel się z innymi:
Cross-Origin Request sharing (CORS): Zapytania prefight

Programowanie rozproszone 682 dni, 15 godzin, 30 minut temu rroszczyk 138 rozwiń

Bardzo często tworzymy osobne usługi, które dostarczają jakieś dane. Pisząc aplikacje ASP.NET Web nierzadko chcemy korzystać z zewnętrznych usług, zamiast hostować dane w tym samym projekcie. Niestety może to spowodować problemy, jeśli chcemy skonsumować usługę w JavaScript, a należy ona do innej domeny. Załóżmy, że mamy jakąś usługę REST. Dla testów posłużyłem się http://www.mocky.io. Polecam tą stronę, można generować tam własne “mocki”.  Dla tego wpisu stworzyłem mock, który zwraca następującą treść ...

Tagi: .Net, JavaScript, REST
Dziel się z innymi:
JSONP – wywoływanie zewnętrznych usług z JavaScript

Programowanie rozproszone 734 dni, 5 godzin, 25 minut temu rroszczyk 185 rozwiń

W poprzednim wpisie pokazałem jak korzystać z JSONP w JQuery. Wiemy, że usługa musi rozpoznawać parametr callback i zwrócić treść w odpowiedniej formie tzn. “callback(dane)”. Załóżmy, że mamy następujący kontroler...

Tagi: asp.net, JSON, WebAPI
Dziel się z innymi:
ASP.NET WebAPI a JSONP

Programowanie rozproszone 734 dni, 5 godzin, 25 minut temu rroszczyk 112 rozwiń

W poprzednim poście wyjaśniłem na czym polega działanie wzorca i kiedy z niego korzystać. Dzisiaj przyszedł czas na implementację. Nie będziemy jednak pisać wszystkiego od początku, ponieważ jest to dość skomplikowane i prawidłowa implementacja zajęłaby sporo czasu...

Circuit Breaker: Implementacja za pomocą Polly

Programowanie rozproszone 761 dni, 4 godziny, 45 minut temu rroszczyk 153 rozwiń

Sporo ostatnio o SOA i mikroserwisach. Jednym z wyzwań podczas rozłupywania monolitu na serwisy jest wydajność. Wywołania in-memory są zastępowane np. HTTP lub innym zdalnym protokołem. Niesie to ze sobą kilka niedogodności m.in.: 1. Wydajność jest dużo mniejsza – serializacja, deserializacja, nawiązanie połączenia, transmisja danych. 2. Serwis może być nieaktywny. 3. Może wystąpić timeout. Powyższe punkty mogą być wyjątkowo niebezpieczne, gdy wiele usług próbuje wywołać serwisy, które aktualnie nie...

Obsługa zdalnych wywołań: wzorzec Circuit Breaker

Programowanie rozproszone 761 dni, 4 godziny, 45 minut temu rroszczyk 286 rozwiń

Ostatnio na blogu sporo o SOA. W poprzednim wpisie, poruszyłem temat kompatybilności, teraz czas na coś, co ma na celu zminimalizowanie ilości różnych wersji usług. Najprostszym sposobem na uniknięcie problemów z kompatybilnością jest po prostu nie wprowadzenie niekompatybilnych zmian. Consumer-driven contracts to prosty sposób, aby mieć pod kontrolą śledzenie zmian oraz ich wpływ  na konsumentów naszej usługi. Zwykle usługi posiadają pewien schemat (schema) czyli po prostu kontrakt. Najbardziej restry...

Dziel się z innymi:
Kompatybilność usług: consumer-driven contracts

Programowanie rozproszone 767 dni, 14 godzin, 57 minut temu rroszczyk 85 rozwiń

Kompatybilność usług jest problemem w każdej architekturze SOA, ale w przypadku mikro-usług staje się jeszcze bardziej widoczna. W przyszłości chce napisać post o tzw. consumer-driven contracts, które znacząco mogą zminimalizować potrzebę wersjonowania usług. W każdym razie, bardzo prawdopodobne, że w pewnym momencie zajdzie potrzeba wprowadzenia zmiany, która nie jest kompatybilna wstecz. Jeśli nasz system składa się np. z 20 usług to musimy mieć mechanizm, który zagwarantuje nam, że nie wprowadzimy zm...

Kompatybilność usług

Programowanie rozproszone 774 dni, 1 godzinę, 18 minut temu rroszczyk 207 rozwiń

1 2 3 4 5... 10 11
Szkolenia SecurITum

październik

Zobacz wszystkie

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 626,47)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 386,14)

8

Damian (9 056,1)

9

danielplawgo (7 235,99)

10

arek (6 807,95)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 608,06)

15

jedmac (3 318,39)

16

http://jakub-flor... (3 224,66)

17

spetz (3 078,27)

18

CaMeL (2 954,87)

19

lkurzyniec (2 633,85)

20

mnikolajuk (2 596,93)