Программирование, Сервис-ориентированные системы

Основы разработки WCF-служб. Часть 2. Разработка простейшего приложения

В этой статье я расскажу о том, как создать простой консольное приложение на языке C#, чтобы его легко можно было модифицировать в WCF-службу. Основы разработки WCF-служб. Часть 2. Разработка простейшего приложения
Иван Артамоновhttps://artamonoviv.ru/images/icon/logo.png
Внимание! Эта статья была опубликована в 2012 году в книге "Разработка распределенных сервисно-ориентированных программных средств". Использование материалов из нее разрешено только при правильной библиографической ссылке (для докладов, курсовых работы, рефератов, дипломных и пр. научных работ) или url-ссылки (для сайтов). Библиографическое описание дано в конце статьи.
PDF-версия статьи: скачать
В этой статье я расскажу о том, как создать простой консольное приложение на языке C#, чтобы его легко можно было модифицировать в WCF-службу.

Если вы не понимаете, что такое WCF и зачем оно нужно, то, наверное, следует прочитать первую статью цикла: Основы разработки WCF-служб. Часть 1. Теория WCF.

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

Для начала необходимо разработать примерную структуру программы. Так как работа в консольной программе связана с начальной статичной процедурой "static void Main", то предлагается работать в ней с экземпляром класса "public class WorkBook", который будет содержать как список книг, так и набор процедур для управления этим списком. Саму книгу будет описывать класс "public class Book".

1. Создание проекта консольного приложения.

Для начала необходимо открыть среду программирования Microsoft Visual Studio8. В ней щелкните по меню "Файл":"Создать":"Проект".

Появится диалоговое окно создания нового проекта. В правой части окна, в иерархическом списке выберите тип проекта "Visual C#": "Windows".

Из набора шаблонов в правой части экрана выберите "Консольное приложение".

В нижней части окна необходимо задать имя и расположение объекта. В качестве имени введите "a_console" (с подчеркиванием) и расположите где угодно.

Нажмите "ОК".

2. Знакомство с программой.

Итак, мы создали проект. Это значит, что среда разработки Microsoft Visual Studio 2008 создала все необходимые файлы в указанном вами месте и даже приготовила черновик кода программы. Этот черновик, кстати, вам сразу же будет показан на экране. Выглядеть он должен примерно так:

Разберемся, что означает код.

Первые четыре строчки, с 1 по 4, это подключение необходимых пространств имен, отвечающих за реализацию различных, вспомогательных функций. В принципе, строки 3 и 4 для наших целей будут не нужны и можно их вообще удалить.

Строка 5 определяет пространство имен "a_console", то есть такого же имени, как и наша программа. Строка 6 вводит класс "Program" в пространстве имен "a_console". В строке 7 начинается процедура "Main", которая в нашем консольном приложении будет "точкой входа", с которой начнется выполнение всей программы.

Перед тем, как начать работать по заданию, попробуем немного модифицировать и скомпилировать программу.

В фигурных скобках, принадлежащих процедуре "Main", напишите две строчки:

Таким образом, должен получиться вот такой код:

Разберемся, что означают добавленные строки. Строка Console.WriteLine("Привет, Мир!"); выводит на экран текст "Привет, Мир!", а строка Console.ReadLine(); ждет нажатия любой клавиши, чтобы закрыть программу.

Для того, что скомпилировать программу, в меню "Построение" выберите "Построить решение". Среда разработки постарается скомпилировать ваш код в исполняемое приложение (exe-приложение). Если все пройдет удачно, то в нижней части экрана вы должны увидеть подобное сообщение:

Главное, что "успешно и без изменений: 1". Если такого замечания нет, значит, ваша программа не смогла скомпилироваться из-за ошибок.

Для того, чтобы запустить программу, в меню "Отладка" выберите "Начать отладку". Откроется ваше приложение с текстом "Привет, Мир!".
Закройте приложение или в меню "Отладка" выберите "Остановить отладку".

3. Разработка необходимых классов и процедур.

Добавим класс Book в пространство имен "a_console".

Класс "Book" включает 5 переменных: id (Внутренний числовой идентификатор книги), name (название книги), author (автор книги), comments (комментарии к книге), create (время, когда была создана запись о книге). Этот класс является описателем книги.

Добавим класс "WorkBook" в пространство имен "a_console".

Давайте разберемся, что было добавлено.

В классе WorkBook содержится переменная global_id, которая является обыкновенным счетчиком количества книг.

Строчка public List books = new List(); инициализирует коллекцию List для хранения набора экземпляров класса Book. По сути, коллекция – это массив экземпляров класса с куда более широкими возможностями для манипуляции. Новый экземпляр коллекции был назван "books".

Функция public List GetBooks() возвращает коллекцию книг, которую хранит экземпляр класса WorkBook. Иначе говоря, при вызове функции List GetBooks() она должна вернуть список всех записей о книгах, что есть у программы. Список передается в формате коллекции.

Функция public void AddBooks() ничего не возвращает, но выполняет важную работу. Увеличивает счетчик global_id на 1, присваивает переданной ей книге порядковый номер (значение этого счетчика) и добавляет книгу в коллекцию (в список).

Функция public void DelBook() удаляет книгу с идентификатором, который ей передает пользователь.

Таким образом, мы добавили в программу все необходимые процедуры для работы со списком книг.

Если построить решение и запустить отладку, программа должна написать "Привет, Мир!". Как и в прошлый раз, ничего нового, к сожалению, она пока делать не может.

4. Обработка запросов пользователя.

Приступим к последнему шагу консольной программы: модифицируем процедуру Main.

Вместо

Запишем

Разберемся, что было изменено. Процедура "Main" теперь выполняет ряд важных функций:

1. Инициализирует экземпляр класса "WorkBook", который будет назван workbook, строчкой:
WorkBook workbook = new WorkBook();

2. Инициализирует строковую переменную action, которая будет хранить введенные пользователем команды.

3. Выводит приглашение программы "Добрый день".

4. Инициализирует условно-бесконечный цикл while c условием. Условие говорит о том, что while будет выполняться до тех пор, пока "action" не станет равным "4", то есть пока пользователь не введет "4" с клавиатуры.

5. Внутри цикла while программа в первую очередь публикует свое меню "Что вы хотите сделать?", которое состоит из 4 действий. Так как цикл работает бесконечно, программа после каждого своего действия будет снова и снова выводить меню, пока пользователь ее не остановит.

6. Далее программа считывает в переменную action команду пользователя.

7. Если action равен "1", то программа:

a. Создает экземпляр класса Book, который называется kniga
b. Поочередно заполняет новый экземпляр kniga необходимыми значениями. Сначала он заполняет ее id исходя из значения global_id, затем просит пользователя ввести название книги, автор и комментарии к ней.
c. Помечает дату создания книги как текущую строчкой
d. kniga.create = DateTime.Now;
e. Вызывает процедуру AddBooks(), которая, как уже говорилось, добавляет книгу в коллекцию.
f. Выводит сообщение о том, что книга успешно добавлена.

8. Если action равен "2", то программа выводит список книг. Для этого она запрашивает список книг в переменную spisok через процедуру GetBooks() строчкой
List spisok = workbook.GetBooks();

9. Затем, если количество книг больше 0, то она выводит в цикле номер и название каждой книги списка.

10. Если же количество книг нулевое, то оно выводит сообщение "Книг в базе данных нет!"

11. Если action равен "3", то программа спрашивает у пользователя номер удаляемой книги и вызывает процедуру DelBook(int id), которая удаляет книгу из коллекции.

12. После выхода из главного условно-бесконечного цикла while программа выводит прощальные слова "До свидания" и закрывается.

Отметим, что в этой программе нет работы с файлами, поэтому все функции работы с бизнес-логикой и уровнем данных сосредоточены в классе WorkBook. Уровень представления сосредоточен в процедуре Main. Это очень важно для дальнейшей работы со службой.

Если построить решение и запустить отладку, программа должна выполнять все функции задания.

Разработка WCF-службы по созданному коду рассматривается в следующей статье: Основы разработки WCF-служб. Часть 3. Разработка простой WCF-службы.


Библиографическое описание

Артамонов, И. В. Разработка распределенных сервисно-ориентированных программных средств / Иван Васильевич Артамонов. – Иркутск : БГУЭП, 2012. – 130 с.

URL-ссылка

https://artamonoviv.ru/articles/wcf_tutorial_2/