WCF系列教程之WCF服务配置工具
本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html
Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft Service Configuration Editor),极大的方便开发者进行服务配置,接下来将演示如何对一个WCF服务程序进行配置:
所有与WCF服务有关的文件类,全都引入System.ServiceModel命名空间。
1、新建一个IService类库,在里面编写服务的契约接口IService
IService.cs如下:
using System;using System.ServiceModel;namespace IService
{
[ServiceContract]
public interface IService
{
[OperationContract]
int Add(int a, int b);
}
}
2、新建一个Service类库,实现IService中的服务契约接口
Service.cs代码如下:
using System;
namespace Service
{
public class Service:IService.IService
{
public int Add(int a, int b)
{
return a + b;
}
}
}
3、搭建WCF服务宿主程序,这里使用控制台
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
namespace Host
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(Service.Service)))
{
host.Open();
Console.WriteLine("服务已启动,按任意键中止...");
Console.ReadKey(true);
host.Close();
}
}
}
}
ok,生成整个解决方案,一定要生成,要不然下面的操作无法进行。服务契约和服务类和宿主全部搭建成功,下面开始配置WCF服务
4.通过WCF服务配置编辑器(Microsoft Service Configuration Editor)来配置服务程序,选择visual studio 菜单中的工具选项下的WCF服务配置编辑器,点击即可打开。
(1)、文件->新建配置
(2)、新建服务、选择服务类型,也就是具体要对外发布的服务内容
该服务类型在Service层的bin目录下
(3)、选择对应的服务契约,选择完服务类型后,系统会自动匹配
(4)、选择服务的通信模式
根据程序的通讯模式选择不同的通讯类型,这里采用HTTP
(5)、服务端与客户端的通信模式
i、基本的Web服务互操作性:设置当前程序的通信模式为请求与答复模式,具体请参考WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)
ii、高级Web服务互操作性:分为单工通信和双工通信
这里选择请求与答复模式
(6)、设置服务终结点的地址
当前程序的设置为基地址,所以终结点的地址设置为空。
(7)、向导配置完毕
点击完成,就完成了一个服务配置文件的创建,接下来就开始配置各个节点和属性元素。
(8)、添加基地址
配置服务的基地址,点击左边服务菜单项的主机选项,然后点击右下角的新建按钮添加基地址。
点击新建
此处选用本地Ip地址,端口号为666,ok主机基地址设置完毕,对应host节点中的baseadress节点中的配置
(8)、修改终结点中的binding属性
修改默认终结点的绑定类型为wsHttpBinding,把标识中的DNS设置为Localhost.
(9)、添加元数据终结点配置
添加元数据终结点配置,选择左侧终结点菜单选项,右键选择新建服务终结点。设置Address为mex,Binding 设置为mexHttpBinding,Contract设置为IMetadataExchange
(10)、添加绑定配置
添加绑定配置,选择左侧的绑定菜单项,新建绑定配置
点击确定
(11)、配置终结点行为
配置终结点行为,选择左侧的高级选项的终结点行为配置新建终结点行为配置,将名称设置为endpointBehavior,点击添加按钮添加终结点行为
终结点行为的属性有很多,这里只选择数据序列化大小的选项
默认最大长度为2147483647,这里设置成214748366
(12)、添加服务行为配置
添加服务行为配置,选择左侧服务行为菜单项新建服务行为配置。设置名称为serviceBehavior,点击添加按添加服务行为。
(13)、为当前服务类型绑定服务行为
为服务选择BehaviorConfiguration的选项为serviceBehavior。点击左侧的Service.Service选择,将右侧的BehaviorConfiguration选择设置为serviceBehavior
(14)、为当前服务终结点
为终结点选择绑定配置和行为配置,点击左侧的第一个终结点,将右侧的BehaviorConfiguration设置为endpointBehavior、BindingConfiguration设置为mybinding.
(15)、配置完成,保存至桌面,并将配置内容复制到宿主的App.config文件中。文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="endpointBehavior">
<dataContractSerializer maxItemsInObjectGraph="214748366" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="mybinding" />
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehavior" name="Service.Service">
<endpoint address="" behaviorConfiguration="endpointBehavior"
binding="wsHttpBinding" bindingConfiguration="mybinding" contract="IService.IService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://127.0.0.1:666/WcfConfig/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
(16)、利用WCF客户端测试服务是否能正常运行。
ok,说明配置成功,服务运行正常!
- 关于delete,drop,truncate的问题 (r6笔记第14天)
- R语言进行分析,比较详细的一篇,亲测过哦
- DeepMind 开源基于 MuJoCo 物理引擎强化学习工具 Control Suite
- hadoop常用的基本命令,HIVE复制文件,修改文件名
- gc服务器慢的原因分析 (r6笔记第14天)
- AI 玩微信跳一跳的正确姿势——跳一跳 Auto-Jump 算法详解
- 干货 | 深入理解Python装饰器
- 11g dataguard使用总结(r5笔记第12天)
- centos7.4下配置django+uwsgi+nginx
- 11g rac配置scan ip(r6笔记第30天)
- 【C++概念】---vector用法
- 浅谈Orabbix监控指标(r6笔记第27天)
- Orabbix定制监控Oracle的简单配置(r6笔记第26天)
- 【java基础】 线程实例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 5个基本Linux命令行工具的现代化替代品
- Chrome 84 正式发布,支持私有方法、用户空闲检测!
- 类及数据库的应用,G-MARK网站数据Python爬虫系统的构建
- 获取素材图无忧,Pixabay图库网Python多线程采集下载
- Python关键词数据采集案例,5118查询网站关键词数据采集
- Python结巴分词,字符串余弦相似度算法实现关键词筛选及整理
- git的分支远程连接和远程分支的拉取推送及冲突处理
- requests session的应用,python金点设计奖数据爬虫
- 站长工具关键词挖掘采集,Python关键词批量挖掘采集工具
- python百度关键词相关搜索词采集,链轮查询采集exe工具
- Python最火爬虫框架Scrapy入门与实践,豆瓣电影 Top 250 数据采集
- Python爬虫三种解析方式,Pyhton360搜索排名查询
- Python关键词百度指数采集,抓包Cookie及json数据处理
- 常用的package.json,还有这么多你不知道的骚技巧
- 【词库】Python关键词筛选分类,Levenshtein编辑距离算法分词