380 likes | 517 Views
Domain Specific Language. Mac Michał Programujący architekt, konsultant. Agenda. Czym jest DSL? Przykłady użycia DSLa Architekutra SaaS Domain Driven Design Technikalia Implementacja przykładowego języka domenowego. O mnie. Konsultant, programujący architekt, trener IT
E N D
DomainSpecificLanguage Mac Michał Programujący architekt, konsultant
Agenda • Czym jest DSL? • Przykłady użycia DSLa • Architekutra SaaS • Domain Driven Design • Technikalia • Implementacja przykładowego języka domenowego
O mnie • Konsultant, programujący architekt, trener IT • Publikuje w magazynie Programista • .Net Early Adopters • .Net Advisory Board • Windows 8 • Postsharp MVP • Prelegent • Należy do SSEPP • MCITP Database Developer, Database Administrator • MCPD Windows Developer • Twórca biblioteki BFsharp • bfsharp.codeplex.com • blog.macmichal.pl Mac Michał macmichal.pl
Konfigurowalność aplikacji • Możliwości: • Opcje włącz/wyłącz • Wymienialne strategie • Strategie pisane przez klienta • Wycinki SQLa
Problemy konfigurowalności aplikacji • Często zmieniające się wymagania biznesowe • Bezpieczeństwo • Chcemy by użytkownik mógł wykonać tylko to na co mu pozwolimy • Wydajność • Chcemy by techika była szybka i wydajna
Problemy konfigurowalności aplikacji • Prostota • Chcemy by użytkownik mógł bardzo szybko nauczyć się rekonfigurować system (nie zawsze). • Szybki czas reakcji • Chcemy skrócić do minimum czas rekonfiguracji systemu – implementacji funkcjonalności.
DSL • Czym jest DSL? „Język programowania przystosowany do rozwiązywania określonej dziedziny problemów, określonej reprezentacji problemu lub określonej techniki ich rozwiązywania”
DSL • string.Format • Regex • Expression • Excel • Custom
Jak zrealizować ideę długiego ogona w IT? $ / Klient Najwięksi klienci Co jeśli obniżymy koszt wyprodukowania i dostarczenia oprogramowania? Typowi klienci Nowy rynek >> aktualny rynek Rynek (aktualnie) poza zasięgiem
3 własności • Konfigurowalność • Multitenancy • Skalowalność
RÓŻNE WYMAGANIA BIZNESOWE • Total = Quantity * ProductPrice Stacja benzynowa • Quantity = Total / ProductPrice (z dokładnością do obsługi dzielenia przez 0)
Technikalia • Drzewo parsowania • Drzewo AST • Interpretacja i generacja kodu
Linki • http://bfsharp.codeplex.com • http://cqrssample.codeplex.com/ • http://dsl.codeplex.com/ • http://blog.macmichal.pl
Kontakt • Michał Mac • www.macmichal.pl • kontakt@macmichal.pl • 513 95 93 79