eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingwhat up, programowanie aspektoweRe: what up, programowanie aspektowe
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!not-for-mail
    From: zażółcony <r...@c...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: what up, programowanie aspektowe
    Date: Wed, 09 May 2012 16:06:20 +0200
    Organization: CI TASK http://www.task.gda.pl/
    Lines: 75
    Message-ID: <jodtkn$ppb$1@news.task.gda.pl>
    References: <jobtll$46i$1@inews.gazeta.pl> <jodc79$4bq$2@inews.gazeta.pl>
    <jodhhe$dj3$1@inews.gazeta.pl> <jodj8j$4bq$5@inews.gazeta.pl>
    <jodsj5$bun$1@inews.gazeta.pl>
    NNTP-Posting-Host: efp194.internetdsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.task.gda.pl 1336572375 26411 83.14.249.194 (9 May 2012 14:06:15 GMT)
    X-Complaints-To: a...@n...task.gda.pl
    NNTP-Posting-Date: Wed, 9 May 2012 14:06:15 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20120428
    Thunderbird/12.0.1
    In-Reply-To: <jodsj5$bun$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:197151
    [ ukryj nagłówki ]

    W dniu 2012-05-09 15:48, f...@g...SKASUJ-TO.pl pisze:
    > Edek Pienkowski<e...@g...com> napisał(a):
    >
    >> Dnia Wed, 09 May 2012 10:39:42 +0000, napisal:
    >>
    >>> Edek Pienkowski<e...@g...com> napisał(a):
    >>>
    >>>> Dnia Tue, 08 May 2012 19:54:29 +0000, prof fir napisal:
    >>>>
    >>>>> zasadniczo pierwszy raz o tym slysze, spostrzezenie
    >>>>> w polskiej wiki wydaje sie sensowne, ale czy ktos tego
    >>>>> uzywal, czy da sie to jakos zrobic i jak to wyglada
    >>>>
    >>>> Tak dosłownie, to w Javie masz AspectJ. Pozwala za pomocą
    >>>> 20 linijek kodu zrobić takie rzeczy:
    >>>>
    >> [...]
    >>>>
    >>>
    >>> w sumie to dosyc ciekawa rzecz, przynajmniej jako pojecie
    >>> bo pewnie moze byc trudno wyaspektowywac pewne kawalki w
    >>> praktyce (np. log musi miec cala mase lokalnych 'dowiazan'
    >>> choc tez mi sie nie podoba ze brudzi kod)
    >>
    >> Akurat jest dokładnie odwrotnie: aspekty są poza głównym
    >> kodem, pozostawiając samą treść działania wolną (przynajmniej
    >> wizualnie) od aspektĂłw.
    >>
    >> Czasami to jest niekorzystne, trzeba zdawać sobie sprawę,
    >> że istnieje kod modyfikujący zachowanie, którego jawnie
    >> nie widać. Coś za coś, ogólnie daje to więcej niż jest
    >> z tym problemĂłw.
    >>
    >
    > da sie w kazdym razie pomyslec, np jako wywolywanie np
    > ukrytych metot atBegin() czy atEnd() czy np aspectsResolve()
    > albo cos dla oznaczunych akcji (np funkcji) w normalnym kodzie -
    > takie 'handlery' musialyby miec mozliwosc zidentyfikowania funkcji spod
    > ktorej zostaly wywolane i np dostepu do jej zmiennych
    > lokalnych - co technicznie da sie zrobic, nie mowie ze to
    > koniecznie dobry pomysl ale koncepcja ciekawa (np odwalenie
    > milionow wywolan do loga do odzielnego 'centrum' )

    Niekoniecznie zaraz muszą znać parametry - zobacz przykład
    z transakcją - czy funkcje zaczynające i kończące transakcję
    bazodanową muszą znać parametry biznesowe przekazywane
    do środka tej funkcji ?

    > nie bardzo jednak kojarze w danym momencie inne zastosowania
    > niz te z logiem, np w jakim sensie cache lub inne?
    No miałeś przykład - otwarcie i zamkniecie transakcji.
    Inne: sprawdzenie, czy użytkownik ma uprawnienia do korzystania
    z danej funkcji - zamiast trzaskać ify w tej funkcji
    wyciągające
    1. dane z sesji użytkownika identyfikujące
    2. dane z jakiegoś zarządcy uprawnień, który wie, kto co może
    dodajesz aspekt - atBegin (jak to nazwałeś) do każdej funkcji
    systemu, który to robi i jak nie ma uprawnień - rzuca wyjątek.
    W funkcji znów nie masz ani kawałka kodu, który by się tym musiał
    przejmować

    Kolejny przykład: zapewnianie wyłączności dostępu. Chcesz mieć
    pewność, że dwóch użytkowników pracujących na dwóch różnych
    stanowiskach pracy nie ma jednocześnie dostępu do tych samych
    danych osobowych klienta (żeby jeden drugiemu ich nie nadpisywał
    a za to, by był świadomy, że ktoś inny właśnie w nich grzebie).
    Wiec znów: dodajesz atBegin, który zakłada blokadę(semafor
    lub jakkolwiek to będzie technicznie zrealizowane) na zasobie,
    i atEnd, który ją zdejmuje. jak atBegin nie daje rady, to wyjatek
    lub inny sposób, który w efekcie końcowym wyświetli userowi
    okienko "Poczekaj, dane klienta są obecnie przetwarzane na stanowisku
    XXX". I znów - funkcja, która przetwarza dane nie ma żadnych
    ifów itp, w ogóle się tym nie zajmuje.


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: