WebService или простой контроллер MVC? - PullRequest
6 голосов
/ 08 декабря 2010

Мне нужно предоставить (для себя) способ получения некоторых данных из базы данных, чтобы я мог легко создавать статические HTML-страницы, чтобы я мог освободить сервер от их обработки (так как я с пропускной способностью 80 Гб в день).

Мой вопрос прост

должен ли я создать службу WCF (или веб-службу ASMX) для извлечения этих данных (WCF будет на том же сервере, поэтому я все еще использую его, хотя и гораздо реже, чем просто Мне действительно нужно и не тратить время на обработку страниц)

или я должен создать простой контроллер вроде:

public class ServiceApiController : Controller
{
    public ActionResult GetPrizes(string calendarGuid)
    {
        return Json("...");
    }
    public ActionResult GetWinners(string calendarGuid)
    {
        return Json("...");
    }
    public ActionResult AddSubscriber(string calendarGuid, string[] args)
    {
        return Json("...");
    }
    public ActionResult ReclaimSubscriberEmail(string calendarGuid, string email)
    {
        return Json("...");
    }
    public ActionResult RequestContact(string calendarGuid, string[] args)
    {
        return Json("...");
    }
}

и просто вызывайте его напрямую из любой Javascript Framework, который я бы использовал (ошибаться, конечно же, мой любимый jQuery).

Ответы [ 3 ]

8 голосов
/ 08 декабря 2010

Зависит.Служба WCF более гибкая, поскольку вам не нужно полагаться на HTTP, и вместо этого вы можете использовать прямое TCP-соединение, и я считаю, что действительно легко сделать так, чтобы он представлял SOAP.Просто настройка web.config для поведения, конечной точки и т. Д. Немного сложнее, чем должна быть.

С другой стороны, MVC, возможно, быстрее настроить таким образом, потому что вам не нужно иметь дело синогда немного сложно изменить DataContracts (поскольку они требуют повторного развертывания совместно используемой сборки).

WCF = более «солидный» с гораздо большим протоколом, чтобы сделать его «стабильным», то есть:Вы можете заключить жесткий контракт между провайдером и потребителем.

MVC = более гибкий и, возможно, более простой в настройке, но без жесткого контракта - если вы измените формат Json, ваши клиенты могут разорваться без вашего первоначального уведомлениятак что гораздо больше идти в ногу со всем.

В целом, я использую MVC, если у меня нет причин использовать WCF, как описано выше (требование стабильного / гарантированного / обнаруживаемого контракта между клиентом и сервером, требованиеиметь SOAP, или когда неудобно / не нужно настраивать веб-сайт IIS, например, потому что мой сервер работает как Windows Servлед)

0 голосов
/ 08 декабря 2010

Лично я бы создал веб-сервис WCF для предоставления данных. Это будет более гибко, и вы сможете использовать несколько конечных точек, обрабатывающих разные форматы данных JSON, XML, ... Таким образом, вы сможете использовать сервис у разных клиентов (web, windows, mobile, ...).

0 голосов
/ 08 декабря 2010

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

...