HttpApplicationState вне веб-проекта (библиотека классов)

У меня есть веб-приложение ASP.net, которое использует бизнес-логику для отдельного проекта библиотеки классов DLL. Однако я бы хотел использовать глобальный HttpApplicationState в проекте DLL. Но это похоже на реализацию конкретного веб-проекта.

Конечно, у меня могут быть конструкторы (или методы) определенных классов, принимающие HttpApplicationState в качестве параметра, но мне интересно, есть ли более красноречивый способ сделать это. Я понимаю, что создаю некоторые проблемы дизайна, но я действительно хотел бы иметь возможность использовать глобальные вещи в моей бизнес-логике.

2 ответа

Решение

Вы должны попытаться разделить проблемы между веб-приложением и библиотеками классов. Библиотеки классов должны иметь как можно меньше знаний о том, что их вызывает веб-приложение. В частности, они не должны использовать состояние сеанса или состояние приложения. На самом деле, они не должны иметь никаких ссылок на System.Web.dll!

Попросите веб-приложение передать библиотеке классов фрагменты приложения, в которых она нуждается. Библиотека классов не должна знать о том, что данные пришли из состояния приложения.

Это также значительно упростит модульное тестирование библиотеки классов, поскольку ее можно будет вызывать из среды модульного тестирования.

С помощью HttpContext.Current.Application Вы должны иметь доступ к HttpApplicationState во внешних классах.

Обновить

Но я согласен с Джоном Сондерсом - бизнес-логика не должна знать, откуда она вызывается.

Другие вопросы по тегам