piątek, 6 sierpnia 2010

Struktura projektu oraz podstawowe klasy pomocnicze i rozszerzenia.

W tym poście postaram się przybliżyć główna strukturę projektu jak również opisać podstawowe klasy pomocnicze i rozszerzenia które używam w większości moich projektów.

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