Определение возможностей устройства по User Agent

Допустим необходимо узнать некоторый ряд данных о пользовательском устройстве, который отправил запрос на сервер:
  1. Тип устройства (телефон/смартфон, планшет, компьютер, робот)
  2. ОС (windows, mac os, android, ios)
  3. Данные экрана (поддерживаемое разрешение, тач или нет)
  4. Поддержка разметки (html, xhtml, wml)
Как правило такая информация не передаётся в HTTP-заголовках, но передаётся заголовок User-agent
Существует база данных заголовков User-agent с указанием некоторых данных об устройствах, отправляющих подобные заголовки

WCF Cache: MemoryCache

Используя .NET Framework 4 и выше можно использовать MemoryCache для хранения редко обновляемых данных

Использование совсем простое
  1. Проверяем наличие данных в кэше (MemoryCache.Default["<cache key>"])
  2. Если есть данные - возвращаем результат
  3. Если нет данных - достаём их из БД, например, и кладём в кэш (вернув результат, конечно) 
Пример использования

HTML5 output tag

HTML5 <output> тэг предназначен для вывода вычисленных приложением результатов (например какой-нибудь web-калькулятор)

Список атрибутов
  • id - идентификатор элемента
  • for - список идентификаторов элементов, влияющих на вывод информации
  • form - определяет список идентификаторов форм, к которым вывод привязан
  • name - имя элемента, по которому можно обращаться в тэгу на событии формы oninput
    Внимание: в IE (11) обращение идет по идентификатору (атрибут id)
Предлагаю взглянуть на код

Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".

Полный текст:

Службе WebHost не удалось обработать запрос
 Сведения об отправителе: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/12211440
 Исключение: System.ServiceModel.ServiceActivationException: Не удается активировать службу "/SomeServiceName.svc" из-за возникновения исключения в процессе компиляции.  Сообщение об исключении: Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".. ---> System.InvalidOperationException: Конечные точки, использующие "UriTemplate", не могут быть использованы с "System.ServiceModel.Description.WebScriptEnablingBehavior".

Собственно не юзайте enableWebScript с UriTemplate

WCF - подключение сервиса на web-страницу с использованием enableWebScript

Для использования WCF-сервиса на web-страницах через javascript есть возможность подключения сгенерированного WCF клиента специально для этого.

Демонстрационный код можно скачать здесь

Коротко, как сделать с нуля:
  1. Создаете проект WCF Service Application
  2. Интерфейс IService1 помечаете атрибутом ServiceContract с заданным Namespace равным CustomServices
  3. Сигнатуру метода GetData меняем на string GetData(string value)
  4. Имплементируем
  5. Переходим в файл Web.config
  6. Задаём некоторые параметры сервиса
  7. Теоретически сервис готов к использованию, подключаем скрипт на страницу одним из возможных способов:
    • тег script
    • ScriptManager
    • ScriptManager ещё раз

      Обратите внимание: отладочная версия скрипта размещена по адресу /Service1.svc/jsdebug, а релизная - /Service1.svc/js
  8. Пробуем:


  9. т.е. все использования сервиса сводится к вызовам методов через полученный JS-класс
     CustomServices.IService1.GetData(txtText.value, onSuccessonFail);