(一)创建WCF Service

(1)创建WCF Service类库

创建一个Class Library的项目:

删除掉默认的Class1.cs文件,然后添加一个WCF Service项目:

Visual Studio会自动帮助你生成两个文件:HelloService.cs 和 IHelloService.cs,另外还自动添加了System.ServiceModel引用,它是WCF的核心。

修改IHelloService.cs和HelloService.cs文件。

IHelloService.cs:

namespace HelloService
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IHelloService" in both code and config file together.
    [ServiceContract]public interface IHelloService{[OperationContract]string GetMessage(string name);}
}

HelloService.cs:

namespace HelloService
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "HelloService" in both code and config file together.public class HelloService : IHelloService{public string GetMessage(string name){return "Hello " + name;}}
}

(2)创建WCF的Host

添加一个新的ASP.NET Empty Web Application:

添加一个新Item WCF Service

删除HelloService.svc.cs和IHelloService.cs文件。

添加HelloService Class Library的项目引用:

修改HelloService.svc为:

<%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>

Web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><system.serviceModel><services><service name="HelloService.HelloService" behaviorConfiguration="metaBehavior"><endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint><host><baseAddresses><add baseAddress="http://localhost:8080"/></baseAddresses></host></service></services><behaviors><serviceBehaviors><behavior name="metaBehavior"><serviceMetadata httpGetEnabled="true"/></behavior></serviceBehaviors></behaviors></system.serviceModel>
</configuration>

其中,service name=”命名空间.类名”,behaviorConfiguration是用来关联下面behavior的定义的。

endpoint address中定义的是相对地址,与baseAddress结合起来为完整地址

endpoint contract=”命名空间.接口名”

两个endpoint,第一个binding是basicHttpBinding,用于HTTP协议;第二个endpoint用于交换metadata,binding为mexHttpBinding。

其中behavior的定义是用来允许交换metadata的。

Build解决方案,如果没有错误就进行到下一步,部署WCF Service到IIS

(二)部署WCF Service到IIS

(1)Publish HelloServiceIISHost项目

(2)部署到IIS

浏览HelloService.svc

(三)创建一个Windows Form来调用WCF Service

添加一个服务引用:

private void button1_Click(object sender, EventArgs e)
{ HelloService.HelloServiceClient client = new HelloService.HelloServiceClient(); label1.Text = client.GetMessage(textBox1.Text);
} 

运行代码,效果如下:

(四)总结

svc文件中,包含着服务指令,Service属性指明文件指向的是哪个服务

<%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>

service的代码可以在

(1) XXX.svc.cs的文件中

(2) 一个独立的Assembly(如同本文)

(3) App_Code文件夹下

本文转自JF Zhu博客园博客,原文链接:  http://www.cnblogs.com/jfzhu/p/4025448.html  ,如需转载请自行联系原作者

Step by Step 创建一个WCF Service相关推荐

  1. C#创建一个Windows Service

    Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...

  2. 创建一个Windows Service应用程序

    创建一个Windows Service应用程序 下载本文代码 见资源 正是由于.NET Framework的出现,才使你能够构建出在系统重新启动时自动运行的.无人参与的(unattended)应用程序 ...

  3. Step by Step 创建一个 Web Service

    原创地址:http://www.cnblogs.com/jfzhu/p/4022139.html 转载请注明出处 (一)创建Web Service 创建第一个项目,类型选择ASP.NET Empty ...

  4. 如何在Kubernetes里创建一个Nginx service

    Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的 ...

  5. 如何在Kubernetes里创建一个Nginx service 1

    Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的 ...

  6. 如何创建一个Hidl Service?

    1. 工具  创建工具脚本:hello_word1_0-hidl-gen.sh #!/bin/bash PACKAGE=android.hardware.hello_word@1.0 LOC=hard ...

  7. 创建第一个WCF程序

    WCF的三大核心是ABC A代表Address-where(对象在哪里) B代表Binding-how(通过什么协议取得对象) C代表Contact(契约)-what(定义的对象是什么,如何操纵) 创 ...

  8. 如何使用svconfigeditor.exe编辑WCF Service配置文件-配置一个基本的Endpoint(一)

    1.svcconfigeditor简介 WCF Service的难点之一就是其千变万化的配置.如果直接手工书写,很容易出错而且效率低下.Microsoft .Net SDK中专门有一个可视化编辑工具名 ...

  9. WCF Service 的创建,测试,发布与使用示例

    WCF Service 的创建,测试,发布与使用示例 一, WCF Service 的创建: WCF Service Application 注: 为了在 IIS 或 WAS 中托管,则必须使用 WC ...

最新文章

  1. FPGA之道(75)静态时序分析(一)基本概念介绍
  2. Cooike的一些用法
  3. 2014年3月29日缅甸将举行人口普查
  4. spring cloud云服务架构 - particle云架构代码结构讲解
  5. arm集群服务器_百度云智峰会发布ARM私有云新品,加速企业在移动端上的数字化转型...
  6. 关于 SAP Spartacus feature library 里的 _index.scss 文件,和神奇的下划线省略行为
  7. 跳板机连接数据库_跳板数据科学职业生涯回顾
  8. 小学生都学Python了,你还不知道怎么开始
  9. Java默认值规则——各种数据类型的初试值是什么?
  10. java n*n矩阵求值及求逆矩阵
  11. Android开发笔记(一百五十五)利用GL10描绘点、线、面
  12. 你不可不会的几种移动零的方法
  13. tomcat 后台 getshell
  14. 不知道这十项Linux常识,就别说自己玩过Linux!
  15. MAC环境配置SDK
  16. 【Spark】Spark的机器学习算法库——Spark MLilb
  17. 设计模式之简单工厂模式、工厂模式和抽象工厂模式
  18. wallpaper 壁纸提取
  19. Flutter与RN
  20. TikTok跨境电商:TikTok代开英国小店、印尼小店,美国小黄车,广告账户

热门文章

  1. shell编写监控httpd服务80端口脚本.间隔3秒监控端口如果服务关闭自动重启
  2. ELK下elasticsearch 性能调优
  3. Ubuntu 16.04扩展swap分区(内存)
  4. Linux中如何删除一个大文件
  5. Excel VBA实现 通过文件名查找全路径
  6. linux命令地址,[命令] Linux IP 命令 IP(管理地址)
  7. 使用Json出现java.lang.NoClassDefFoundError解决方法
  8. ServerVersion 引发了“System.InvalidOperationException”类型的异常
  9. spring boot2 坑 - 解决cros跨域问题
  10. 80端口未被占用,无法启动wamp的解决方法(原创)