Пошаговое руководство. Создание службы данных WCF и доступ к ней в Visual Studio
В этом пошаговом руководстве демонстрируется создание простой службы Служба данных WCF в веб-приложении ASP.NET и последующий доступ к ней из приложения Windows Forms.
В этом пошаговом руководстве:
Создайте веб-приложение, размещаемое в Служба данных WCF.
Будет создана EDM (модель данных с использованием сущностей), представляющая таблицу Customers в базе данных Northwind.
Создайте таблицу Служба данных WCF.
Создайте клиентское приложение и добавьте ссылку на Служба данных WCF.
Будет включена привязка данных к службе и создан пользовательский интерфейс.
При необходимости в приложение будут добавлены возможности фильтрации.
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Наличие учебной базы данных Northwind.
Если этой базы данных нет на компьютере разработки, ее можно загрузить в Центре загрузки Майкрософт. Дополнительные сведения см. в разделе Загрузка образцов баз данных.
Создание службы
Чтобы создать службу Служба данных WCF, необходимо добавить веб-проект, создать EDM (модель данных с использованием сущностей) и службу из модели.
Сначала добавляется веб-проект для размещения службы.
Примечание
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Настройка параметров разработки в Visual Studio.
Создание веб-проекта
В строке меню выберите Файл, Создать, Проект.
В диалоговом окне Новый проект разверните узел Visual Basic или Visual C# и выберите пункт Веб, а затем выберите шаблон Веб-приложение ASP.NET.
В текстовом поле Имя введите NorthwindWeb и нажмите кнопку ОК.
В диалоговом окне Новый проект ASP.NET в списке Выбор шаблона выберите Пустой, а затем нажмите кнопку ОК.
На данном этапе будет создана EDM (модель данных с использованием сущностей), представляющая таблицу Customers в базе данных Northwind.
Создание модели EDM
В строке меню выберите Проект, Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите узел Данные и выберите элемент Модель EDM ADO.NET.
В поле Имя введите NorthwindModel и нажмите кнопку Добавить.
Появится мастер модели EDM.
В мастере моделей EDM на странице Выбор модели содержимого выберите элемент Конструктор EF из базы данных и нажмите кнопку Далее.
На странице Выбор подключения к базе данных выполните одно из следующих действий:
Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.
-или-
Нажмите кнопку Создать подключение для создания нового подключения к данным. Для получения дополнительной информации см. How to: Create Connections to SQL Server Databases.
Если база данных требует пароля, нажмите кнопку Да, включить конфиденциальные данные в строку подключения, а затем нажмите кнопку Далее.
Примечание
Если появится диалоговое окно, нажмите кнопку Да, чтобы сохранить файл в проекте.
На странице Выберите версию выберите переключатель Entity Framework 5.0 и нажмите кнопку Далее.
Примечание
Чтобы использовать последнюю версию Entity Framework 6 со службами WCF, необходимо установить пакет WCF Data Services Entity Framework Provider NuGet.См. статью Using WCF Data Services 5.6.0 with Entity Framework 6+ (Использование служб WCF Data Services 5.6.0 с Entity Framework 6+).
На странице Выбор объектов базы данных разверните узел Таблицы, установите флажок Customers и нажмите кнопку Готово.
Будет отображена диаграмма модели сущности, и файл NorthwindModel.edmx будет добавлен в проект.
На данном этапе будет создана и протестирована служба данных.
Создание службы данных
В строке меню выберите Проект, Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите узел Веб и выберите элемент Служба данных WCF 5.6.
В текстовом поле Имя введите NorthwindCustomers и нажмите кнопку Добавить.
Файл NorthwindCustomers.svc появится в редакторе кода.
В редакторе кода, найдите первый комментарий TODO: и замените код следующим:
Inherits DataService(Of northwindEntities)
public class NorthwindCustomers : DataService<northwindEntities>
Замените комментарии в обработчике событий InitializeService следующим кодом:
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetEntitySetAccessRule("*", EntitySetRights.All);
Чтобы запустить службу, в строке меню выберите Отладка, Запуск без отладки. Откроется окно браузера, и в нем будет отображена схема XML для службы.
В поле Адрес введите Customers в конце URL-адреса для файла NorthwindCustomers.svc, а затем нажмите клавишу ВВОД.
Будет отображено XML-представление данных в таблице Customers.
Примечание
В некоторых случаях обозреватель Internet Explorer может неправильно интерпретировать данные как RSS-канал.Необходимо убедиться, что параметр, определяющий, отображаются ли RSS-каналы, отключен.Для получения дополнительной информации см. Диагностика ссылок на службы.
Закройте окно браузера.
В ходе следующих этапов будет создано клиентское приложение Windows Forms для использования службы.
Создание клиентского приложения
Чтобы создать клиентское приложение, потребуется добавить второй проект, добавить к проекту ссылку на службу, настроить источник данных и создать пользовательский интерфейс, отображающий данные из службы.
Сначала проект Windows Forms добавляется к решению и устанавливается как загружаемый проект.
Создание клиентского приложения
В строке меню выберите Файл, Добавить, Создать проект.
В диалоговом окне Новый проект разверните узел Visual Basic или Visual C#, выберите узел Windows и выберите элемент Приложение Windows Forms.
В поле Имя введите NorthwindClient и нажмите кнопку ОК.
В Обозревателе решений выберите узел проекта NorthwindClient.
В строке меню выберите Проект, затем Назначить запускаемым проектом.
На этом этапе необходимо добавить ссылку на службу Служба данных WCF в веб-проекте.
Добавление ссылки на службу
В меню Проект выберите Добавить ссылку на службу.
В диалоговом окне Добавить ссылку на службу нажмите кнопку Найти.
В поле Адрес появится URL-адрес службы NorthwindCustomers.
Нажмите кнопку ОК, чтобы добавить ссылку на службу.
На данном этапе настраивается источник данных на включение привязки данных к службе.
Включение привязки данных к службе
В строке меню выберите Вид, Другие окна, Источники данных.
В окне Источники данных нажмите кнопку Добавить новый источник данных.
На странице Выбор типа источника данныхмастера настройки источника данных выберите Объект и нажмите кнопку Далее.
На странице Выбор объектов данных последовательно разверните узлы NorthwindClient и NorthwindClient.ServiceReference1.
Установите флажок Customer и нажмите кнопку Готово.
На данном этапе создается пользовательский интерфейс, который будет отображать данные из службы.
Создание пользовательского интерфейса
В окне Источники данных откройте контекстное меню для узла Customers и выберите команду Копировать.
В конструкторе форм в файле Form1.vb или Form1.cs откройте контекстное меню и выберите команду Вставить.
На форму добавится элемент управления DataGridView, компонент BindingSource и компонент BindingNavigator.
Выберите элемент управления CustomersDataGridView и в окне Свойства установите свойство Закрепить в Заполнение.
В Обозревателе решений откройте контекстное меню для узла Form1 и выберите Просмотр кода, открыв таким образом редактор кода, а затем добавьте следующие операторы Imports или Using с начала файла:
Imports NorthwindClient.ServiceReference1
using NorthwindClient.ServiceReference1;
Добавьте следующий код в обработчик событий Form1_Load.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim proxy As New NorthwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc/")) Me.CustomersBindingSource.DataSource = proxy.Customers End Sub
private void Form1_Load(object sender, EventArgs e) { NorthwindEntities proxy = new NorthwindEntities(new Uri("https://localhost:53161/NorthwindCustomers.svc/")); this.CustomersBindingSource.DataSource = proxy.Customers; }
В Обозревателе решений откройте контекстное меню файла NorthwindCustomers.svc и выберите команду Просмотреть в браузере. Откроется Internet Explorer, и в нем будет отображена схема XML для службы.
Скопируйте URL-адрес из адресной строки обозревателя Internet Explorer.
В коде, добавленном на этапе 4, выберите код https://localhost:53161/NorthwindCustomers.svc/ и замените его только что скопированным URL-адресом.
Чтобы запустить приложение, в строке меню выберите Отладка, Начать отладку. Будут отображены сведения о клиенте.
Теперь в наличии имеется рабочее приложение, которое будет отображать список клиентов из службы NorthwindCustomers. При необходимости в отображении дополнительных данных посредством службы, свойство EDM (модель данных с использованием сущностей) можно изменить, чтобы включить дополнительные таблицы из базы данных Northwind.
Следующим необязательным этапом является изучение фильтрации данных, возвращаемых службой.
Добавление возможностей фильтрации
На данном этапе будет выполнена настройка приложения на фильтрацию данных по городу клиента.
Добавление фильтрации по городу
В Обозревателе решений откройте контекстное меню узла Form1.vb or Form1.cs и выберите команду Открыть.
Добавьте в форму элементы управления TextBox и Button с панели элементов.
Откройте контекстное меню элемента управления Button и выберите команду Перейти к коду, а затем добавьте в обработчик событий Button1_Click следующий код:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim proxy As New northwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc")) Dim city As String = TextBox1.Text If city <> "" Then Me.CustomersBindingSource.DataSource = From c In _ proxy.Customers Where c.City = city End If End Sub
private void Button1_Click(object sender, EventArgs e) { ServiceReference1.northwindModel.northwindEntities proxy = new northwindEntities(new Uri("https://localhost:53161/NorthwindCustomers.svc")); string city = TextBox1.Text; if (!string.IsNullOrEmpty(city)) { this.CustomersBindingSource.DataSource = from c in proxy.Customers where c.City == city; } }
В коде выше замените https://localhost:53161/NorthwindCustomers.svc URL-адресом из обработчика событий Form1_Load.
Чтобы запустить приложение, в строке меню выберите Отладка, Начать отладку.
В текстовом поле введите London и нажмите кнопку. Будут отображены только клиенты из Лондона.
См. также
Задачи
Практическое руководство. Добавление, обновление или удаление ссылки на службу данных WCF