В основном у меня следующий дизайн:
public class SessionManager
{
public void BeginSession() {...}
public void CloseSession() {...}
}
public class InvoicingService
{
private SessionManager SessionManager { get; set; }
public InvoicingService(SessionManager sm)
{
SessionManager = sm;
}
public void CreateInvoices(Order order)
{
SessionManager.BeginSession();
// do stuff
SessionManager.CloseSession();
}
}
Проблема заключается в том, что мне приходится звонить BeginSession
и EndSession
для каждого действия, которое я хочу выполнить в своих службах. Я придумал несколько решений, чтобы не приходилось постоянно делать это каждый раз, но они очень переоснащены, и они мне не нравятся. Как бы вы решили эту проблему? Есть ли какой-то общий шаблон проектирования для этого?
Главное, что подтолкнуло меня к выполнению управления сессиями в службах, было предоставление простого в использовании набора классов, которые предоставляют функциональность, не позволяя потребителям использовать интерфейс, например, открыв сеанс, выполняя несколько вещей, а затем закрывая его. Или оставить сеанс открытым слишком долго и т. Д. c. Но это другая топи c.