网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

完全不使用配置文件构建和使用WCF服务

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13
ain中可以实例化多个 ServiceHost 实例,但每个应用程序域内只有一个 ServiceHost 实例更便于操作。您可以在一个宿主内使用多个端点公开多个服务接口。

  1.3. 给ServiceHost添加Endpoint

  Endpoint是直接暴露给客户端就行通讯的接口,经典的一个Endpoint可以用ABC来描述,即address – 这个Endpoint对外的访问地址,binding – 这个Endpoint是通过什么样的通讯手段暴露给客户端的,Contract —— 这个Endpoint对外暴露的是哪个Contract.

  通过两个方法给ServiceHost添加Endpoint

  1.3.1. ServiceHost.AddServiceEndpoint

  AddServiceEndpoint方法有8种重载,ServiceHost提供了四种:

  ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, string address);

  ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, Uri address);

  ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, string address, Uri listenUri);

  ServiceEndpoint AddServiceEndpoint(Type implementedContract, Binding binding, Uri address, Uri listenUri);

  ServiceHost的父类ServiceHostBase也提供了四种:

  ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, string address);

  ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, Uri address);

  ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, string address, Uri listenUri);

  ServiceEndpoint AddServiceEndpoint(string implementedContract, Binding binding, Uri address, Uri listenUri);

  其中参数implementedContract为Contract的完全名称,即名称空间。类名。

  myServiceHost.AddServiceEndpoint(typeof(WCFService.IService), new BasicHttpBinding(), "");

  1.3.2. ServiceHost.Description.Endpoints.Add(ServiceEndpoint item)

  ServiceHost.Description 是一个 ServiceDescription 类型的对象。

  ServiceDescription 是一个Service在内存中的一个完整的描述,包括服务的所有Endpoint,和每个Endpoint的各自的address、binding、contract和behaviors.

  使用此方法先要根据Endpoint的ABC构造一个ServiceEndpoint 对象。

  ServiceEndpoint(ContractDescription contract, Binding binding, EndpointAddress address)

  其中ContractDescription这样通过ContractDescription的静态方法GetContract构造:

  ContractDescription.GetContract(Type contractType);

  ServiceEndpoint myServiceEndpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(WCFService.IService)), new BasicHttpBinding(), new EndpointAddress(baseAddress));

  myServiceHost.Description.Endpoints.Add(myServiceEndpoint);

  1.4. 视需要给ServiceHost添加behavior

  ServiceHost. Behaviors是一个 IServiceBehavior类型的对象集合。

  IserviceBehavior 提供了一个在整个服务范围内修改或则插入定制扩展的机制。

  如果需要把服务通过WSDL对外暴露对服务的Metadata描述,就需要加一个ServiceMetadataBehavior类型的Behavior:

  ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();

  behavior.HttpGetEnabled = true;

  behavior.HttpGetUrl = new Uri(":8001/");

  myServiceHost.Description.Behaviors.Add(behavior); // myServiceHo

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号