В чем слой проекта должен экранировать DTO, живой?

Я думаю, что вы спрашиваете, что означает ключевое слово const . Если нет, пожалуйста, уточните свой вопрос.

Мне нравится думать, что любая переменная const может храниться в ПЗУ (постоянная память), а переменные, которые не объявлены как const, могут храниться в ОЗУ (оперативное запоминающее устройство). Этот тип зависит от типа компьютера, с которым вы работаете, поэтому данные const на самом деле могут не храниться в ПЗУ, но это может быть так.

Таким образом, вы можете делать с указателем все что угодно, но не можете изменять данные в памяти, на которую он указывает.

Это означает, что вы можете ссылаться на указатель и передавать его столько раз, сколько захотите. Также вы можете назначить другое значение указателю.

Скажем, у вас есть этот код

const char* foo = "hello";
const char* bar = "world";

Это совершенно законно делать

foo = bar;

Теперь обе точки указывают «мир»

Это также законно делать [1111 ]

const char *myPtr = bar;
myPtr = foo;

То, что вам не разрешено делать, это изменять фактическую память данных, чтобы вам было запрещено это делать

foo[0] = 'J';
10
задан Scott Muc 30 January 2009 в 06:42
поделиться

2 ответа

Даже мысль, канонический пример использования для 'DTO' является большим количеством "сериализуемого объекта, который может быть передан по проводу", в этом случае Вы действительно обращаетесь больше к 'объектам передачи презентации' или 'моделям представления'.

Обычно для наших проектов ответ туда, где они живут, - то, где код 'перевода' - то, который отображает модель предметной области DDD на классы PTO. Если это находится в уровне Prensenation (возможно, не настолько большой ответ) затем, слой президента - то, где я объявил бы PTOs. Но как правило, это - 'Сервис', который делает перевод для Вас, и это означает, что для и 'Сервиса' и уровня 'Presentation' нужны ссылки на PTOs и который (обычно) приводит к их объявлению в отдельном, нейтральном project/assembly/namespace/whatever, что И уровень представления И уровень служб могут затем сослаться.

17
ответ дан 3 December 2019 в 18:36
поделиться

Вы используете практическую эксплуатацию (сеть или WCF)? Если так, затем определите DTOs на уровне служб и прокси, созданном, когда Вы добавите сервис (или сеть при использовании старого ASMX), ссылка будет содержать все типы DTO. Это - самый простой способ сделать это и поддерживает только слабую связь между Вашим проектом ASP.NET и Вашим сервисным проектом - никакая прямая ссылка проекта не требуется ни в одном направлении. Поскольку Вы обновляете свой DTOs, все, что необходимо сделать, обновить сервисную ссылку, и это автоматически выставит обновления веб-проекта через прокси-класс, который сгенерирован.

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

Если бы Ваши DTOs являются определенными для представления, то я включал бы их в Ваш проект UI. Это должно действительно быть задание контроллера, чтобы гарантировать, что Представление только получает из Модели, в чем это нуждается - в Вашем случае объект значения только с полями, необходимыми представлению.

4
ответ дан 3 December 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: