Статьи

Как использовать службы WCF для доступа к базе данных SQL Azure из приложения Windows Phone 7 – часть 2


Это вторая часть серии из четырех, в которой будет шаг за шагом объяснено, как использовать службы WCF для доступа к базе данных SQL Azure из приложения Windows Phone 7.
В качестве примера я разработаю приложение для Windows Phone, в котором пользователь может создать учетную запись, а затем войти в нее с помощью имени пользователя и пароля. Учетные записи сохраняются в SQL Azure, и я использую WCF для связи между приложением WP7 и базой данных SQL Azure.

В книге « Начало разработки для Windows Phone 7» есть очень подробная глава об использовании базы данных SQL Azure.

Часть 1. Регистрация в Windows Azure и создание базы данных SQL Azure.

Часть 2. Создание облачной службы (службы WCF) для подключения к базе данных SQL Azure.

Часть 3. Создание приложения для Windows Phone 7 с использованием WCF для подключения к базе данных SQL Azure

Часть 4. Развертывание службы WCF в Windows Azure

Создание проекта Windows Azure в Visual Studio 2010

Вам необходимо создать проект Windows Azure в Visual Studio 2010. Нажмите «Новый проект» и выберите «Шаблон облака». Вы должны установить Windows Azure SDK, прежде чем делать это. Когда вы создаете свой облачный проект, вас спрашивают о ролях .NET Framework 4. Для этого проекта вы выберете веб-роль службы WCF. Теперь у нас есть готовый к использованию проект Cloud.

Создание объектной модели

Теперь мы реализуем слой для взаимодействия с базой данных, и мы используем Entity Framework для этого. С помощью рефакторинга я переименую «WCFServiceWebRole1» в «CloudExampleServiceRole». Щелкните правой кнопкой мыши CloudExampleServiceRole в обозревателе решений и выберите «Добавить» и «Новый элемент». Выберите шаблон «Данные» и «Модель данных объекта ADO .NET», дайте ему имя и нажмите «ОК». Откроется мастер Entity Data Model, выберите «Создать из базы данных» и «Далее». Выберите «Новое подключение», выберите «Microsoft SQL Server» и «Продолжить». Затем вам нужно добавить свойства соединения в базу данных SQL Azure. Введите имя базы данных, используйте аутентификацию SQL Server с именем пользователя и паролем, которые вы создали для своей базы данных SQL Azure. Выберите базу данных, к которой вы хотите подключиться, и нажмите «ОК». Выберите «Да,включить конфиденциальные данные в строку подключения »и нажать« Далее ». Выберите таблицу User и нажмите «Finish».

Вы создали объектную модель для таблицы User в своей базе данных SQL Azure.

Создать контракт WCF

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

Замените автоматически сгенерированный код в IService1.cs на код ниже.

using System;
using System.ServiceModel;

namespace CloudExampleServiceRole
{
[ServiceContract]
public interface IService1
{
[OperationContract]
void AddUser(string fullName, string userName, string password);

[OperationContract]
string LoginUser(string userName, string password);
}
}

Создание сервиса

Теперь мы создадим сервис с методом для AddUser и методом для LoginUser.

Замените автоматически сгенерированный код в Service1.svs.cs приведенным ниже кодом.

using System;
using System.ServiceModel;
using System.Data.Objects;

namespace CloudExampleServiceRole
{
public class Service1 : IService1
{
public void AddUser(string fullName, string userName, string password)
{
using (var context = new CloudExampleEntities())
{
context.AddToUser(new User()
{
UserName = userName,
Password = password,
FullName = fullName,
});
context.SaveChanges();
}
}

public string LoginUser(string username, string password)
{
string query = @"SELECT value User.FullName FROM CloudExampleEntities.User AS User WHERE User.UserName = @username AND User.Password = @password";
ObjectParameter[] parameters = new ObjectParameter[2];
parameters[0] = new ObjectParameter("username", username);
parameters[1] = new ObjectParameter("password", password);

using (var context = new CloudExampleEntities())
{
ObjectQuery<string> results = context.CreateQuery<string>(query, parameters);

foreach (string result in results)
{
if (result != null)
{
return result;
}
}
}
return null; ;
}
}
}

Запуск Azure WCF локально на вашем компьютере

Мы завершили службу и можем запустить ее, нажав клавишу F5 в Visual Studio, это запустит службу в вашем браузере (не закрывать при локальном использовании службы), и эмулятор Windows Azure будет работать в фоновом режиме. Обратите внимание, что это может отличаться в зависимости от того, какую ОС вы используете, я использую Windows 7.

Следующий шаг

We have now created the Azure project with object model and WCF services. The next step now is to consume these services from the Windows Phone 7 application. Part 3: Creating a Windows Phone 7 app using WCF to connect to the SQL Azure Database.