在Windows Azure中托管WCF服务的办法[Windows安全]
本文“在Windows Azure中托管WCF服务的办法[Windows安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本文将向大家介绍若何托管内部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 at http://go.microsoft.com/fwlink/?LinkId=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
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端点处理负载均衡,此外,在你的服务上需求包含一个类属性处理地址过滤不匹配问题.
以上是“在Windows Azure中托管WCF服务的办法[Windows安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |