27/02/2018
TL;DR
W tym semestrze koło jest językowo agnostyczne - dowolna technologia i język programowania. Budowanie drobnej aplikacji do zarządzania zadaniami (coś w rodzaju tablicy kanban https://pl.wikipedia.org/wiki/Tablica_kanban). Celem jest stworzenie aplikacji dostępnej na wszystkich platformach (mobile, web, desktop, itd.). Osiągalne dzięki stworzonemu Web API: https://taskorganizerdemo.azurewebsites.net/
Chcesz kodzić i szukasz grupy innych pasjonatów? Wpadnij ładnie Cię proszę na pierwsze spotkanie. Weź udział w poniższym głosowaniu nad terminem spotkań.
Mam nadzieję, że dzielnie przetrwaliście sesję i jesteście gotowi ponownie pilnie uczestniczyć w spotkaniach naszego .NETowego kółka.
W tym semestrze odchodzimy od teorii i nareszcie pobrudzimy sobie ręce kodem. Chciałbym rozpocząć pracę nad prostą aplikacją służącą do zarządzania zadaniami - "Task Organizer". Będzie to coś w rodzaju prostej tablicy kanban (https://pl.wikipedia.org/wiki/Tablica_kanban) - system będzie składał się z użytkowników-managerów zarządzających użytkownikami-pracownikami. Managerowie będą w stanie dodawać nowe zadania, określać ich priorytet (niski, średni, krytyczny, itp.) i stan (do zrobienia, w trakcie, zrobione, itp.) oraz przypisywać do nich pracowników. Pracownicy będą mogli zalogować się do systemu, aby obserwować ogólny stan pracy i jakie zadania zostały im przydzielone do wykonania.
Chciałbym zaangażować jak największą ilość osób które zainteresowane są programowaniem, dlatego podjąłem konkretne kroki, aby nasze koło stało się w miarę JĘZYKOWO AGNOSTYCZNE. Dzięki wykorzystaniu Microsoftowej technologii ASP.NET Web API oraz chmurze Azure stworzyłem proste Web API, które pozwoli współpracować nam wszystkim bez względu na to jakiego rodzaju aplikacje piszecie (mobilne, webowe, desktopowe, itd.) oraz jakiego języka programowania używacie (C #, Python, PHP, Java, C++, C, JavaScript, you name it). To dzięki temu, że wymiana danych będzie odbywała się za pomocą prostego protokołu HTTP, więc dopóki wasz kodowy język jest w stanie wysyłać żądania HTTP (co robi 99% języków) to jest on jak najbardziej użyteczny w naszym drobnym projekcie.
Ostatecznym celem będzie wykorzystanie logiki zawartej w Web API, aby stworzyć aplikację osiągalną na każdej możliwej platformie (mobilna, desktopowa, konsolowa, webowa). Tak więc jeśli chciałbyś/chciałabyś wziąć udział i być częścią przedsięwzięcia to koniecznie wpadnij na pierwsze spotkanie. Wytłumaczę konkretnie jak wygląda architektura projektu i biorąc pod uwagę jakiego rodzaju koderów załapiemy do grupy zdecydujemy jakie platformy będziemy w stanie podbić.
Obecnie koło może odbywać się raz w tygodniu, w poniedziałki lub wtorki w godzinach 16:00-18:00. Zostaw swój głos, żebym mógł zabierać się za rezerwację sali. Głosowanie zakończę w niedzielę 4 marca.
A oto mały sneak peek API, na którym oprzemy logikę aplikacji:
https://taskorganizerdemo.azurewebsites.net/
Dla zainteresowanych tematem ASP.NET Web API:
Architektura:
• REST "wannabe"
• 2 level of Richardson's REST Maturity Model
Technologie wykorzystane przy budowie Web API:
• ASP.NET Web API 2
• ASP.NET MVC
• .NET Framework
• C #
• Entity Framework 6
• MS SQL Server
• IIS
• Azure
• T-SQL
• HTML5
• CSS3
• JavaScript, jQuery
• Bootstrap
Biblioteki:
• ASP.NET Identity
• Ninject
• AutoMapper
• Fluent validation
• Nlog
• Elmah
• Nunit
• Moq
• Swagger (Swagger-Net)
Narzędzia:
• Visual Studio 2017
• Visual Studio Team Services
• GIT
• ReSharper
Wzorce projektowe:
• Singleton
• Factory
• Dependency injection
• Repository
• Unit of work
• Adapter
• SOLID
Dobre praktyki:
• SoC
• DAL
• DTO
• BLL
Autoryzacja/bezpieczeństwo:
• Basic
• JWT bearer token
• Wymuszanie HTTPS z użyciem message handlera
• Szyfrowanie connection string
• Ograniczenia CORS
Przewidywane w przyszłości:
• HATEOAS
• PATCH
• HEAD
• Partial GET
• SignalR
• Caching
• OAuth 2.0
• Identity Server 3
• Refresh token
• OWIN