Potrzebuję refaktoryzacji aplikacji Java EE, ponieważ obecny projekt nie jest bardzo modułowy, w rzeczywistości jest dość bałagan. Istnieje fasada biznesowa, ale ponieważ aplikacja została opracowana przez kilka osób, oryginalny projekt był kilkakrotnie ignorowany. Aplikacja działa obecnie na tomcat z JSF, ale wkrótce zostanie przeniesiona do websphere. Zrobiłem już badania na temat różnych wzorców projektowych, aby zamknąć logikę biznesową z widoku, a także jak sprawić, aby aplikacja była modułowa, tak aby można było łatwo umieścić w niej więcej funkcji, ponieważ aplikacja będzie ulepszana w przyszłości. Czytałem o OSGI, ale myślę, że byłoby to przesadą.Modułowa aplikacja java ee
Aplikacja jest już podzielona na warstwy. Ale daleko mi do zdefiniowania API. Już trochę wyczyściłem aplikację. Teraz wszystkie fasole uzyskują dostęp do logiki biznesowej dzięki metodom biznesowym. Ale fasada biznesowa składa się z około 40 metod, które moim zdaniem nie są zbyt miłe.
edycja 3rd party
Na przykład mam tych modeli klasy
ManageLdap
z metod, takich jakcreateAccount
ideleteAccount
GroupManager
który zarządza grup LDAP
W fasada biznesowa Mam spełnione hod createAccount
który
- zwraca klasę
ManagerLdap
utworzyć konto LDAP i - wykonuje pewne rejestrowanie i również
- połączeń
GroupManager
Ten pseudo kod
package Model.ManageLdap
public class ManageLdap
{
public ldapAccount createAccount() { }
public ldapAccount deleteAccount() { }
}
public class GroupManager
{
public bool addAccountToGroup(var account) { }
}
I fasada biznesowa
package BusinessFacade.Foo
public class SomeFoo
{
public ldapAccount createAccount()
{
var ldapAccount = new ManageLdap.createAccount();
Logger.log("Account created");
var accountWasAdded = GroupManager.addAccountToGroup(ldapAccount);
}
}
Teraz jeśli chcę umieścić dodatkową funkcjonalność do aplikacji jak opcja tworzenia repozytorium Subversion dla użytkownika
- muszę zaimplementować klasę modelu, aby utworzyć repo,
- umieścić niektóre metody w elewacji biznesowej i utworzyć dodatkowy komponent bean, do którego można uzyskać dostęp w widoku.
To sprawia, że fasada jest jeszcze większa i bardziej zagmatwana, ale nie jest to coś, co nazywam konstrukcją modułową.
Jak mogę oddzielić logikę biznesową od widoku bez konieczności posiadania fasady biznesowej?
To zostało omówione wiele razy na SO. Spójrz na [to] (http://stackoverflow.com/questions/647922/java-application-architecture-guide?rq=1) i [this] (http://stackoverflow.com/questions/286846/idecribe -the-architektura-używasz-do-aplikacji-Java? rq = 1) i wiele więcej. – techuser
To może być dobry temat dla [enterprise-architect] (http://stackoverflow.com/documentation/enterprise-architect) lub [architektura zaczynająca się] (http://stackoverflow.com/documentation/architecture/7435/) . – surfmuggle
@techuser [Java Application Architecture Guide] (http://stackoverflow.com/questions/647922/) lub [Opisz architekturę aplikacji internetowych Java] (http://stackoverflow.com/questions/286846/) wydają się być do szerokiego pytania adresowego. Po przeczytaniu [best enterprise cart cart] (http://stackoverflow.com/a/6303154/) pomyślałem, że patrząc na kod open source np. [BroadleafCommerce] (https://github.com/BroadleafCommerce) może być dobrym początkiem, aby uzyskać pomysły na organizowanie kodu. – surfmuggle