Статьи

Дополненная реальность, Windows 8 и облачные вычисления — часть 2

Цель этого поста — создать стартовый проект для серверной части веб-сервиса.

Позже мы создадим клиент дополненной реальности для Windows 8. 
001

  1. Давайте начнем с облачного сервера.
  2. Мобильное приложение отправит GPS-координаты облачного приложения Azure.
  3. Облачное приложение будет использовать координаты для поиска на Google.com или Bing.com, чтобы найти дополнительную информацию об этих координатах.

    • Например, он может искать города и окрестности.
  4. Облачное приложение вернет эти данные клиенту для отображения на экране с наложением фотографии.

Обратите внимание, что мы выбираем приложение MVC Web API. 

002

образ

  1. Важно понимать, ПОЧЕМУ я выбираю   тип проекта MVC Web API .
  2. Существует два основных варианта создания проекта веб-сервисов:

    • Используйте Windows Communication Foundation — WCF — или
    • Используйте  ASP.NET Web API , который входит в MVC версии 4.
  3. Предоставление услуг через WCF также легко сделать.
  4. Но для этого конкретного сценария мы будем использовать  более новый, более современный подход, который ASP.NET Web API  привносит в таблицу, по-  настоящему охватывая концепции HTTP  (URI и глаголы).
  5. MVC Framework позволяет нам создавать сервисы, которые легче используют некоторые функции HTTP, такие как заголовки запроса / ответа, а также конструкции гипермедиа.
  6. Оба проекта могут быть протестированы на одной машине во время разработки.
  7. Посмотрите следующее 1,5-минутное видео, чтобы узнать, как создать облачное приложение MVC4.


Общие сведения о типах ролей для проекта Windows Azure. Что означают эти параметры 

003

  1. ASP.NET веб-роль
    • Это старые школьные веб-формы.
    • Это очень устоявшийся шаблон для создания современных веб-приложений.
    • Существует хорошо отлаженная экосистема инструментов, документации и ресурсов.
    • Но это не подходит для модульного тестирования.
    • В нем нет четкого разделения кода и разметки.
    • Многие разработчики перешли на ASP.NET MVC, как описано далее.
  2. ASP.NET MVC3 / 4 веб-роль (что мы выбираем в этих сообщениях)
    • Это популярный и мощный фреймворк от Microsoft.
    • Это платформа веб-приложений, которая реализует шаблон модель-представление-контроллер (MVC).
    • Он также предоставляет возможность через веб-API создавать веб-службы на основе REST. -Мы выберем эту опцию.
    • Может проводить модульное тестирование и имеет четкое разделение проблем.
  3. Веб-роль службы WCF
    • Windows Communication Foundation (или WCF) — это среда выполнения и набор API в .NET Framework для создания подключенных, ориентированных на службы приложений.
    • Он активно использовался для приложений типа SOA, но дал начало веб-API, поскольку популярность архитектур на основе REST возросла.
    • Это вполне приемлемое решение и единственное решение, если вам необходимо поддерживать многие передовые стандарты веб-служб (WS), такие как WS-Addressing, WS-ReliableMessaging и WS-Security.
    • В последующих версиях NET Framework 4.0 WCF также предоставляет службы RSS Syndication, WS-Discovery, маршрутизацию и улучшенную поддержку служб REST.
  4. Рабочая роль
    • До сих пор мы занимались веб-ролями. Веб-роли по умолчанию включают в себя Internet Information Server (IIS) внутри ОС Windows Server внутри виртуальной машины, работающей на одном физическом ядре.
    • Рабочие роли — это то же самое, что и веб-роли, за исключением того, что IIS отсутствует.
    • Это позволяет облачным приложениям запускать фоновые процессы, обычно читая сообщения, помещенные в очереди веб-ролями.
    • Рабочие роли могут использовать Windows Azure Storage, как веб-роли.
  5. Роль рабочего кэша
    • Windows Azure Caching supports the ability to host Caching services on Windows Azure roles.
    • In this model, the cache can join memory resources to form a cache cluster.
    • This private cache cluster is available only to the roles within the same deployment.
    • Your application is the only consumer of the cache.
    • There are no predefined quotas or throttling.
    • Physical capacity (memory and other physical resources) is the only limiting factor.
    • Other features include named caches, regions, tagging, high availability, local cache with notifications, and greater API symmetry with Microsoft AppFabric 1.1 for Windows Server.

Understanding VisualController is a key starting point 

004

  1. VisualController.cs is a file we need to modify.
  2. It contains the code that will execute when the Windows 8 client submits an HTTP request against the web service.
    • This HTTP request will include GPS data.
  3. This is where we will add some of our code to return the JSON data required by the Windows 8 application.
  4. The ValuesController class is generated by Visual Studio, and it inherits from ApiController, which returns data that is serialized and sent to the client, automatically in JSON format.
  5. We will test this file before modifying it. We need to learn how to call methods inside of VisualController.cs
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    public void Post(string value)
    {
    }

    // PUT api/values/5
    public void Put(int id, string value)
    {
    }

    // DELETE api/values/5
    public void Delete(int id)
    {
    }
}
Key Http Support Note that the methods above — Get(), Post(), Put(), Delete(). These methods map to specific CRUD operations and HTTP verbs executed by the Windows 8 application. Because it is based on REST, any client capable of http can call into these methods.
Automatic routing of web requests This is the magic of the ASP.NET Web API framework: it automatically routes the HTTP verbs used by the client directly to the methods defined in the VisualController class, minimizing potential programming mistakes.
Our LocationWebService project is ready to run right now. The methods in the ValuesController class are self-documenting. 

Note that the Get() method in the code below gets called when the client issues the HTTP verb get using the following URL: 

http://127.0.0.1:81/api/values

(The port differs from system to system. If we deploy to a data center, this port is not relevant. The port matters only if you run your project locally on your development machine)

We will call he Get() method from a Windows 8 client
1
2
3
4
 public IEnumerable<string> Get()
  {
 return new string[] { «value1», «value2» };
  }

Note the video which shows us exactly how to call into a web service method 

006

  1. Let us now use a browser to test our web service.
  2. Any browser can be used for this purpose.
  3. To test the Web Service from a browser, perform the following steps:
  4. In Visual Studio, click on the Debug menu and choose Start Debugging.
  5. This will start the various emulators to allow us to run our application on our local dev machine.
    • There is a Compute Emulator
      • Runs our MVC WebAPI app
    • There is a Storage Emulator
      • We are not using storage today for this app
  6. You should see the screen above.
    • Notice the web address of http://128.0.0.1:81
      • That is port 81 on my machine (yours may differ)
  7. We can call the get() method by simply issuing the following url
    • http://127.0.0.1:81/api/values
      • This will trigger the ASP.NET Web API application to send the two strings:
        • value1 and value2
  8. Watch the video that illustrates this application running and returning value1 and value2
  9. We just ran a simple intro sample before we do the real work.
  10. Now should starting to see that we can call into the cloud application quite easily. We just need to use a URL from a Windows 8 Application.
  • We can pass parameters and receive data back.
    • The data we pass will be GPS coordinates.
    • The data we get back will be location information, such as neighborhood, city, etc.
  • Conclusion
    1. We have successfully tested an MVC Web API based cloud project.
    2. The next step is to enhance it to call another web service to get location information based on GPS coordinates
      1. This is Step 3
    3. Question
      1. Should I keep doing quick videos? Are they helpful?
      2. No voice yet. Pretty self-explanatory what I’m doing.
      3. Comments Welcome.