如何:定义 Windows Communication Foundation 服务协定

这是创建基本 Windows Communication Foundation (WCF) 服务和可以调用该服务的客户端所需的六项任务中的第一项任务。有关全部六项任务的概述,请参见入门教程主题。

创建基本 WCF 服务时,第一项任务是定义协定。协定指定服务支持的操作。可以将操作视为一个 Web 服务方法。通过定义 C++、C# 或 VB 接口可创建协定。接口中的每个方法都对应于特定的服务操作。每个接口都必须将 ServiceContractAttribute 应用于自身,而每个操作都必须将 OperationContractAttribute 应用于自身。如果接口中的一个方法具有 ServiceContractAttribute 而没有 OperationContractAttribute,则不公开该方法。

在操作过程后面的示例中提供了用于此任务的代码。

使用接口创建 Windows Communication Foundation 协定

  1. 通过在**“开始”菜单中右击“Visual Studio 2008”并选择“以管理员身份运行”**,以管理员身份打开该程序。

  2. 创建新的控制台应用程序项目。在**“新建项目”对话框中,选中“Visual Basic”“Visual C#”,并选择“控制台应用程序”**模板,并命名为 Service。使用默认的位置。

  3. 将默认的 Service 命名空间更改为 Microsoft.ServiceModel.Samples

  4. 将对 System.ServiceModel.dll 的引用添加到项目。

    1. 在**“解决方案资源管理器”中,右击项目文件夹下的“引用”文件夹,然后选择“添加引用”**。
    2. 单击**“添加引用”对话框中的“浏览”选项卡,导航到“c:\Windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation”,选择“System.ServiceModel.dll”,然后单击“确定”**。

    提示

    在使用命令行编译器(例如 Csc.exe 或 Vbc.exe)时,还必须提供程序集的路径。例如,在运行 Windows Vista 的计算机上,默认情况下的路径为:Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation。

  5. System.ServiceModel 命名空间添加一个 using 语句(在 Visual Basic 中为 Imports)。

  6. 定义一个名为 ICalculator 的新接口,并向该接口应用 Namespace 值为“http://Microsoft.ServiceModel.Samples”的 ServiceContractAttribute 属性。显式指定命名空间是一种最佳做法,因为这样可防止将默认命名空间值添加到协定名称。

    提示

    使用属性来批注接口或类时,可以从属性名称中去掉“Attribute”部分。因此 ServiceContractAttribute 将变成 [ServiceContract]

  7. 在接口中为 ICalculator 协定公开的每个操作(加、减、乘和除)声明一个方法,并对希望作为公共 WCF 协定的一部分公开的每个方法应用 OperationContractAttribute 属性。

示例

下面的代码示例演示一个定义服务协定的基本接口。

现在已创建接口。生成该项目以确保不存在编译错误,然后按照如何:实现 Windows Communication Foundation 服务协定中的说明实现接口。有关疑难解答信息,请参见入门教程疑难解答

另请参见

任务

如何:实现 Windows Communication Foundation 服务协定

参考

ServiceContractAttribute
OperationContractAttribute

其他资源

Getting Started Sample
Self-Host