Какой слой я должен объявить перечислениями?
У меня есть проект C# N-Layer, который имеет 5 слоев: 1-инфраструктура 2-домен 3-AppService 4-Распределенная Услуга 5-презентация
Я хочу использовать перечисления в своем проекте. но я не знаю, какой слой их описывает. У меня есть две идеи на этот счет.
1-объявляйте перечисления в домене и проходите через сеть по WCF DataContract.
2-объявить перечисления в проекте библиотеки классов (например, в общем слое) и построить его как dll и использовать его во всех слоях.
Помогите мне выбрать один.
3 ответа:
Это зависит от того, где вам нужно использовать значения, которые представляют перечисления. Если это значения, которые понадобятся вашему слою презентации, то именно туда они и должны попасть. Если это что-то, на что будет полагаться ваш уровень обслуживания, то вам нужно поместить их туда.
Я не уверен, что лучший подход-это объединить все ваши перечисления в одном месте. Они должны быть распределены по всему приложению, на самом нижнем уровне, который полагается на них, обычно в том же пространстве имен, что и класс это потребляет перечисление и выполняет некоторую логику над ними.
Если приложение и домен будут использовать их, то объявите их в домене и передайте значение через сеть.
Я хотел бы поделиться своим мнением относительно этой проблемы:
Стратегия 1: доменный слой определяет перечисление
AddressType
(имея дом, работу...). Service layer определяет другое перечислениеAddressTypeDto
со всеми значениями Home, Work...) и они на самом деле карта отAddressType
==>AddressTypeDto
. На уровне представления также будет использоваться типAddressTypeDto
.Стратегия 2: создание слоя (
not really a layer
) который содержит общие типы перечисления и использовать его в различных слоях от Домен / Услуга / ПрезентацияS1: он сохраняет все уровни домен/сервис/представление независимыми, но требует больше классов, чтобы представить то же самое.
S2: он сохраняет все уровни домен/сервис/представление независимыми, но требует их в зависимости от" общей " dll.
Я видел приложения, которые реализуют одну из двух стратегий. Я сам выберуStrategy 2
так как это более эффективно. Почти приложения часто имеют общие вещи, некоторые типы перечисления должны быть там.