WCF 项目应用连载[8] - 绑定、服务、行为 大数据传输与限流 - 下 (ServiceThrottlingAttribute)
2013-07-14 22:50
399 查看
因为ORM的原因,对Attribute编程有一种情节。。所以这节的出现,完全是因为在WCF对自定义Attribute的一种应用。
WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上
前面一节已经讲得差不多够了。
对WCF的限流,这节,提供一个类。ServiceThrottlingAttribute
让你以硬编码方式使用WCF服务限流
WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上
前面一节已经讲得差不多够了。
对WCF的限流,这节,提供一个类。ServiceThrottlingAttribute
让你以硬编码方式使用WCF服务限流
[ServiceThrottling(50,200,100)] [ServiceContract(CallbackContract = typeof(ILigAgentCallback))] public interface ILigAgent
public class ServiceThrottlingAttribute : Attribute,IServiceBehavior { #region Constructors public ServiceThrottlingAttribute() : this(defaultCalls, defaultInstances, defaultSession) { } public ServiceThrottlingAttribute(int maxCalls, int maxInstances, int maxSessions) { this.Initialize(maxCalls, maxInstances, maxSessions); } #endregion #region Interfaces /// <summary> /// /// </summary> /// <param name="serviceDescriptiong"></param> /// <param name="serviceHostBase"></param> /// <param name="endpoints"></param> /// <param name="bindingParameters"></param> void IServiceBehavior.AddBindingParameters(ServiceDescription serviceDescriptiong, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters) { } /// <summary> /// /// </summary> /// <param name="serviceDescription"></param> /// <param name="serviceHostBase"></param> void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { ServiceThrottlingBehavior tbehavior = serviceDescription.Behaviors.Find<ServiceThrottlingBehavior>(); if (tbehavior == null) { serviceDescription.Behaviors.Add(this.throttlingBehavior); } } /// <summary> /// /// </summary> /// <param name="serviceDescription"></param> /// <param name="serviceHostBase"></param> void IServiceBehavior.Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { } #endregion #region Private Helpers private void Initialize(int maxCalls, int maxInstances, int maxSessions) { this.throttlingBehavior = new ServiceThrottlingBehavior(); this.throttlingBehavior.MaxConcurrentCalls = maxCalls; this.throttlingBehavior.MaxConcurrentInstances = maxInstances; this.throttlingBehavior.MaxConcurrentSessions = maxSessions; } #endregion #region Fields private const int defaultThrottling = 50; private const int defaultCalls = 50; private const int defaultInstances = 200; private const int defaultSession = 100; private ServiceThrottlingBehavior throttlingBehavior = null; #endregion }
相关文章推荐
- WCF 项目应用连载[8] - 绑定、服务、行为 大数据传输与限流 - 下 (ServiceThrottlingAttribute)
- WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上
- WCF 项目应用连载[4] - 自定义配置 扩展ServiceHost - LServiceHost
- WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本
- WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序
- WCF 项目应用连载[3] - 双向通信 实例管理与服务端监控
- WCF 项目应用连载[11] - 结束
- 不要在WCF service中使用TypedDataset或DataTable作为数据传输载体
- WCF绑定和行为在普通应用和SilverLight应用一些对比
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
- WCF 项目应用连载[2] - 创建Lig日志系统
- WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。
- 解析ABP框架中的数据传输对象与应用服务
- 使用Fiddler解析WCF RIA Service传输的数据
- (2) 第二章 WCF服务与数据契约 服务契约详解(三)- [ServiceContract]特性
- WCF 项目应用连载[3] - 双向通信 实例管理与服务端监控
- adnroid四大组件之Service(5) 绑定服务,数据通信-IBinder
- 使用Fiddler解析WCF RIA Service传输的数据
- Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件
- WCF 项目应用连载[9] - 契约中的委托 & 事件参数处理