第一个WCF程序

    技术2025-04-23  21

    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

     

    最新回复(0)