WCF的简单使用

本文详细介绍了WCF服务的创建过程,包括服务接口定义、实现类编写、宿主配置及客户端调用等内容,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WCF简单介绍

WCF(windows communication foundation)是微软推出的数据通信的统一编程模型,在WCF有四个主要的关键点:

abcd

Address(地址):定义服务的地址

Binding(绑定):定义通信的方式(传输协议等)

Contract(契约):定义服务的具体实现

enDpoint(终结点):由上面的abc共同构成终结点,用于服务端和客户端进行通信

WCF服务器创建

核心的dll:system.ServiceModel

由于WCF是面向服务的,面向接口的,所以首先需要创建一个服务接口

1.创建一个接口类IWCFTestService作为服务契约

2.创建一个接口的具体实现类WCFTestService

3.到此为止服务已经编写好了,接下来就是将这个服务放到宿主上,就可以作为服务被调用了。接下来创建一个控制台程序Host作为宿主。

 class Program
    {
        static void Main(string[] args)
        {
            //将服务启动起来
            using(ServiceHost host=new ServiceHost (typeof(BLL.WCFTestService)))
            {
              host.Open();
              Console.WriteLine("服务已经启动");
              Console.ReadKey();
              host.Close();
            }
        }
    }

4.契约部分已经编写完毕,然后就是address、binding、endpoint,这些都是在配置文件中进行配置

<configuration>
  <system.serviceModel>
    <services>
      <service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9000/"/>
          </baseAddresses>
        </host>
        <endpoint address="http://localhost:9000/" binding="basicHttpBinding" contract="IBLL.IWCFTestService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

5.启动控制台程序将服务挂起,然后在浏览器中输入终结点网址,http://localhost:9000/,如下所示,表示服务创建成功

 

6.接下来新建一个客户端,WindowsForm程序对创建的服务进行测试。可以直接跟WebService程序一样直接添加服务引用,系统生成代理类,然后调用相应的api

 private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtOne.Text) || string.IsNullOrEmpty(txtTwo.Text))
            {
                MessageBox.Show("请输入正确的数字");
            }
            else
            {
                double one = double.Parse(txtOne.Text);
                double two = double.Parse(txtTwo.Text);
                WCFServiceReference.WCFTestServiceClient client = new WCFServiceReference.WCFTestServiceClient();
               double result= client.Add(one,two );
               txtResult.Text = result.ToString();
            }
        }

 7.补充

WCF可以寄宿在任意类型的项目中,如何将WCF服务发布到IIS中去呢,只要创建一个空的web应用程序,然后将这个应用程序发布到IIS中就可以了,你需要在这个web项目中,添加一个“WCF服务”,这是一个一svc为后缀名的文件,添加后系统会默认的创建出契约的接口和实现类。只需要将服务的逻辑添加上,并修改配置文件即可。如果你希望将WCF寄宿到WindowsForm中去,最好不要将启动服务的代码写在Form()初始化中,应该写到Program.cs中,这样可以有效的避免,UI线程堵塞。

 

上面我们已经创建好了契约,那么如何将我们已经写好的契约添加到空的Web应用程序中呢?

1.添加一个文件。同时将文件的后缀名修改为svc,文件内容:

<%@ ServiceHost Service="BLL.WCFTestService" %>

2.配置web.config文件

<configuration>
  <system.serviceModel>
    <services>
      <service name="BLL.WCFTestService" behaviorConfiguration="behaviorConfiguration">
        <endpoint binding="basicHttpBinding" contract="IBLL.IWCFTestService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

上面的配置文件中,没有对address进行配置,因为当部署到IIS上的时候,会为程序分配地址和端口号,服务默认的使用IIS的地址

 

转载于:https://www.cnblogs.com/XZhao/p/7301640.html

### 创建和使用 WCF 服务 #### 在 Visual Studio 中创建 WCF 服务 为了在 Visual Studio 中创建 WCF 服务,可以选择不同的模板来启动项目。对于 Visual Studio 2013 和 2015 版本,“WCF 服务库” 是默认的 WCF 模板之一[^1]。除此之外,在这些版本中还提供了其他几种类型的 WCF 应用程序模板,比如“WCF 服务应用程序”,这允许开发者更方便地部署至 IIS。 当选择了“WCF 服务应用程序”作为 C# 的起点时,该项目将会自动生成四个主要文件:`IService1.cs`, `Service1.svc`, `Service1.svc.cs` 及 `Web.config` 文件;如果是 VB.NET,则对应的文件名分别为 `IService1.vb`, `Service1.svc`, `Service1.svc.vb` 和相同的 `Web.config`[^3]。 #### 使用 WCF 服务 一旦创建了 WCF 服务并实现了所需的服务接口方法之后,可以通过多种方式测试该服务的功能。一种简单的方法是在 Windows 窗体应用程序内部集成 WCF 客户端代码以调用远程过程。例如,可以在解决方案资源管理器里找到名为 `Service1.svc` 的项,并通过右键菜单选择查看其设计视图或者直接打开关联的服务类文件来进行编码实现业务逻辑处理功能[^4]。 另外,也可以利用内置工具——“WCF 测试客户端”。此工具能够帮助快速验证已发布的 Web Services 是否正常运作。只需运行这个独立的应用程序,加载目标地址即可浏览可用的操作列表,如 `GetData()` 方法等,并执行相应的请求操作来检验返回的结果是否符合预期。 ```csharp // 示例:定义一个简单WCF 接口和服务实现 using System.ServiceModel; [ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); } public class Service1 : IService1 { public string GetData(int value) { return $"You entered: {value}"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值