4

У меня есть некоторые путаницы для передачи данных между angularjs и MVC5. Я создаю одностраничное приложение (SPA).Каков наилучший способ связи между angularjs и mvc5?

  1. Каков наилучший способ работы с угловыми? Являются ли контроллеры MVC или API MVC?
  2. Я прочитал here, что api's подходят для SPA. Итак, мне нужно создать другой проект для API?
  3. Как насчет асинхронной связи для Angularjs с MVC?

Я не получаю правильное направление для работы вперед. Я знаком с mvc, но не с API. Итак, пожалуйста, подскажите мне правильный путь!

Заранее спасибо

+0

@AntP спасибо за предложение Google, но мой вопрос о путаницах. Поскольку я уже создал модели и классы в mvc. Я хочу понять идеальный сценарий общения. – Sarbanjeet

+0

Это очень широкий вопрос, ответ на который будет в значительной степени зависеть от контекста и будет в значительной степени субъективным. Лучше всего узнать об обеих технологиях, прочитать некоторые сообщения в блогах, сравнивая их и сделать свой собственный образ таким образом. –

+0

Хорошо, если у вас есть информация о правильном направлении, пожалуйста, дайте мне знать. Спасибо – Sarbanjeet

ответ

4

Прежде всего, с текущей версией Visual Studio (2013) нет никакого различия между проектом «веб-формы» и проектом «mvc». Есть только проект веб-приложений, и внутри вы можете поместить все, что захотите.

Теперь, исходя из моего опыта, хороший и чистый способ приблизиться к вашей проблеме - создать нормальные MVC-контроллеры для визуализации представлений бритвы, содержащих приложения angularJS, и создать контроллеры WebAPI для интерфейса RESTful для методов ajax ,

В угловом JS вам действительно не нужно вручную выполнять ваши вызовы ajax. Существует более удобный и мощный способ: ресурсы. Они также хорошо сочетаются с дизайном WebAPI, поскольку контроллер WebAPI работает с одним типом объекта (то есть с клиентом), а через HTTP VERBS позволяет выполнять CRUD. Например:

// assume we have a backend repository that handles the data 

public HttpResponseMessage Get() 
{ 
    return this.Request.CreateResponse(HttpStatusCode.OK, this.repository.GetAllCustomers()); 
} 

public HttpResponseMessage Post(Customer customer) 
{ 
    var modifiedCustomer = this.repository.Update(customer); 
    this.repository.SaveChanges(); 

    return this.Request.CreateResponse(HttpStatusCode.OK, modifiedCustomer); 
} 

Этот метод запрашивает всех доступных клиентов и возвращает их. Вы не определяете здесь, следует ли возвращать JSON или XML: среда WebAPI считывает HTTP-HEADERS запроса WebAPI и сериализует данные по запросу клиента. Для JSON, который вы, вероятно, будете использовать, он выполняет сериализацию с помощью стандартного JSON-сериализатора. Вы можете переопределить это, чтобы изменить способ создания JSON, общий способ - использовать JSON.NET с пользовательскими настройками.

Ресурсы AngularJS предназначены для сопоставления одного URL-адреса и совместной работы со всеми глаголами внутри и выставляют вам методы, такие как $ save, $ query, $ get и т. Д., Поэтому они хорошо сочетаются. Например:

var customerRes = $resource('/customers'); 
var currentCustomers = customerRes.query(function(){ // query is mapped to the GET verb 
    currentCustomers[0].email = "[email protected]"; 
    currentCustomers[0].$save(); // default mapped to the POST verb 
}); 

Предлагаю вам ознакомиться с документацией и образцами для более подробной информации.

+0

Его полезная информация. благодаря – Sarbanjeet

1

1) Вы можете создать простой Controller - и внутри создать методы, которые возвращают JsonResult И называют Thats методы из Угловая через AJAX

2) Да - Если вы хотите построить API - Вам нужно создать новый тип проекта из WebAPi (прямо сейчас v 2.0) - но вы можете создать его в одном solution с SPA

3) вы можете позвонить ajaxasynchronous - его не проблема

+0

оценил ваш ответ , Но Angularjs хорош с асинхронными встроенными методами, поэтому для работы с ним требуется API? Повлияет ли api на мою стоимость проекта, стоимость работы, стоимость машины? – Sarbanjeet

+0

Прежде всего API - его хорошее решение, если у вашего проекта будет не только WebSite, но и больше платформ (например, мобильных приложений и т. Д.) Если да - вы должны создать API - для всех платформ будут получены данные из одного места. , если у вас будет только веб-сайт - вы не будете сильно отличаться, если у вас будет API или просто контроллеры с методами – David

+0

MVC 6 поставляется с новой функцией [vNext] (http://www.asp.net/vnext/overview/aspnet -vnext/Create-A-веб-API-с-Mvc-6). Это помогает заставить контроллер вести себя как API. Это полезно? – Sarbanjeet

2

Вы можете использовать функции контроллера MVC с API Async и MVC. В методах контроллера Async вам необходимо обрабатывать все ответы вручную, поскольку API имеет встроенные функции. В методах контроллера Async ваше приложение будет обрабатывать собственные вызовы. Конечно, API дает вам больше возможностей для работы с различными типами приложений.

Еще одна вещь, о которой вам нужно беспокоиться, когда ваше приложение MVC имеет API-интерфейсы для приложений различного типа, а также мобильные приложения и т. Д. 1. Pool Services. 2. Потоки на рабочий процесс в IIS. Они будут определять масштаб вашего приложения, если у вас есть API или методы Async в приложении для разных типов приложений.