Нужно ли создавать несколько моделей? - PullRequest
0 голосов
/ 04 октября 2019

MS стека разработчик исторически.

Я взял на себя обязательство переоборудовать в следующий стек

 angular -> ms web.api2 -> C# business objects -> sql server

С возрастом я разрабатываю базу данных на основе требований и использую Codesmith для создания слоя бизнес-логики. (да, я слышал об Entity Framework. Даже пробовал один раз).

Когда я использую Angular и веб-API 2

, я обнаружил, что Angular хочет, чтобы я написал модель на переднем конце,Кажется, это просто структура данных, я даже не могу добавить к ней вспомогательные методы

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

Я обнаружил, что Web API2 хочет, чтобы я написал модель. Это снова, кажется, просто структура данных. Я изучаю динамический тип данных, но на самом деле это мало что мне дает. Вместо того, чтобы писать класс, я пишу функцию отображения.

Вопрос заключается в следующем:

Есть ли способ иметь 3+ копии каждого класса, распределенные по стеку? Codesmith - очень эффективный генератор кода ... он может генерировать несколько файлов ... но ...

Если это всего лишь пара элементов данных и 3 места, я могу скопировать, вставить и отредактировать.

Мне просто кажется, что сейчас стремление поддерживать синхронизацию структуры данных в 3 различных средах - это готовность к большой работе.

Последние 15 лет я пытался подтолкнутьстолько кода, сколько я могу в рамках наследуемых классов, чтобы я мог сохранить вещи СУХОЙ.

Я что-то упустил? Есть ли какие-то шаблоны, которые можно предложить?

[Я знаю, что этот вопрос не предназначен для SO, но именно здесь все умные люди делают покупки. Убей меня, если ты чувствуешь честь сделать это.]

1 Ответ

1 голос
/ 04 октября 2019

Не совсем знаком с тем, как CodeSmith генерирует свои классы, но если они являются просто старыми CLR-объектами, которые хорошо сериализуются, вы можете сделать так, чтобы WebApi возвращал их непосредственно в ваше приложение Angular. Есть пуристы, которые будут недовольны этим, но в зависимости от приложения, может быть оправдание.

Тогда, в мире Angular, у вас есть несколько вариантов, опять же, в зависимости от ваших требований / обоснования,и ваше приложение - опять же, пуристы определенно будут недовольны некоторыми опциями.

  1. создайте классы, которые соответствуют тому, что идет с сервера (более правильный метод)
  2. Рассматривайте все как "any ", теряйте безопасность типов и просто обращайтесь к свойствам по мере необходимости, т.е. не создавайте модель. (явно менее правильный метод)
  3. найти инструмент для генерации кода, который будет исследовать конечные точки API, чтобы определить, что они возвращают, и сгенерировать ваши классы машинописи для вас.

Лично, используя EntityFramework, я (вручную) создаю свои POCO для взаимодействия с базой данных, у меня есть класс "view" / DTO, который WebAPI затем отправляет обратно клиенту, и определение объекта в Typescript, но я неконтролируемый и неt как сгенерированный код.

...