Struktura Projektu:
- mForum.Core - Tutaj będą znajdować się wszystkie klasy/struktury/metody które są wspólne dla całej solucji i będą używane w każdym z projektów.
- mForum.Domain - W tym projekcie będzie znajdować się wszystko co związane z logika biznesowa czyli np. encje, specyfikacje.
- mForum.Infrasturcture.Automapper - W tym projekcie będą klasy potrzebne do zainicjowana biblioteki AutoMapper
- mForum.Infrastructure.NHibernate - Tutaj znowuż znajdziemy wszystko co związane z mapowaniem danych i baza. Czyli implementacje repozytoriów, obiekty inicjujące baze danych.
- mForum.Services - Jest to warstwa pośrednicząca miedzy logika biznesowa a warstwa prezentacji która jest Asp.net MVC w tym projekcie. Znajdziemy tutaj glownie wszystkie klasy, metody które będą pośredniczyły w obiegu danych miedzy warstwa logiki biznesowej a warstwa prezentacji.
- mForum.Web - Tutaj mamy warstwę prezentacji. W tym projekcie znajdziemy widoki, skrypty js, szablony css. Generalnie wszystko co związane z projektowanie stron www od strony graficznej.
- mForum.Web.Common - Jest to projekt w którym są obiekty bezpośrednio związane z warstwa prezentacji od strony programistycznej. Będziemy tutaj mogli znaleźć własne atrybuty, kontrolery mvc, zadania które będą wykonywane tuz przed rozpoczęciem aplikacji(tzw. bootstrapper taski).
Jak wspominałem wcześniej dodałem już klasy/metody które używam zwykle w każdym projekcie, takie klasy uniwersalne wspomagające prace.
Pierwsza z nich jest klasa Check. Ta klasa posiada metody sprawdzajace dane wejsciowe i w wypadku niezgodnosci warunku w danej metodzie wyrzuca odpowiedni wyjatek. Prosty przyklad sprawdzania czy dane wejsciowe nie sa null:
void testMethod(object testProperty) { if(testProperty == null) throw new ArgumentException("testProperty cannot be null: "); ... }W wypadku pojedynczego argumenty nie jest to zbyt uciążliwe natomiast przy ich większej ilości może powodować lekkie nagromadzenie się instrukcji warunkowych. To samo rozwiązane za pomocą klasy Check:
void testMethod(object testProperty) { Check.Argument.IsNotNull(testProperty, "testProperty"); ... }Klasa Check posiada znacznie więcej metod walidacji danych wejściowych. Po więcej zapraszam do zapoznania sie z kodem.
Oprócz tego dodałem parę metod rozszerzających do klas:
- DateTime: metoda sprawdzająca poprawność daty. Klasa Check bezpośrednio korzysta z tych metod.
- String: metody takie jak sprawdzanie poprawności danego łańcucha znaków jako adres url czy adres e-mail. Klasa Check również z nich korzysta.
- IEnumerable: Dodałem rozszerzenie które pozwala w 1 linijce kodu wykonać iteracje po wszystkich elementach kolekcji i wykonanie jakieś akcji na nich. Petla foreach w skondensowanej formie.
To tyle na dzisiaj. Nadchodzi weekend wiec prawdopodobnie można spodziewać się większej ilości wpisów. Acha i jeszcze jedno właśnie opublikowałem projekt na codeplex wiec już każdy będzie miał dostęp do niego. Co prawda niewiele tam jeszcze jest ale coż :)
Brak komentarzy:
Prześlij komentarz