Я разрабатываю проект, в конечном итоге это будет веб-приложение. Но я стараюсь следовать своему родом многоуровневого подхода для бизнеса-объектов и доступа к данным, я создал следующие библиотеки классов проектов в одном холостом растворе:Многоуровневая архитектура и инкапсуляция
MyCompany.MyProject.Repository
MyCompany.MyProject.Model
MyCompany.MyProject.Service
MyCompany.MyProject.Repository имеет ссылку к MyCompany.MyProject.Model MyCompany.MyProject.Service имеет ссылку на MyCompany.MyProject.Model и MyCompany.MyProject.Repository.
Эта небольшая каркасная платформа будет использоваться несколькими приложениями в будущем, и поэтому я создаю их отдельно для веб-приложения.
У меня есть два вопроса:
Что касается наслоения приложения является таким подходом правильным, веб-приложение (или любым приложение, которое необходимо использовать мою структуру), нужно будет иметь все три библиотеки в это Каталог ящиков - правильно ли я это понимаю?
Проект MyCompany.MyProject.Model содержит все мои бизнес-объекты. Что касается капсулирования - например у меня есть объект клиента:
Открытый класс Customer
Private _customerID Как Int32
Public CustomerID Property() As Int32 Получить Вернуться _customerID Конец Получить Friend Set (значение ByVal Как Int32) _customerID = значение Конец Набор Конец недвижимости
Конец Класс
Это, как я думаю, что идентификатор для объекта клиента должен подвергаться воздействию, из-за модификатор доступа друга на Комплексе идентификатор для клиента должен быть только в состоянии установить внутри фреймворк, и только читать извне веб-приложение или любое другое приложение, созданное в будущем. Но поскольку мой код находится в отдельных проектах библиотеки классов, MyCompany.MyProject.Repository, например, не может получить к нему доступ, хотя мои пространства имен следуют этому примеру.
Это не похоже на мое понимание инкапсуляции, что я здесь делаю неправильно?
Ваша помощь очень ценится.
спасибо.