WCF开发入门的六个步骤

在这里我就用一个据于一个简单的场景:服务端为客服端提供获取客户信息的一个接口读取客户信息,来完成WCF开发入门的六个步骤。

1.       定义WCF服务契约

A.      项目引用节点右键添加引用。

B.      在代码文件里,添加以下命名空间的引用

using ;

using System;

C.      新建一个命为ICustomerService 接口,并添加一个获取客户信息的方法定义名为CustomerInfomation,返回字符串类型的客户信息。

D.     为接口ICustomerService添加ServiceContract的属性修饰使它成为WCF服务中公开的接口。 

E.      为方法CustomerInfomation添加OperationContract的属性修饰使它成为WCF服务公开接口中公开的成员。

F.      代码:

 1 using System;
 2 
 3 using ;
 4 
 5 namespace ConWCF
 6 
 7 {   [ServiceContract(Namespace = "")]
 8 
 9     public interface CustomerService
10 
11     { 
12 
13         [OperationContract]
14 
15         String CustomerInformation();
16 
17     }
18 
19 }
20 

 

2.       实现WCF服务契约

 

实现WCF服务契约很简单,就是实现上一步聚定义的WCF服务契约定义的接口就可以。下面看代码

 1 using System;
 2 
 3 using ;
 4 
 5 namespace ConWCF
 6 
 7 {   [ServiceContract(Namespace = "")]
 8 
 9     public interface ICustomerService
10 
11     { 
12 
13         [OperationContract]
14 
15         String CustomerInformation();
16 
17     }
18 
19     public class CustomerService:ICustomerService
20 
21     {
22 
23         #region ICustomerService 成员
24 
25         public string CustomerInformation()
26 
27         {
28 
29             return "这是客户的信息!";
30 
31         }
32 
33         #endregion
34 
35     }
36 
37 }
38 
39 

 

3.       启动WCF服务

A添加一个应用程序配置文件,文件件名为。

B配置WCF服务的基本地址,如下所示

<host>

                       <baseAddresses>

                            <addbaseAddress="http://localhost:8000/conwcfr"/>

                       </baseAddresses>

                   </host>

C配置WCF服务的端口。Address=“”,意思就是使用上面配置的基本地址,当然也可以在这里指定。Bingding=“wsHttpBinding”,意思是WCF服务使用的是HTTP协议。再接下来就是配置WCF服务契约了(命名空间.服务契约接口名),如下所示:

<endpointaddress=""

                             binding="wsHttpBinding"

                             contract="" />

D配置文件

E启动服服就简单了

ServiceHost host = new ServiceHost(typeof(CustomerService));

                    ();

                    ("客户信息服务已启动");

                    ("按任意键结束服务!");

                    ();

           ();

F当服务启动时,在IE栏中输入: http://localhost:8000/conwcfr,将会收到一些帮助的提示信息。

G异常:配置文件中的服务名称一定是:命名空间.实现WCF服务契约类的名称,否则将会发生找到不配置的异常。

             <service

                   name=""

    异常信息: Service '' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.

这个异常搞得我昏了半天,害得我以为从IIS、端口到配置环境排除错误,就是搞不明白为什么会跟类的命称联系起来。不过,最终也解决了。

4.       创建一个基本的WCF客服端

WCF服务端创建好啊,创建客户端就容易多了,直接用SVCUTIL 命令行工具去完成代码的生成。我安装了WINDOWS SDK,其带了一个CMDShell 命令行工具,打开后就可以运行SVCUTIL命令,这个命令是运行于 framework 3.0以上环境。查看详细帮助信息可以输入:svcutil /?,回车。

1. 启动上几步骤创建好的WCF服务端。

2. 在CMDShell工具中用CD 转到你要存放客户端代码的目录下,输入以下命令生成代码和配置文件。

D:"client>svcutil /language:c# /out: /config: http:/

/localhost:8000/conwcfr

上面命令指定了要生成代码的语言,代码文件和配置文件名,WCF服务端地址,注意运行命令时必须确定WCF服务端正在运行中。

5.       WCF客服端基本配置

WCF客户端配置就是配置调用WCF服务端的协议,输传宽带,服务地址,安全等等信息。下面就上一步骤命令自动生成的配置文件。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3     <>
 4         <bindings>
 5             <wsHttpBinding>
 6                 <binding name="WSHttpBinding_ICustomerService" closeTimeout="00:01:00"
 7                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
 8                     bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
 9                     maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
10                     messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
11                     allowCookies="false">
12                     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
13                         maxBytesPerRead="4096" maxNameTableCharCount="16384" />
14                     <reliableSession ordered="true" inactivityTimeout="00:10:00"
15                         enabled="false" />
16                     <security mode="Message">
17                         <transport clientCredentialType="Windows" proxyCredentialType="None"
18                             realm="" />
19                         <message clientCredentialType="Windows" negotiateServiceCredential="true"
20                             algorithmSuite="Default" establishSecurityContext="true" />
21                     </security>
22                 </binding>
23             </wsHttpBinding>
24         </bindings>
25         <client>
26             <endpoint address="http://localhost:8000/conwcfr" binding="wsHttpBinding"
27                 bindingConfiguration="WSHttpBinding_ICustomerService" contract="ICustomerService"
28                 name="WSHttpBinding_ICustomerService">
29                 <identity>
30                     <userPrincipalName value="30DA1D0B1D1E4D2/Administrator" />
31                 </identity>
32             </endpoint>
33         </client>
34     </>
35 </configuration>

 

6.       使用WCF客户端

1.    在客户端项目中项目引用节点右键添加引用.

2.    添加第四部中创建的客户端代码文件和配置文件。

3.    客户端调用服务端的服务,只要创建生成客户端类的实例就可调用了,但要确认服务端正在起用状态,如下

 

 1 using System;
 2
 3 namespace ConWCFCustomerClient
 4
 5 {
 6
 7     class Program
 8
 9      {
10
11         static void Main(string[] args)
12
13          { 
14
15             CustomerServiceClient client = new CustomerServiceClient();
16
17             string message=();
18
19             (message);
20
21             ();
22
23         }
24
25     }
26
27 }
28

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LOJ116 有源汇有上下界最大流(上下界网络流)

考虑有源汇上下界可行流&#xff1a;由汇向源连inf边&#xff0c;那么变成无源汇图&#xff0c;按上题做法跑出可行流。此时该inf边的流量即为原图中该可行流的流量。因为可以假装把加上去的那些边的流量放回原图。 此时再从原来的源向原来的汇跑最大流。超源超汇相关的边已经流…

CentOS 7 使用 ACL 设置文件权限

Linux 系统标准的 ugo/rwx 集合并不允许为不同的用户配置不同的权限&#xff0c;所以 ACL 便被引入了进来&#xff0c;为的是为文件和目录定义更加详细的访问权限&#xff0c;而不仅仅是这些特别指定的特定权限。 ACL 可以为每个用户&#xff0c;每个组或不在文件所属组中的用…

机器学习实践五---支持向量机(SVM)

之前已经学到了很多监督学习算法&#xff0c; 今天的监督学习算法是支持向量机&#xff0c;与逻辑回归和神经网络算法相比&#xff0c;它在学习复杂的非线性方程时提供了一种更为清晰&#xff0c;更强大的方式。 Support Vector Machines SVM hypothesis Example Dataset 1…

作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观

作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观 但是它却是我们开发分布式程序的利器 但是目前关于WCF方面的资料相当稀少 希望我的这一系列文章可以帮助大家尽快入门 下面先介绍一下我的开发环境吧 操作系统&#xff1a;windows vista business版本 编译器…

服务器安装mysql_阿里云服务器上安装MySQL

关闭防火墙和selinuxCentOS7以下&#xff1a;service iptables stopsetenforce 0CentOS7.xsystemctl stop firewalldsystemctl disable firewalldsystemctl status firewalldvi /etc/selinux/config把SELINUXenforcing 改成 SELINUXdisabled一、安装依赖库yum -y install make …

在PyTorch中转换数据

In continuation of my previous post ,we will keep on deep diving into basic fundamentals of PyTorch. In this post we will discuss about ways to transform data in PyTorch.延续我以前的 发布后 &#xff0c;我们将继续深入研究PyTorch的基本原理。 在这篇文章中&a…

「网络流24题」试题库问题

传送门&#xff1a;>Here< 题意&#xff1a;有K种类型的共N道试题用来出卷子&#xff0c;要求卷子须有M道试题。已知每道题属于p种类型&#xff0c;每种类型的试题必须有且仅有k[i]道。现问出这套试卷的一种具体方案 思路分析 昨天打了一天的Dinic&#xff0c;今天又打了…

机器学习实践六---K-means聚类算法 和 主成分分析(PCA)

在这次练习中将实现K-means 聚类算法并应用它压缩图片&#xff0c;第二部分&#xff0c;将使用主成分分析算法去找到一个脸部图片的低维描述。 K-means Clustering Implementing K-means K-means算法是一种自动将相似的数据样本聚在一起的方法,K-means背后的直观是一个迭代过…

航海家软件公式全破解

水手突破 上趋势:MA(LOW,20)*1.2,color0080ff,linethick2;次上趋势:MA(LOW,20)*1.1,COLORYELLOW;次下趋势:MA(HIGH,20)*0.9,COLORWHITE;下趋势:MA(HIGH,20)*0.8,COLORGREEN,linethick2;ZD:(C-REF(C,1))/REF(C,1)*100;HDZF:(HHV(H,20)-C)/(HHV(H,20)-LLV(L,20));趋势强度:IF(C&g…

打包 压缩 命令tar zip

2019独角兽企业重金招聘Python工程师标准>>> 打包 压缩 命令tar zip tar语法 #压缩 tar -czvf ***.tar.gz tar -cjvf ***.tar.bz2 #解压缩 tar -xzvf ***.tar.gz tar -xjvf ***.tar.bz2 tar [主选项辅选项] 文件或目录 主选项是必须要有的&#xff0c;它告诉tar要做…

mysql免安装5.7.17_mysql免安装5.7.17数据库配置

首先要有 mysql-5.7.10-winx64环境: mysql-5.7.10-winx64 win10(64位)配置环境变量&#xff1a;1、把mysql-5.7.10-winx64放到D盘&#xff0c;进入D\mysql-5.7.10-winx64\bin目录&#xff0c;复制路径&#xff0c;配置环境变量&#xff0c;在path后面添加D\mysql-5.7.10-winx6…

tidb数据库_异构数据库复制到TiDB

tidb数据库This article is based on a talk given by Tianshuang Qin at TiDB DevCon 2020.本文基于Tianshuang Qin在 TiDB DevCon 2020 上的演讲 。 When we convert from a standalone system to a distributed one, one of the challenges is migrating the database. We’…

机器学习实践七----异常检测和推荐系统

Anomaly detection 异常检测是机器学习中比较常见的应用&#xff0c;它主要用于非监督学习问题&#xff0c;从某些角度看&#xff0c; 它又类似于一些监督学习问题。 什么是异常检测&#xff1f;来看几个例子&#xff1a; 例1. 假设是飞机引擎制造商&#xff0c; 要对引擎进行…

CODE[VS] 1621 混合牛奶 USACO

题目描述 Description牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要.请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶.快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定…

apply和call用法

apply语法 func.apply(name, [array])第一个参数指定函数体内this对象的指向&#xff0e;第二个参数为一个带下标的集合&#xff0c;可以是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数var func function(a, b, c) {console.log([a, b, c]); // [1,2,…

刚认识女孩说不要浪费时间_不要浪费时间寻找学习数据科学的最佳方法

刚认识女孩说不要浪费时间重点 (Top highlight)Data science train is moving, at a constantly accelerating speed, and increasing its length by adding up new coaches. Businesses want to be on the data science train to keep up with the ever-evolving technology a…

测试工具之badboy

badboy这个工具本身用处不是很大&#xff0c;但有个录制脚本的功能&#xff0c;还是jmeter脚本&#xff0c;所以针对这一点很多懒人就可以通过这个录制脚本&#xff0c;而不需要自己去编写 badboy工具最近还是2016年更新的&#xff0c;后面也没在更新了&#xff0c;官方下载地址…

hive 集成sentry

2019独角兽企业重金招聘Python工程师标准>>> 环境 apache-hive-2.3.3-bin apache-sentry-2.1.0-bin 1 2 sentry是目前最新的版本&#xff0c;支持hive的最高版本为2.3.3&#xff0c;hive版本如果高于2.3.3&#xff0c;会出一些版本兼容问题[亲测] hive快速安装 wget…

word模板生成word报表文档

主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll;首先要生成word程序对象Word.Application app new Word.Application();根据模板文件生成新文件框架File.Copy(TemplateFile, FileName);生成documnet对象ord.Document doc new Word.Document(); 打开…

isql 测试mysql连接_[libco] 协程库学习,测试连接 mysql

历史原因&#xff0c;一直使用 libev 作为服务底层&#xff1b;异步框架虽然性能比较高&#xff0c;但新人学习和使用门槛非常高&#xff0c;而且串行的逻辑被打散为状态机&#xff0c;这也会严重影响生产效率。用同步方式实现异步功能&#xff0c;既保证了异步性能优势&#x…