dotnetomaniak.pl

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

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 478 dni, 3 godziny, 58 minut temu rroszczyk 214 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 489 dni, 18 godzin, 49 minut temu rroszczyk 254 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 491 dni, 2 godziny, 24 minuty temu rroszczyk 164 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 495 dni, 3 godziny, 13 minut temu rroszczyk 248 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 498 dni, 15 minut temu rroszczyk 308 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 511 dni, 14 godzin, 29 minut temu rroszczyk 258 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 511 dni, 14 godzin, 29 minut temu rroszczyk 57 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 520 dni, 3 godziny, 45 minut temu rroszczyk 286 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 534 dni, 2 godziny, 17 minut temu rroszczyk 396 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 595 dni, 4 godziny, 21 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 646 dni, 18 godzin, 15 minut temu rroszczyk 181 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 646 dni, 18 godzin, 15 minut temu rroszczyk 111 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 673 dni, 17 godzin, 36 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 673 dni, 17 godzin, 36 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 680 dni, 3 godziny, 47 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 686 dni, 14 godzin, 9 minut temu rroszczyk 207 rozwiń

Akka.NET simple example with Github Api Posted on by Michal Franc In this post I want to a simple introduction to Akka.NET using an example app based on Github api. I have been diving into Akka .NET lately. My first encounter with this technology was on Vaughn Vernon workshop in Krakow. The main event had couple of side presentation and one of them was about Akka project in Java world. It was a magic to me. Couple years later, I accidentally found ( probably on twitter ) Bartosz Sypytkowski blog and ...

Tagi: Akka.NET
Źródło: www.mfranc.com
Dziel się z innymi:
[EN] Akka.NET simple example with Github Api | Pragmatic Developer

Programowanie rozproszone 692 dni, 6 godzin, 20 minut temu michalfranc 158 rozwiń

Martin Fowler, kilka lat temu pisał o tzw. Richardson maturity model, którego autorem jest tak naprawdę Leonard Richardson. Groźnie brzmiąca nazwa, jak zwykle nie opisuje nic bardzo skomplikowanego. Nie mniej jednak, model ten doskonale opisuje założenia usług RESTful. W zasadzie nie ma framework’ów, które wymuszałyby poprawną implementację REST, stąd niezbędne jest zrozumienie jakie są założenia tych usług. Programiści zbyt często luźno interpretują pojęcie REST. Moim zdaniem, w momencie, gdy REST wchod...

Co to jest usługa REST? Richardson maturity model oraz poziomy 0,1,2.

Programowanie rozproszone 700 dni, 16 godzin, 10 minut temu rroszczyk 384 rozwiń

Hi, today I would like to share with you idea of right parallel execution of actions/methods. Imagine at the beginning that you have queue of messages and even some number of threads that in parallel get messages from queue and then there are doing background work. Now if that messages executes actions on relational database you will quickly find out that some of your work is done right, but b...

Dziel się z innymi:
ParallelExecutorAspect in C#

Programowanie rozproszone 734 dni, 23 godziny, 27 minut temu rroszczyk 156 rozwiń

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

kwiecień

03.
4developers
Warszawa
22.
GET.NET
Łódź
26.
CodeEurope
Kraków
Zobacz wszystkie

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 564,45)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 383,88)

8

Damian (9 041,08)

9

danielplawgo (7 235,99)

10

arek (6 807,9)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 498,06)

15

jedmac (3 298,38)

16

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

17

CaMeL (2 954,87)

18

spetz (2 653,17)

19

mnikolajuk (2 596,93)

20

lkurzyniec (2 558,53)