Опубликован: 12.02.2013 | Доступ: свободный | Студентов: 791 / 47 | Длительность: 17:51:00
Специальности: Программист
Лекция 7:

Средства Windows Phone для работы с сетью

17.6. Взаимодействие приложений с сетевыми службами

Приложения для Windows Phone могут взаимодействовать с веб-серверами, используя протоколы Интернета. Также можно создавать сетевые службы и использовать их в устройствах Windows Phone.

Службы Windows Communication Foundation, или WCF, предоставляют возможность процессам взаимодействовать друг с другом по сети. Процессы могут обмениваться сообщениями по сети, используя различные сетевые среды. Службы работают на сервере, к которому могут получать доступ клиентские программы. В нашем случае клиентская программа будет работать в Windows Phone.

На рис. 17.4 представлен принцип взаимодействия программы с сетевой службой. Программное обеспечение телефона взаимодействует с прокси-объектом, который содержит методы, предоставляемые службой. Вызов метода прокси-объекта приводит к созданию и оправке сетевого сообщения службе на сервере. При получении сообщения сервер вызывает код метода серверного объекта. Результат, возвращаемый методом, упаковывается в другое сетевое сообщение, которое отправляется клиенту, который пересылает возвращаемое значение программе, которая вызвала этот метод. При этом, система выполняет всю работу по созданию и передаче сообщений. Необходимо только создать серверные методы и вызывать их на клиентской системе.

Взаимодействие программы для Windows Phone с сетевой службой

Рис. 17.4. Взаимодействие программы для Windows Phone с сетевой службой

Также служба предоставляет описание её методов. Это описание использует среда разработки (в нашем случае — Visual Studio) для создания прокси-объекта в клиентской программе. Это упрощает создание клиентского приложения.

Рассмотрим пример создания службы Новость дня, которая будет возвращать одну из новостей по запросу клиента. Клиент должен передать в качестве параметра цифру 1, 2 или 3, которая, для удобства, будет обозначать категорию новостей.

Приложение будет состоять из двух частей: программа на сервере, которая экспортирует службу, и программа на клиенте, которая её использует. Сервер будет службой WCF, а клиент — приложением для Windows Phone, которое подключается к службе и запрашивает новость.

Для создания службы WCF нужно при создании проекта Visual Studio выбрать шаблон Приложение службы WCF в группе WCF. Службу можно тестировать в среде Visual Studio. После тестирования файлы проекта можно будет загрузить на рабочий сервер. Обратите внимание, что службу можно создать в Visual Web Developer 2010 Express.

Службы и клиенты

Службы и клиенты похожи на методы. При создании сервера создаётся метод, который выполняет какие-то действия и возвращает результат. Клиента вызывает метод сервера и обрабатывает результат. При этом, служба WCF выполняет все необходимые действия по упаковке параметров и возвращаемого значения метода в сетевые сообщения. При создании проекта службы в файле .cs создаётся интерфейс, который определяет предоставляемый службой метод:

[ServiceContract]
public interface INewsOfTheDayService
{
    [OperationContract]
    string GetData(int value);
}

В общем случае, служба может предоставить несколько методов, но в нашем примере достаточно одного метода. Этот метод принимает один параметр и возвращает результат. Также при создании службы будут автоматически созданы метод GetDataUsingDataContract и класс CompositeType, которые являются примерами использования сложных типов данных в службах, и их можно удалить.

После создания интерфейса можно создать код метода, который будет предоставлять служба. Заготовка метода создаётся по умолчанию в файле службы с расширением .svc, с которым связан одноимённый файл .cs. Атрибуты [ServiceContract] и [OperationContract] предоставляют средства для создания описания службы при построении проекта, которые будут использоваться клиентами для взаимодействия с этими службами.

public class NewsOfTheDayService : INewsOfTheDayService
{
    public string GetData(int value)
    {
        string result;
        switch (value)
        {
            // категория "Компьютеры"
            case 1:
                result = "Intel Xeon E5-2600: "облачные" процессоры ставят рекорды";
                break;
  
            // категория "Программное обеспечение"
            case 2:
                result =
                    "Вышла в свет ОС Windows 8 Consumer Preview";
                break;

            // категория "Мобильные устройства"
            case 3:
                result =
                    "Nokia выпускает новые телефоны с ОС Windows Phone 7.5 Mango";
                break;

            // если указан неверный номер категории
            default:
                result = "Выбрана несуществующая категория";
                break;
        }
        return result;
    }
}

Этот метод возвращает строку с новостью в соответствии с запрошенной категорией. Если будет передан номер несуществующей категории, будет выдано сообщение об ошибке.

Если попытаться запустить проект, нажав клавишу F5 (или другим способом), Visual Studio создаст веб-сервер, на котором будет запущена служба, и откроется окно программы Тестовый клиент WCF, в котором можно вызвать метод службы с различными параметрами и просмотреть результаты, которые метод возвращает (рис. 17.5).

. Окно программы Тестовый клиент WCF

Рис. 17.5. . Окно программы Тестовый клиент WCF

Также можно просмотреть описание службы в браузере, указав URL службы, который можно найти в окне программы Тестовый клиент WCF (рис. 17.6).

Страница службы, открытая в браузере

Рис. 17.6. Страница службы, открытая в браузере

В окне браузера выводится ссылка на описание службы на языке WSDL и программный код, который можно использовать для создания приложения для тестирования службы.