纺织品论坛

 找回密码
 注册
网上纺织品 | 足不出户,做纺织品生意-中国纺织品网-www.tex.org.cn
查看: 147|回复: 0
打印 上一主题 下一主题

在Windows Azure中托管WCF服务的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2015-5-7 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上纺织品论坛,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有帐号?注册

x

  本文将向大家介绍如何托管内部WCF服务和公共WCF服务,为了托管内部WCF服务,需要建立一个内部端点,并使用内部角色通信,与在输入端点上托管一个外部服务最主要的区别是内部端点不具有负载均衡特性,而输入端点是挂钩在负载均衡器上的,具有负载均衡功能。
  托管内部WCF服务
  其实要托管一个内部WCF服务很简单,唯一需要注意的是传递给 ServiceHost 的基地址不同,因为端口号和IP地址要等到运行时才知道,因此需要创建一个主机,动态地传递这些信息给它。
  public override bool OnStart()
  {
  // 设置最大并发连接数
  ServicePointManager.DefaultConnectionLimit = 12;
  DiagnosticMonitor.Start(“DiagnosticsConnectionString”);
  // For information on handling configuration changes
  // see the MSDN topic =166357.
  RoleEnvironment.Changing += RoleEnvironmentChanging;
  StartWCFService();
  return base.OnStart();
  }
  private void StartWCFService()
  {
  var baseAddress = String.Format(
  “net.tcp://{0}”,
  RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“EchoService”].IPEndpoint
  );
  var host = new ServiceHost(typeof(EchoService), new Uri(baseAddress));
  host.AddServiceEndpoint(typeof(IEchoService), new NetTcpBinding(SecurityMode.None), “echo”);
  host.Open();
  使用内部WCF服务
  我想从我另一个托管的服务调用这个服务,下面就是调用这个服务的所有代码:
  protected void Button1_Click(object sender, EventArgs e)
  {
  var factory = new ChannelFactory(new NetTcpBinding(SecurityMode.None));
  var channel = factory.CreateChannel(GetRandomEndpoint());
  Label1.Text = channel.Echo(TextBox1.Text);
  }
  private EndpointAddress GetRandomEndpoint()
  {
  var endpoints = RoleEnvironment.Roles[“WorkerHost”].Instances
  .Select(i =》 i.InstanceEndpoints[“EchoService”])
  .ToArray();
  var r = new Random(DateTime.Now.Millisecond);
  return new EndpointAddress(
  String.Format(
  “net.tcp://{0}/echo”,
  endpoints[r.Next(endpoints.Count() - 1)].IPEndpoint)
  );
  }
  这里唯一要注意的是查询F abric ,确定 WorkerHost 角色中实现了 EchoService 端点,并随机给它们路由请求的所有端点,本来不需要路由请求,我这样做是因为内部端点没有负载均衡功能,我希望在每个 WorkerHost 实例上均匀地分配负载。
  我发现一个技巧,就是不需要缓存你找到的 IPEndpoint ,因为它已经缓存在API调用中,但根据最佳实践,你应该缓存你的 ChannelFactory 。
  托管公共WCF服务
  托管公共WCF服务也很简单,唯一需要注意的是要使用一个新的行为,为MEX端点处理负载均衡,此外,在你的服务上需要包括一个类属性处理地址过滤不匹配问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|纺织品论坛-中国纺织品网 ( 浙ICP备11054028号

GMT+8, 2024-11-16 16:31 , Processed in 0.074078 second(s), 20 queries .

BBS.TEX.ORG.CN 纺织品网,纺织品论坛是中国最大的纺织论坛社区

关于我们 | 联系方式 | 网站地图 | 友情链接 | 网站留言 | 广告服务

  • 邮箱:web@tex.org.cn 业务合作: 点击这里给我发消息 QQ:8029228 纺织QQ群:35733500
    客服热线:纺织品网客服电话 | 地址:浙江省绍兴市柯桥区鉴湖路(中国轻纺城)
    Copyright© 2007-2020 WWW.TEX.ORG.CN. All Rights Reserved. 版权所有 中国纺织品网 Discuz!