1

Совсем недавно наше приложение расширено для поддержки 4 различных пользовательских интерфейсов.Должен ли я начинать добавлять/преобразовывать физический бизнес-уровень в существующий проект?

У нас есть бизнес-логика, которая интегрирована в наш слой данных.

У нас нет физического бизнес-уровня, который отделяет наш пользовательский интерфейс от нашего уровня данных. Часто в пользовательском интерфейсе база данных вызывается непосредственно. Очевидно, это вызывает проблемы.

Вопрос в том, должен ли я внедрять физический бизнес-уровень и со временем переносить существующую логику в слой данных на новый бизнес-уровень. Или я должен поддерживать бизнес-уровень в той же DLL, что и уровень данных?

Что вы думаете о добавлении бизнес-уровня в приложение без него?

+0

Просьба пояснить. Что вы понимаете под слоем данных. У вас есть модель данных и отдельный слой данных? Как существующая логика интегрирована в слой данных - есть ли у вас хранимые процедуры? –

+0

К сожалению, на уровне данных я имел в виду уровень доступа к данным. Мы используем Linq для Sql и имеем всю нашу бизнес-логику в классах расширения. – drizzie

ответ

2

Вы должны определенно ввести некоторое разделение проблем, делая вещи в разных слоях. Непосредственная ссылка на базу данных из пользовательского интерфейса не является звуковой архитектурой и приведет к жесткой связи и трудностям в обслуживании и расширении позже.

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

Here - это подход к внедрению уровня обслуживания, который остается на вершине модели и предоставляет ту же функциональность, которая повторно используется несколькими пользовательскими интерфейсами и шлюзами. Этот уровень помогает объединить вашу бизнес-логику во всех ваших интерфейсах и всех открытых сервисах (если вам когда-либо понадобится раскрывать функциональность/данные), что очень важно - вы определенно не хотите создавать и изменять вещи в нескольких местах, когда вы можете сделать он в одном месте и гарантирует 100% консистенцию.

P of EAA - Service layer

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

Удачи вам!