Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

Simon says...

Szymon Pobiega o architekturze i inżynierii oprogramowania
TechEd: Every class should be a (WCF) service
Sesję pod tym kontrowersyjnym tytułem poprowadził na TechEd 200 Juval Lowy. Ponieważ była to jedna z tych sesji, które najbardziej zapadły mi w pamięć, chciałbym poświęcić jej osobną notkę.

Za sam dobór tytułu należą się panu prezenterowi brawa. Niewątpliwie rzuca się on w oczy i skłania do sprawdzenia, co tak naprawdę autor ma na myśli. O samej sesji już nieco pisałem tutaj, więc nie będę się powtarzał: skupię się na temacie programowania zorientowanego na usługi.

Dlaczego usługi?


Juval, jako główny powód zmiany miłościwie nam panującego paradygmatu obiektowego, na zorientowany na usługi podaje konieczność zrównoleglania obliczeń wymuszoną przez nowe, wielordzeniowe procesory. Słusznie zauważa, że model tradycyjny, czyli programowanie w oparciu o obiekty posiadające stan, źle się skaluje. OK, to już chyba wszyscy wiedzą i nikt nie ma co do tego wątpliwości.

Usługi, ale jakie?


Mamy więc potrzebę (silną), mamy też technologie. Brakuje tylko jednego: metodyki analizy i projektowania. Nikt nie jest w chwili obecnej w stanie powiedziec, w jaki sposób należy analizować i projektować funkcjonalności zbudowane w oparciu o paradygmat usługowy na poziomie kodu. Dla techniki obiektowej mamy całe katalogi wzorców projektowych, dobrze znane zasady SOLID oraz wiele innych "wspomagaczy". Jeśli chodzi o usługi, to wiemy tylko tyle, że dobrze się skalują. Żadnych konkretnych wskazówek dotyczących tego, w jaki sposób pisać kod usługowy. Ba, ja nawet nie mam pomysłu, jak np. logika biznesowa w oparciu o usługi mogłaby wyglądać. Niewątpliwie potrzebna jest diametralna zmiana sposobu myślenia. Potrzebujemy Fowlera od usług!

Juval - prorok, czy co?


Są jeszcze dwie rzeczy, które w prezentacji Juvala są niesamowite. Po pierwsze, jego idea o każdej klasie jako usłudze WCF pochodzi z 2007 roku. Po drugie - Axum! Co to takiego? Język .NET, w którym nie ma pojęcia klasy. Są za to pojęcia usługi (agenta) oraz kanału. Brzmi znajomo? To nie wszystko. Usługi agentów Axum mogą być opublikowane za pomocą WCF-a. Nic, tylko przepowiednia Juvala spełnia się na naszych oczach.

Ale czy napewno nie dało się tego przewidziec? Oczywiście, że sie dało. Wiele artykułów na temat Axum odwołuje się do języka Erlang. Erlang jest językiem, w którym agenci (usługi) są pierwszoplanowym konceptem. Niestety niewiele osób zna Erlang-a. Prawdopodobnie dlatego, iż Erlang ma, w moim mniemaniu, jedną duża wadę - nie posiada pojęcia pętli. Mnie osobiście bardzo trudno było się przestawić na podejście rekurencyjne, więc język ten nie przypadł mi do gustu. Istnieje jednak inny język, który przy zachowaniu zalet, pozbawiony jest wad Erlanga. Jest nim Ada. Panie i panowie: Ada począwszy od wersji 83 pozwala na programowanie zorientowane na usługi (agentów). W wersji 95 funkcjonalność ta została znacznie poprawniona. Nawet biorąc pod uwagę wersję 95, to już piętnaście (!) lat temu Ada miała zadania (task - agent, service), które mogły deklarować punkty wejścia (entry - channel).

Chylę czoła przed twórcami Axum za to, że udało im się przenieść idę agent-based-concurrency na grunt .NET. Nie zapominam jednak, że ich osiągnięcie nie było odkryciem, a jedynie dostosowaniem znanej idei do warunków środowiska.

Ja już ściągnąłem Axum. A Ty?

Opublikowane 31 maja 2009 11:53 przez simon

Filed under:

Komentarze:

# TechEd: Every class should be a (WCF) service @ 31 maja 2009 14:31

Dziękujemy za publikację - Trackback z dotnetomaniak.pl

dotnetomaniak.pl

# TechEd 2009 Los Angeles – Post Factum – część 3 @ 3 czerwca 2009 23:14

Dzień 3 Zen of Architecture Juval Lowy Ta sesja ogólnie była mocno inspirująca, również dlatego, że temat

Zleszczone programowanie...

# TechEd: The Zen of Architecture @ 13 czerwca 2009 18:43

Druga notka na temat pojedynczej sesji TechEd i znów dotyczy prezentacji Juval-a Lowy. Tym razem na warsztat

Simon says...

Komentarze anonimowe wyłączone