Я поддерживаю приложение, которое было скопировано для каждого нового клиента ( ... да, я знаю ).Если новый клиент хотел каких-то новых функций, которые не нужны другим, то изменялась только его часть кода.Решение также включает в себя своего рода «common.dll», в который помещается весь код, одинаковый для всех клиентов.
Базовая база данных MSSQL для каждого клиента немного отличается.Все они имеют более или менее одинаковые таблицы, но у некоторых клиентов есть, например, дополнительные столбцы или новые таблицы для специальных пользовательских функций.
Поскольку «типизированные наборы данных» (ADO.NET C # 2.0) используются в решении Visual Studioдля каждого клиента всегда есть конкретное решение (файл) и в нем конкретный типизированный набор данных (например, «XyDataSet.xsd»).В решениях у меня есть вспомогательные классы, например.для обработки заказов.Одним из методов в этом классе может быть «GetOrder (string orderId)», который использует специфический для клиента DataSet для получения заказа (как типизированный DataRow).
Как вы видите, у меня есть методы «GetOrder» в каждом решениидля каждого клиента, поскольку в таблице заказов могут быть небольшие различия, например, дополнительные столбцы.Поэтому, если необходимо внести изменения в общую функциональность «GetOrder», я должен изменить это во всех проектах, что, конечно, является кошмаром обслуживания.
Кто-нибудь из вас видел, как эта «архитектура» могла бы бытьулучшенный?Или, может быть, при существующих в настоящее время различных схемах БД не так много улучшений на более высоком уровне приложений?