Итак, приступаем к созданию сервиса, предоставляющего информацию о курсе валюты.
Первым шагом является создание решения для реализации сервиса в Visual Studio, и разработка базы данных, которая будет использоваться сервисом.
На компьютере установлена среда Visual Studio 2010 Express и SQL Server 2008 Express. Весь софт имеет английский интерфейс. Кроме того установлена триал-версия замечательных компонентов DevExpress.
Запускаем студию, и создаем новое решение (File — New — Project — Other Project Types — Visual Studio Siolutions — Blank Solution). Назовем его для примера SolutionCourse.
В Solution Explorer появляется наше решение, с грустной надписью «0 projects». Вселенная не терпит пустоты, и для того, чтобы она не замусорила наше решение, добавим туда проект сами (Add — New Project). Поскольку мы условились, что на первом шаге мы развернем БД для нашего сервиса, добавлять нужно именно проект БД (Database — SQL Server — SQL Server 2008 Database Project). Назовем его CourseDB. Согласно заданию, в базе данных у нас должен хранится date-tracking курса валюты, причем одной. Все это, конечно, упрощения, реально решаемая задача была намного сложнее. Но я хочу показать сам принцип создания сервисов, поэтому не буду глубоко уходить в детали реализации конкретной задачи.
Добавим в проект новый объект схемы (Add — Table) с именем Courses. Пропишем для этой таблицы описание:
CREATE TABLE [dbo].[Courses] ( [ID] int identity(1,1) not null, [Date] datetime not null, [Course] numeric(18,4) not null, Constraint [pk_courses] primary key([ID]) )
Кроме того, нам потребуется функция, которая будет возвращать курс на заданную дату (ведь логика должна быть максимально реализована в СУБД, вспомните Тома Кайта). Добавим её в проект тем же способом, что и таблицу, но создаваемый объект укажем — Scalar-Valued Function, и реализуем её:
CREATE FUNCTION [dbo].[GetCourse] ( @Date datetime ) RETURNS numeric(18,4) AS BEGIN DECLARE @Course numeric(18,4) SELECT top 1 @Course=Course from Courses where Date=@Date RETURN isnull(@Course,-1) END;
На этом создание проекта можно считать практически завершенным. Осталось лишь настроить параметры развертывания проекта. Для этого откроем его свойства (Properties), и перейдем на закладку Deploy.
В настройках Deploy action (действия, выполняемого при развертывании) установим в «Create a deployment script (.sql) and deploy to the database». Это будет значить, что при запуске проекта будет создан скрипт развертывания, и созданная структура будет развернута на сервере.
Теперь настроим параметры того «места», где будет разворачиваться проект. Для этого настроим (или введем) строку подключения к серверу (Target Connection) и укажем имя базы данных, в которую будет развернут проект (Target Database Name).
Все, можно сохранять проект и нажимать F5. После окончания построения лог должен выдать нечто подобное (если все сделано правильно и настроено тоже правильно):
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ========== ========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========
После этого в окне Server Explorer появится самостоятельно новое подключение к свежесозданной базе, и можно проверить, правильно ли была развернута БД.