2017-01-04 4 views
1

Я собираюсь начать новый проект, и я бы хотел использовать технику Single Page Application. Поскольку я буду использовать ASP.NET, я думаю, что самый простой способ будет использовать Angular, с которым я новичок.
В любом случае, что меня пугает больше всего за Угловые (или любые другие технологии JS/TS), так как у меня мало времени, я не могу позволить себе переписывать все модели/сущности на другой язык. Код и стоимость обслуживания для этого слишком высоки для меня.Избегайте создания моделей в Angular

Т.Л., д-р

Так что мой вопрос, есть ли способ иметь угловые использовать оригинальные названия модели/сущности, так что я могу использовать их на странице без необходимости переписывать любой ненужный код?
Признаются ли атрибуты .NET?

+2

Не уверен, что я правильно понял, но, возможно, что-то отсюда поможет (TypeLite)? (Предполагая, что вы используете TypeScript для своего Angular2 dev) http://stackoverflow.com/questions/12957820/how-to-reuse-existing-c-sharp-class-definitions-in-typescript-projects –

+0

Рассмотрите возможность использования Swagger для создания Swagger schema file (swagger.json), который вы можете использовать Swagger CodeGen или AutoREST для создания клиентов для отдыха, включая модели – Tseng

ответ

1

Я думаю, ваша озабоченность заключается в том, что ваш бизнес-объект мира (модель сущности) должен отражаться в вашем клиенте/угловом приложении в качестве моделей (объекты javascript)? Потребность в них приходит также из ошибок ввода, которые вы получаете в угловом формате.

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

Я решил использовать и получить модель в результате удаленного вызова через AJAX/WebAPI и работать с этими «моделями» в моих клиентских приложениях. Затем результат отражает вашу бизнес-модель (сущности), которую вы, вероятно, уже определили.

this.dataService.getRecords('MT_MyEntity') 
     .subscribe((data: any[]) => { 
      var response: any = data;     // Do this to avoid typing errors 
      var resprecords: any = response.items; 
      // Here you get entities; 
      // Deal with your business objects fetched from remote system; Use it to show in forms, .... 
     }, 
     error => { 
      // your error handling 
     }); 

В приложении вы можете использовать объект и атрибуты имен, которые вы определили в вашей стороне модели сервера (заботиться о верхних/нижних модификаций случая)

Для меня это прагматичный способ иметь дело с это и работает очень хорошо.

+1

. Вы очень хорошо определили мою проблему. На самом деле, я бы хотел, чтобы был способ создания веб-приложений только с C# и XAML. Я презираю JS. Но ваше решение звучит справедливо. – Shimmy

1

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

Этот эффект является более произнесенным с использованием TypeScript, поскольку позволяет проверять время выполнения контрактов. Поскольку мы перемещаем все больше и больше кода на клиентскую сторону и используем такие фреймворки, как Angular, наличие четко определенной модели помогает нам понять, что происходит. Мы получаем те же преимущества, которые мы получаем, когда проверка типов доступна на сервере.

Наличие отдельной стороны клиента модели также позволяет адаптировать такую ​​модель к потребностям пользовательского интерфейса на стороне клиента (хотя когда-то мы создаем ViewModel для удовлетворения таких требований)

Подхода генерации этого на сторону клиента контракты, как было подчеркнуты by @Ivan может помочь нам сократить общие усилия.

+0

Я на самом деле не заинтересован в их создании, а в том, чтобы иметь возможность получить доступ к динамически из json и т. Д., Полученных с сервера. – Shimmy

Смежные вопросы