Host、EndPoints及配置服务(二)
来源:互联网 发布:淘宝购物车源代码 编辑:程序博客网 时间:2024/05/16 23:47
服务的三要素(ABC)
A:Address 意味着在哪里(也含有传输方式信息)
B:Binding 意味着怎么做(与地址的传输方式要匹配)
C:Contract意味着做什么(服务契约)
配置文件:
<system.ServiceModel><services><service><endpoint/> /*服务和终结点*/</service></services><bindings> /*绑定(可选)*/<binding></binding></bindings><behaviors> /*行为(可选) */<behavior></behavior></behaviors></system.ServiceModel>
endpoint元素
每个终结点都需要以下属性表示的地址、绑定和协定:
– address。指定服务的统一资源标识符(URI),它可以是一个绝对
地址,或是一个相对于服务基址给定的地址。如果设置为空字符
串,则指示在创建服务的ServiceHost 时,终结点在指定的基址
上可用。
– binding。通常,指定一个类似WsHttpBinding 的系统提供的绑定,
但也可以指定一个用户定义的绑定。指定的绑定确定传输协议类
型、安全和使用的编码,以及是否支持或启用可靠会话、事务或
流。
– bindingConfiguration。如果必须修改绑定的默认值,则可通过在
bindings 元素中配置相应的binding 元素来执行此操作。此属性
应赋予与用于更改默认值的binding 元素的name 属性相同的值。
– contract。指定定义协定的接口。这是在由service 元素的name
属性指定的公共语言运行库(CLR) 类型中实现的接口。
绑定(Binding)
绑定:
就是预先配置好的信道栈,它代表了客户端和服务器之间线路级别上的约定。每个绑定都会指定通信所用的传输、编码及协议。通过绑定,WCF封装了各种不同通信场所下所使用的配置。
性能比较:
Get256Bytes50000次 平均响应时间(单位:ms) 值小者为佳
端点地址的定义
终结点的地址由EndpointAddress 类表示,该类包含一个表示服务地址的统一资源定位符(URI),大多数传输的地址URI 包含四个部分。
例如,
“http://www.sina.com.cn:3200/mathservice”这个URI 具有以下四个部分:
– 方案:http:
– 计算机:www.sina.com.cn
– (可选)端口:3200
– 路径:/mathservice
端点地址定义
•在配置文件中定义终结点地址
<system.serviceModel><services><servicename="CalculatorService"behaviorConfiguration="CalculatorServiceBehavior"><host><baseAddresses><add baseAddress="http://localhost:8000/service"/></baseAddresses></host><endpoint address="" binding="wsHttpBinding" contract="Samples.ICalculator" /><endpoint address="/test" binding="wsHttpBinding"contract="Samples.ICalculator" /><endpoint address="net.tcp://localhost:9000/service"binding="netTcpBinding"contract="Samples.ICalculator" /></service></services>
下面举例讲解一下WCF服务的调用及简单配置:
首先创建WCF服务应用程序WcfServiceLibrary2
Iservice接口:
using System.Data;using System.Data.SqlClient;namespace WcfServiceLibrary2{ [ServiceContract] public interface IService1 { [OperationContract] DataTable getLinks(); [OperationContract] void addEmps( link e); } [DataContract] public class link { private int id; [DataMember] public int Id { get { return id; } set { id = value; } } private string site_path; [DataMember] public string Site_path { get { return site_path; } set { site_path = value; } } private string user_name; [DataMember] public string User_name { get { return user_name; } set { user_name = value; } } private string user_tel; [DataMember] public string User_tel { get { return user_tel; } set { user_tel = value; } } }}
对应的实现:
using System.Data;using System.Data.SqlClient;namespace WcfServiceLibrary2{ // 注意: 如果更改此处的类名“IService1”,也必须更新 App.config 中对“IService1”的引用。 public class Service1 : IService1 { #region IService1 成员 public System.Data.DataTable getLinks() { using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123;database=GjjWebdb")) { string sql = " select * from dt_link"; SqlDataAdapter sda = new SqlDataAdapter(sql,conn); DataTable dt = new DataTable("员工表"); sda.Fill(dt); return dt; } } public void addEmps(link e) { using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123;database=GjjWebdb")) { string sql = "insert into dt_link value(@id,@User_name,@User_tel,@Site_path)"; SqlCommand cmd = new SqlCommand(sql,conn); cmd.Parameters.AddWithValue("@id",e.Id); cmd.Parameters.AddWithValue("@User_name", e.User_name); cmd.Parameters.AddWithValue("@User_tel", e.User_tel); cmd.Parameters.AddWithValue("@Site_path", e.Site_path); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } #endregion }}然后再创建web窗体应用程序WCFServer1, 先添加引用System.serviceModel,和刚建立的WCF服务WcfServiceLibrary22, Form1窗体中添加两个按钮,分别表示服务的开启以及停止,并创建ServiceHost对象 ServiceHost host = null; //开启 private void button1_Click(object sender, EventArgs e) { host = new ServiceHost(typeof(WcfServiceLibrary2.Service1)); host.Open(); label1.Text = "服务已开启"; } //停止 private void button2_Click(object sender, EventArgs e) { if (host.State != CommunicationState.Closed) { host.Close(); label1.Text = "服务已停止"; } }
3, 添加应用程序配置文件App.config
<configuration> <system.serviceModel> <services> <service name="WcfServiceLibrary2.Service1" behaviorConfiguration="testBehavior"> <host> <baseAddresses> <add baseAddress="http://localhost:3333"/> </baseAddresses> </host> <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary2.IService1"></endpoint> </service> </services> <behaviors> <serviceBehaviors> <behavior name="testBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel></configuration>
到此,服务即可启动以及停止,可以用浏览器打开http://localhost:3333查看;
- Host、EndPoints及配置服务(二)
- Host、EndPoints及配置服务(一)
- openstack获取用户token(及endpoints)
- nginx(二) nginx编译安装 及 配置WEB服务
- EndPoints (端点)
- endpoints
- endpoints
- Mule ESB Endpoints配置摘要
- Mule ESB Endpoints配置摘要
- WCF4.0新特性体验(2):简化配置(默认Endpoints、Binding和 Behavior)
- WEB服务及实现(二)
- 无线网络及配置(二)
- linux服务安装与配置(二):安装xinetd服务
- linux(二十一):apache服务配置(二)
- Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务——(二)
- 关于Flex的MessageBroker Endpoints channels的配置运用
- Flex的MessageBroker Endpoints channels的配置运用
- 关于Flex的MessageBroker Endpoints channels的配置运用
- 苹果加速审核的申请步骤
- jquery操作json数组的实现代码及常用函数
- IOS开发学习建议
- 【读书笔记】iOS网络-使用Bonjour实现自组织网络
- XCode将SingleView改变成空白模板
- Host、EndPoints及配置服务(二)
- javascript高级开发学习笔记十
- 【c++】公司职员系统
- 命名空间的解释
- Install the clients
- 【蓝桥杯】:李白打酒问题(递归重做)
- 分析一次springmvc的执行过程,springmvc如何处理请求
- Redis学习手册(事务)
- MongoDB(三)