WCF服务的初次创建与引用服务

WCF服务的初次创建与引用服务

第一次创建WCF服务,看了这位大佬的博客,但还是出了点问题,现在解决掉了,所以做个总结。

代码实例

打开 VS 2013,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序"

在这里插入图片描述

确定后,系统会自动建立默认文件 ” Service1.cs”和” IService1.cs”,其实也是系统给你的示例

在这里插入图片描述

打开"IService1.cs",你可以看到系统给你的示例代码,将光标定位到"IService1"上,按F2健,可将接口重命为你想要的名子,重命名后将解决管理器中文件也同命修改。我修改为 ”IMyFirstService”;打开“Service1.cs",按相同方法修改

在这里插入图片描述

回到MyFirstService,在这里我定义了两个函数"Base64Encrypt"和"Base64Decrypt",请注意格式,[OperationContract]一定要有,否则外部无法访问。

切换到"MyFirstService",接口实现,编写具体代码。

在这里插入图片描述

好了,WCF服务库的代码部分就结束了,下面要开始配置,打开项目下的App.config文件

在这里插入图片描述

这里,我们主要看system.servicemodel节点,有2体个子节点"services"和"behaviors",其中"behaviors"节点主要是安全和调试方面的设置,我们不在此讨论,主要说一下第1个子节点"services",我们来看一下"services"节点内容

在这里插入图片描述

估计大多数人和我一样,这些是什么乱七八糟的东西,头大。既然开头说了,本文只说如何实现,所以不说其所以然了,肯定,这样的配置无法在后面的宿主里成功调用,为什么呢,因为缺少了binding的配置,而默认并未生成配置节点,那好我们自己来加,注意标识的地方**(额外注意蓝框,容易忽视出错)**

在这里插入图片描述

配置一下项目属性,我的生成目录在F:\WCFTEST,生成项目

好的,WCF服务库已工作已结束。

开始宿主程序

在初步学习的时候看的是创建Windows服务的宿主程序,运行过程中发现步骤比较繁琐,容易卡在一些报错上,所以这里介绍一个简单的创建宿主的方法。

这里介绍的是创建控制台应用程序来进行寄宿,虽然实用性不如Windows服务和IIS,但是毕竟是初次接触WCF服务,所以还是简单直接一点比较好。

我们先新建一个项目,选择控制台应用程序。
在这里插入图片描述
然后添加引用
在这里插入图片描述
在这里插入图片描述
接下来看代码

在这里插入图片描述
代码很简单,就几行,接下来要添加配置文件,

在这里插入图片描述
接下来打开这个文件,你会发现里面基本没有什么内容,接下来我们直接把之前创建WCF服务时改好的App.config中的内容直接复制过来,也就是说两个文件的内容一模一样

开始编写客户端调用

右击解决方案|添加|新建项目|Windows|windows 窗体应用程序,项目名就默认吧(WindowsFormsApplication1),添加2个label,2个textbox,3个button

在这里插入图片描述

右击引用|添加服务引用,服务地址在windows服务项目中App.config文件中,依次展开找到system.serviceModel|services|service|host|baseAddresses|add节点,baseAddress等于号后的双引号中的字符串即为服务地址,注意如果是生产环境,那么你服务所使用的端口号在开启。本例地址为“http://localhost:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”

在这里插入图片描述

在这里插入图片描述

如果出现报错(下载“http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/_vti_bin/ListData.svc/$metadata”时出错。
无法连接到远程服务器
由于目标计算机积极拒绝,无法连接。 127.0.0.1:8733
元数据包含无法解析的引用:“http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”。
没有终结点在侦听可以接受消息的 http://localhost:8733/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/。这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况,请参见 InnerException 以了解详细信息。
无法连接到远程服务器
由于目标计算机积极拒绝,无法连接。 127.0.0.1:8733
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。)
在这里插入图片描述
请启动之前创建好的WCFConsole,(VS调试启动即可,勿关闭调试,然后再试)

在这里插入图片描述

成功添加服务引用之后新项目显示如下
在这里插入图片描述
此时,服务地址是localhost,所以可以直接引用成功,如果服务地址是一个网络地址,需要在宿主服务器中将服务启动后才可以引用服务,否则会提示找不到服务。也就是说如果你的服务地址是“http://192.168.1.1:8732/Design_Time_Addresses/MyTestWcfServiceLibrary/Service1/”,,那么你要先将服务安装并启动服务,这样才可以添加服务引用

客户端代码
在这里插入图片描述

设为启动项目,运行

编码
在这里插入图片描述
在这里插入图片描述

解码
在这里插入图片描述
在这里插入图片描述
必须在控制台应用程序(即宿主程序)开启的情况下才能运行客户端。

本文所有文件下载:https://download.csdn.net/download/wubing4132/12569215

参考文章:https://www.cnblogs.com/pangguoming/p/7494946.html

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Visual Studio 中创建 WCF 服务时,有两种项目类型可供选择:WCF 服务应用程序和 WCF 服务库。这两种项目类型有以下区别: 1. WCF 服务应用程序是一种可执行文件,它包含了一个独立的 WCF 服务宿主。这意味着您可以直接运行 WCF 服务应用程序,并使用其自带的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务应用程序部署到 IIS 或自定义的 Windows 服务中。 2. WCF 服务库是一种库项目,它包含了一个或多个 WCF 服务契约和实现类。这意味着您必须将 WCF 服务引用到另一个托管应用程序中,然后手动配置该应用程序的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务库部署到 IIS 中,但必须将其部署为 WCF 服务应用程序的一部分。 3. WCF 服务应用程序和 WCF 服务库的项目结构也不同。WCF 服务应用程序包含了一个 .svc 文件和一个 Web.config 配置文件,用于配置 WCF 服务宿主和服务终结点。而 WCF 服务库只包含 WCF 服务契约和实现类,这些类通常包含在一个或多个 .cs 文件中。 4. 在使用 WCF 服务应用程序时,您可以使用 Visual Studio 自带的 WCF 测试客户端来测试您的 WCF 服务。而在使用 WCF 服务库时,您必须手动编写测试客户端或使用第三方测试工具来测试您的 WCF 服务。 总之,WCF 服务应用程序是一种独立的 WCF 服务宿主,适用于独立运行和测试 WCF 服务。而 WCF 服务库则是一种库项目,适用于将 WCF 服务集成到其他托管应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值