1、创建WCF服务
a、通过VS创建一个WCF程序,新建项目-->WCF-->WCF服务应用程序。
创建好的项目会自动创建一个IService1接口,以及一个Service1.svc文件。Service实现了IService1接口。
IService内容如下:
[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: 在此添加您的服务操作 }[ServiceContract]特性声明IService1是一个服务协定。
[OperationContract]特性声明GetData方法是一个操作协定。只有使用 [OperationContract]特性申明的方法才能被其他人看到并使用。
创建协定以及实现协定之后,就只需要在Web.config进行配置就成功创建了简单WCF服务
b、Web.config部分配置如下:
<system.serviceModel> <services> <service behaviorConfiguration="behavior1" name="WcfService1.Service1"> <endpoint binding="basicHttpBinding" contract="WcfService1.IService1"></endpoint> </service> </services> <behaviors> <serviceBehaviors> <behavior name="behavior1"> <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> <serviceMetadata httpGetEnabled="true"/> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel><Services>就是定义声明服务,可以包含多个<service>
<service>需要指定behaviorConfiguration(指定是否公开元数据信息),name(实现的协定的类,包括命名空间)
<endpoint>:声明终节点,终节点由Address、Binding、Contract组成。
binding:指定使用服务协议,这里使用Http协议。
Contract:指定协定,包含命名空间。
上面配置文件中没有配置Address,在IIS部署WCF可以不指定Address,默认使用IIS的地址。
c.把WCF部署到IIS中,和其他应用程序一样的部署
2、创建客户端使用WCF服务
创建一个控制台应用程序,应用-->添加服务应用,添加IIS部署的WCF服务。
默认会生成一个ServiceReference1。在解决方法资源管理器上点击显示所有文件,可以查看ServiceReference1包含的文件
在代码使用:
static void Main(string[] args) { ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); string value = client.GetData(1); Console.WriteLine(value); }
svcutil http://localhost:8000/EchoService?wsdl