Альтернатива глобальным статическим данным, не относящимся к ASP.NET - PullRequest
1 голос
/ 24 июня 2019

Я работаю над устаревшей системой, которая состоит из приложения WinForms, набора веб-служб XML и набора служб WCF.Каждое приложение является «внутренним» 3-уровневым, поскольку бизнес-логика и логика данных были разложены на отдельные сборки, но «внешне» монолитны, поскольку все 3 сборки загружаются каждым приложением в свой собственный домен приложения.

Приложение WinForms должно быть на первом месте, потому что внутренний дизайн усеян глобальными статическими данными, которые пересекают границы уровня.Наиболее явно плохой из них является информация о вошедшем в систему пользователе.Ожидается, что клиентский интерфейс немедленно «войдет» в систему, а затем данные будут использовать эту информацию при каждом чтении и записи в базу данных.

Это «работает нормально» в приложении WinForms, но неудивительно, что в веб-службах оно не распадается, потому что параллельные входящие запросы растоптаны между статическими данными друг друга, и начинают происходить очень плохие вещи.До сих пор я нашел несколько вариантов для отслеживания глобальных данных на уровне ASP.NET, но все они основаны на конкретных объектах ASP.NET, таких как Session или HttpContext, которые я не могу использовать.Это должно работать и в приложении WinForms.

Существуют ли какие-либо другие параметры, подобные статическим переменным, которые я мог бы модифицировать в системе (при разумных усилиях; в настоящее время нет необходимости в рефакторинге системы, которая должна быть спроектирована должным образом)области видимости)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...