Witam,
Po kilku latach programowania w
.NET i utworzeniu kilkudziesięciu aplikacji zamierzam zebrać (przepisać)
istniejący kod i stworzyć modułowy framework, który będzie używany do budowy kolejnych
aplikacji. Ze względu na dużą różnorodność typów aplikacji, które pisze (asp.net,
asp.net mvc, wpf, silverlight, usługi Windows, serwisy wcf) chcę, aby framework
był niezależny od tych technologii. Stąd wynika główne założenie projektu: moduły
będą zawierać jedynie encje, logikę biznesową oraz repozytoria. W przyszłości
ewentualnie napisze takie modułowe frameworki dla konkretnych technologii (np.:
asp.net mvc).
Schemat
każdego modułu będzie składał się z interfejsu i domyślnej implementacji, która
może być podmieniana przy użyciu IoC:
Modul1
Interface
Entities
Repositories (referencja do
Modul1.Interface.Entities)
Services (referencja do
Modul1.Interface.Entities oraz Modul1.Interface. Repositories)
Implementation
Entities (referencja do
Modul1.Interface.Entities)
Repositories (referencja do
Modul1.Interface.Entities oraz Modul1.Interface. Repositories)
Services (referencja do
Modul1.Interface.Entities, Modul1.Interface. Repositories oraz Modul1.Interface.
Services)
Aby umożliwić łatwe nadpisywanie
poszczególnych funkcjonalności danego modułu użyty zostanie kontener IoC, a
konkretnie UnityContainer (np.: po to aby dany moduł zapisywać dane do mysql
zamiast mssql).
Rozważmy przykład modułu forum:
Forum
Interface
Entities (interfejsy: IForumEntity, IThreadEntity,
IPostEntity)
Repositories (interfejs: IForumRepository)
Services (interfejs: IForumService)
Implementation
Entities (klasy: ForumEntity, ThreadEntity,
PostEntity)
Repositories (klasa: ForumRepository)
Services (klasa: ForumService)
Co myślicie o takim rozwiązaniu?
Czy warto tworzyć interfejsy dla encji?