千家信息网

怎么解决WCF自宿主问题

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家介绍怎么解决WCF自宿主问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。经过长时间学习WCF,对WCF也有一定程度上的认识了解,这里就发表下我的言论吧。WCF自宿
千家信息网最后更新 2025年02月02日怎么解决WCF自宿主问题

这篇文章给大家介绍怎么解决WCF自宿主问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

经过长时间学习WCF,对WCF也有一定程度上的认识了解,这里就发表下我的言论吧。WCF自宿主是当开发者负责提供和管理宿主进程的生命周期时使用的技术名词。自宿主被应用在位于客户端和服务之间的一个进程(或计算机)边界环境中,以及当使用进程中服务的情况下(也就是说,与客户端处于相同的进程中)。

你需要提供的进程可能是任何Windows进程,例如,一个Windows表单应用程序,一个控制台应用程序或一个Windows NT服务。注意,该进程必须在客户端调用服务之前先运行起来;典型情况下,这意味着,你必须预先启动它。对于NT进程中服务来说这并不是一个问题。类似于IIS宿主,WCF自宿主应用程序配置文件必须列出你想宿主的服务的类型并且暴露给外界。而且,该宿主进程必须在运行时刻显式地注册服务类型并且打开该宿主以便于客户端调用。典型地,这是在Main()方法中使用如下定义的助理类ServiceHost实现的:

public interface ICommunicationObject : IDisposable  {  void Open();  void Close();  //更多成员  }  public abstract class CommunicationObject :  ICommunicationObject  {...}  public class ServiceHostBase : CommunicationObject,...  {...}  public class ServiceHost : ServiceHostBase,...  {  public ServiceHost(Type serviceType,  params Uri[]baseAddresses);  //更多成员  }

提供给ServiceHost的构造函数的信息有:服务类型和(可选)默认的基地址。该基地址集可以是一个空集(以后,你可以配置不同的基地址)。拥有一组基地址能够使服务接受在多个地址和协议上的调用。注意,每个ServiceHost实例都关联与一个特定的服务类型,并且如果宿主进程需要宿主多个类型的服务的话,你需要一些匹配的ServiceHost实例。通过调用宿主中的ServiceHost.Open()方法,你允许调入(call- in);并且通过调用ServiceHost.Close()方法,你可以体面地退出宿主实例并完成到当前客户端的数据发送,并且还要拒绝未来的客户端调用-即使宿主进程仍在运行中。典型地,关闭操作是在WCF自宿主进程关闭时实现的。例如,为了把这个服务宿主在一个Windows表单应用程序中:

[ServiceContract]  interface IMyContract  {...}  class MyService : IMyContract  {...}  你可以编写:  public static void Main()  {  Uri baseAddress = new Uri("http://localhost:8000/");  ServiceHost serviceHost;  serviceHost = new ServiceHost(typeof(MyService),baseAddress);  serviceHost.Open();  //能够拦截调用:  Application.Run(new MyForm());  serviceHost.Close();  }

关于怎么解决WCF自宿主问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

宿主 进程 服务 客户 客户端 类型 应用 基地 基地址 应用程序 更多 程序 问题 典型 实例 方法 运行 内容 多个 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库发展历史分为几个阶段 海南互联网绿盟科技有限公司 计算机三级数据库应用题 手机聚合支付软件开发 微信小程序 本地数据库教程 江苏运营网络技术包括什么 天津信息化软件开发价格检测中心 网络安全应急预案演练记录 不属于精益软件开发的原则 sql数据库查询关键字 太阳神云服务器 vs如何修改数据库中数据 工行软件开发中心是什么工作 网络安全的主要威胁有非授权访问 如何重启domino服务器 阿努比斯战锤 数据库 郑州c语言软件开发公司 布吉街软件开发培训学校 服务器环境配置具体指哪些 嘉定区个性化软件开发概念设计 浙江无级互联网科技有限公司 磁盘扩展柜与服务器阵列卡区别 数据库发展历史分为几个阶段 db2 数据库 强行打开 cisco服务器管理口 中国海洋大学数据库研究生 重庆软件开发app怎样收费 对象数据库技术参考文献 网络安全小说广告 wow养老服务器
0