#programowanie też #naukaprogramowania #wzorceprojektowe
Macie może jakieś fajne artykuły omawiające Dependency Injection/Inversion of Control?

Nie chodzi o przykłady praktyczne tylko suchą teorię, jakbyście mieli np. wytłumaczyć 3-latkowi dlaczego ma nie jeść gwoździ xD ciężko cokolwiek takiego znaleźć, wszystko opisane albo na konkretnych przykładach albo językiem przeznaczonym bardziej dla Hawkinga, a potrzebuję najprościej jak się da
@Czarzy:
A. Dependency Injection to po prostu podawanie zależności, dzięki temu klasy mogą się zmieniać niezależnie od siebie, ale bez (B) klasa nadrzędna jest związana z konkretną implementacją (odnosi się do konkretnej nazwy).

B. Dependency Inversion (Principle) - chodzi o zależność na poziomie kodu, czyli o pozbycie się niedogodności z (A). Klasa nadrzędna i ta, na której polega nie mają ze sobą nic wspólnego dzięki zastosowaniu pośredniego interfejsu/klasy abstrakcyjnej. Sposób na
Hej, chcę stworzyć aplikację, która będzie służyć do agregacji i ujednolicenia pewnych danych z zewnętrznych systemów. Zewnętrzne systemy udostępniają dane za pomocą API. Z niektórych systemów aplikacja ma też korzystać z webhooków, ale niektóre ich nie udostępniają. Generalnie mój problem leży w tym, że chcę tą aplikację stworzyć z głową tak, aby była w miarę dobrze skalowalna. Struktura danych na pewno będzie różna w zależności od systemu, tak samo z metodami autoryzacji,
@cinek181992: Napisz sobie moduły do obsługi każdego z tych zewnętrznych systemów wykorzystując ten sam interfejs danych wejściowych i wyjściowych (wzorce Strategia/Adapter), w ten sposób ujednolicisz interfejs komunikacji. W głównej aplikacji wywołując konkretne metody interfejsu nie będzie Cię interesowało jak to jest dalej realizowane byle format danych się zgadzał. Nim bardziej zróżnicowane API zewnętrznych systemów tym trudniej coś takiego zrobić ale da radę.
@cinek181992: Poważnie bym się zastanowił nad pisaniem takiej aplikacji na gotowym frameworku ze sztywną architekturą i strukturą. Możesz go śmiało wykorzystać do serwisu klienckiego, ale zbieranie i ujednolicanie danych bym zorganizował jako osobny mikroserwis (który może wystawiać swoje własne API) z własną architekturą dopasowaną do twojego problemu.

Jak jest dużo wejśc lub wyjść do jakiegoś systemu to na pierwszy rzut oka pasuje tutaj Hexagonal Architecture (zwana także Ports & Adapters), możesz
Hej!
Zacznę od kilku słów wprowadzających. Nie mam lekkiego pióra i czasem mogę popełniać różne błędy. Wybaczcie korygujcie będziemy to załatwiać na bieżąco ( ͡° ͜ʖ ͡°)
Druga sprawa jest taka, że nie spodziewałem się takiego odzewu. Wpis był głównie pod #naukaprogramowania i chyba zlecieli się wszyscy co do sztuki ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡
@pottymouth: wydaje mi się, że ta Twoja seria dużo by zyskała, gdybyś trochę bardziej zgłębiał temat, bo nie wydaje mi się, żeby na rozmowie kwalifikacyjnej takie szkolne regułki jak o tym singletonie wystarczyły. Piszesz, że singleton jest antywzorcem, na rozmowie na 90% padnie pytanie rozwijające "dlaczego tak uważasz?". Powinieneś to rozwinąć.
Przykłady dodatkowych tematów na temat samego singletona:
- skoro domyślnie w np. w springu beany są singletonami, to czy to
Mirki, pytanie o dekorator - czy to, co niżej opisałem ma sens?

Chciałbym użyć dekoratorów do nadawania uprawnień użytkownikowi. Mam interfejs (powiedzmy IUser), w którym określam jakie rzeczy są w ogóle w systemie przewidziane dla użytkownika. W samej klasie User te metody na dzień dobry zwracają wyjątek dający info, że ten użytkownik nie ma uprawnień, by zrobić daną rzecz. Implementacja jest dopiero w metodzie wewnątrz dekoratora. Wszystkie inne metody, które tego
@Tojtek: Wygląda na strasznie #!$%@? pomysł xD

Zacznijmy od tego, że nie masz możliwości nadania kilku ról jednego userowi, bo jedna rola ( z jakimś zestawem uprawnień) to jedna klasa dekorująca. Czyli de facto nie masz możliwości nadawania uprawnień użytkownikowi, no chyba że dekorator reprezentuje konkretnego usera, a nie rolę. Wtedy masz, ale w sposób dość hardkorowy, czyli musisz modyfikować kod, żeby wykonać pracę nieprogramistyczną.

Po drugie nie masz możliwości za
Cześć mirki zastanawiam się trochę na koncepcją używania Commands/Queries zamiast tradycyjnego repozytorium.
W zasadzie trafiłem na post Jimmy-ego Bogard-a, gdzie proponował podobne rozwiązanie zamiast stosowania repozytorium.

Moja interpretacja tego co on tam napisał, wygląda mniej więcej tak:

Interfejs dla queries

public interface IQueryHandler
where TResult: class
where TArg: class
{
TResult Execute(TArg query);
}

Przykładowa implementacja:

public class TreesTransQuery : IQueryHandler, TreeTransQuery>
{
private readonly DatabaseContext _context;
public TreesTransQuery(DatabaseContext context)
{
_context
@pepepanpatryk: Wydaje mi się, że można to zrobić jeszcze bardziej generycznie, korzystając z _context.Set i ograniczyć użycie dodatkowych jeszcze obiektów dla każdego zapytania, jeżeli będzie ono np. takie samo dla wielu różnych encji :>
@pepepanpatryk: Przewaga Query nad Repo jest taka, że możesz w bazowej klasie zaimplementować logikię, która będzie wykonywana przed/po głównej metodzie(Execute). Czyli np. możesz tam sprawdzić uprawnienia, logować coś itd. Za to przy Repo będzie mniej kodu.
Cześć mirki.
Ma ktoś może pod ręką jakieś artykuły, wzorce, koncepcje itp, na temat aplikacji webowych działających w czasie rzeczywistym?
Mam na myśli kwestie architektury takiego oprogramowania, problemów, czy przyjętych i sprawdzonych koncepcji.
Również odnośnie zabezpieczeń takich aplikacji.

Nie szukam artykułów gdzie jest napisane jak zrobić websocket, tylko interesuje mnie jak to wygląda na większą skalę, gdzie nie ma już prostej obsługi czatu, ale np. aktualizacja danych na stronie w czasie rzeczywistym
Mirki, w aplikacji nad którą pracuję postanowiłem wykorzystać Repository Pattern. Podzieliłem sobie ładnie wszystko, mam 3 projekty:
1. Web
2. Entity(context, repozytoria)
3. Core(modele, interfejsy)

Dodatkowo zrobiłem migrację, wszystko pięknie działa, zastanawia mnie jednak czy autoryzację/rejestrację itd która teraz jest w Web przenieść do Core...ma to jakikolwiek sens?

ps. Dodam że muszę jeszcze dorobić WCF jeśli ma to jakieś znacznie w kontekście pytania.

#mvc #dotnet #wzorceprojektowe #csharp
@fortySeven: logowanie chcę mieć w jednym miejscu - czyli muszę gdzieś uwzględnić logikę biznesową?
Dzisiaj zwróciłem uwagę na repozytoria i zastanawiam się czy one rzeczywiście mają sens...używam EF i chyba mija się to z celem.
Polecam obejrzeć w kontekście repozytoriów - pada sporo fajnych przemyśleń.
Co do tego gdzie powinno być to umieszczone - w kontrolerach nie powinno być żadnej logiki poza ewentualną walidacją ViewModelu - powinny przekazywać tylko robotę dalej.
fortySeven - Polecam obejrzeć w kontekście repozytoriów - pada sporo fajnych przemyśl...
Mirki, zastanawiam się nad kupnem książki "Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki" Roberta C. Martina. Mam pytanie do kogoś kto miał do czynienia z tą książką: w jakim języku są podane w książce przykłady? Wiem że "Clean Code" był w Javie, natomiast jeżeli chodzi o tą książkę to spotkałem okładki z C#, ale też bez żadnego oznaczenia. Tak, wiem że nie ma to znaczenia, pewnie i tak to kupię. Jednak
@mateusz-sus: Spraw, by język nie miał znaczenia.

Serio, język to tylko składnia i biblioteka standardowa – w więszkości przypadków nie ma jakichś szokujących różnic w stosunku do innych języków.

Jeśli czegoś nie rozumiesz: to google. Ewentualnie jakiś podstawowy kurs z języka. W pewnym momencie będziesz rozumieć co raz więcej i język przestanie być barierą. A przy okazji taka lingwistyka sprawi, że będziesz miał szersze spojrzenie na programowanie ogólnie.
@MacDada: @Kaczus2B: Nie no spoko, znam C++, uczyłem się go ponad 2 lata. Moje pytanie nie było w stylu "Bueee, wszędzie C++", bo i tak kupię tą książkę. Pytałem ponieważ obecnie piszę w Javie i liczyłem na to, że mogą się tam pojawić jakieś kruczki specyficzne dla Javy co ułatwiłoby mi naukę. Ale dzięki za odpowiedź.
@KrzysztofKrawczyk: klasyczne "Wzorce projektowe" Bandy Czworga są dość trudnym materiałem, przykłady są w C++ i SmallTalku o ile dobrze pamiętam.

Z czystym sumieniem mogę Ci polecieć to:
http://helion.pl/ksiazki/uml-i-wzorce-projektowe-analiza-i-projektowanie-obiektowe-oraz-iteracyjny-model-wytwarzania-aplikac-craig-larman,umwzo3.htm

Najlepsza książka do programowania jaką przerabiałem.