Вы можете использовать Visual Studio для создания проекта сервиса WCF аналогично тому, как вы описываете другие проекты. Выбор File | New | Project приведет к открытию диалогового окна Add New Project. Здесь вы можете выбрать узел WCF под языком C# или Visual Basic. Это позволит вам выбрать шаблон проекта сервиса WCF (рис. 19.16). В этом диалоге вы можете задать имя сервиса и местонахождение его кода.
Обратите внимание, что здесь имеется несколько шаблонов сервисов WCF. Эти шаблоны позволяют вам создавать сервисы WCF под ваши конкретные запросы. Есть два шаблона для рабочих процессов Windows: Sequential Workflow Service Library и State Machine Workflow Service Library. Шаблон Syndication Service Library позволяет вам создавать синдикационный сервис типа новостной ленты RSS. Мы же сосредоточим свое внимание на стандартном шаблоне WCF Service Library.
Примечание
Есть еще один шаблон проекта для сервиса WCF. Он находится в узле Web диалогового окна Add New Project. Этот шаблон создает сервис WCF, работу которого обеспечивает ASP.NET и IIS (аналогично стандартному Web-сервису).
Файлы библиотек сервиса WCF
Проект WCF Service Library, который создается по шаблону Visual Studio, содержит интерфейс для описания вашего сервисного контракта, класс сервиса для реализации интерфейса, файл App.config для настройки сервиса, а также ссылки на другие библиотеки .NET.
На рис. 19.17 показан новый проект на основе этого шаблона. В окне кода представлено начало разработки интерфейса CustomerProfileService.
Интерфейсный класс сервиса (ICustomerProfileService.cs на рисунке) — это тот интерфейс, который вы используете для описания контракта вашего сервиса. Контракт включает в себя сервисные операции и контракт данных. Выделение интерфейса в отдельный файл помогает абстрагировать все атрибуты WCF и элементы контракта от логики вашего сервиса.
Класс определяется как сервис WCF при помощи атрибута ServiceContract в верхней части класса. Кроме того, операции сервиса (методы сервиса) обозначаются как таковые посредством применения к методу (GetCustomerProfile) атрибута OperationContract.
Класс сервиса (в списке Solution Explorer это CustomerProfileService.cs) реализует интерфейс сервиса. Именно здесь располагается логика сервиса независимо от того, содержится ли в ней реальная бизнес-функциональность или вызовы другой библиотеки, в которой находится фактический код реализации. На рис. 19.18 показано представление класса сервиса. Обратите внимание, что этот класс является просто стандартным классом C# (он может быть также и на Visual Basic), который реализует интерфейс сервиса. Эта модель программирования должна быть вам хорошо знакома.