Веб-приложение HTML5 - Выбор серверной технологии - PullRequest
9 голосов
/ 08 марта 2012

Сейчас я выбираю технологии для простого кроссплатформенного мобильного приложения.Целевые системы - это iOS, Windows Phone 7.5 и Windows 8. На первом этапе это будет приложение для локальной беспроводной сети.

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

Для клиента я выбрал подход HTML5, CSS, JavaScript (JQuery), чтобы он работал в любом современномбраузер.Поэтому мне придется общаться через http.

Мой вопрос - какую технологию использовать для серверной части моего приложения.Я должен получать запросы http, получать данные (в лучшем случае через WCF) с другого сервера и отправлять их клиенту в формате xml или html.(Я не совсем уверен, должен ли сервер или клиент преобразовывать данные XML в html)

Поиск в Интернете Я нашел два возможных подхода:

  • ASP.net
  • Создание собственного простого http-сервера с использованием WCF

Глядя на некоторую документацию и примеры ASP.net, у меня сложилось впечатление, что все работает так, как я знаю из PHP и т. Д.сервер запускает скрипт / программу, сервер отправляет ответ, программа завершается) Я не могу хранить объекты в памяти и выполнять код независимо от клиентских запросов.Или, по крайней мере, он не предназначен для такой работы.Это правильно?

Это заставило бы меня создать собственный очень простой сервер, который мог бы отвечать на несколько конкретных запросов http.

Итак, мои вопросы:

  • Верны ли мои предположения о ASP.net?Или я что-то не так понял?
  • Будет ли вам нужен собственный http-сервер?
  • Можете ли вы порекомендовать другие подходы (в мире Microsoft / .net)?

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

Ответы [ 4 ]

3 голосов
/ 12 апреля 2012

Данные при доступе через мобильное устройство будут дорогостоящими. Поэтому я бы предпочел использовать JSON / XML для отправки данных по проводам. Будет использоваться подход RESTful для извлечения данных с помощью WCF Restful служб / ASP.NET Web API в стеке .NET. Кроме того, если вы рассматриваете возможность использования батареи, вам следует избегать опроса и использовать платформу сигнализации. В стеке .NET у нас есть SignalR , который делает это. Это будет уведомлять клиентов, когда новые данные будут доступны, и клиент будет инициировать новый запрос на получение данных.

Если вы хотите поэкспериментировать с новыми технологиями, я бы предложил использовать node.js на стороне сервера и socket.io для связи с клиентами для сигнализации логики. Кроме того, я бы предпочел написать клиентское приложение, используя разрыв телефона и javascript, чтобы его можно было легко переносить на различные платформы.

3 голосов
/ 12 апреля 2012

Вы можете взглянуть на APE (Ajax push Engine) , поскольку ваше приложение требует опроса. Он построен на JavaScript и работает как сервер Comet.

В качестве альтернативы вы также можете использовать один из платных сервисов для проталкивания (чтобы не беспокоиться о серверных технологиях)

1) Толкатель

(с домашней страницы pusher: Pusher - это размещенный API для быстрого, простого и безопасного добавления масштабируемой функциональности в реальном времени к веб-приложениям и мобильным приложениям. )

2) UrbanAirship

Как упомянул @Fabio Python Tornado может быть альтернативно использован для опроса. Это сервер COMET, и на этом основано множество веб-приложений реального времени. Существует множество учебных пособий, доступных для опроса NodeJs . Простой поиск в Google привел меня к этой статье.

2 голосов
/ 12 апреля 2012

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

Существуют серверы (использующие .net / WCF), в которых есть все данные, которые я хочу отобразить.

Итак, у вас уже есть .net, и я не могу не думать, что самый быстрый способ получить данные с сервера .net / WCF - это клиент .net / WCF.

По этой причине я бы пошел с asp.net MVC. Дает вам быстрый и легкий путь к получению ваших данных, оставляя вам большую гибкость в том, как вы обрабатываете часть «V» (прямые HTML-страницы, ajax с XML-данными или json и т. Д.)

Только в прошлом месяце asp.net mvc был выпущен под лицензией Apache 2.0 с открытым исходным кодом.

В вашем случае я бы держался подальше от веб-форм asp.net и asp.net ajax

редактировать:

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

ASP.net (как и многие серверы приложений) имеет области сессий и приложений, в которых можно хранить данные. Вы также можете создавать фоновые потоки для выполнения работы вне стандартного цикла запроса -> ответа.

0 голосов
/ 08 марта 2012

Что я могу сказать, это:

Используйте ВСЕГДА технологии с открытым исходным кодом :-).Существуют десятки библиотек / фреймворков для написания очень хороших веб-серверов, но если вам нужна высокая скорость выполнения, я могу предложить использовать фреймворки, основанные на событиях, а не потоки / процессы.) но и Python Tornado - хороший выбор.

...