锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / ASP.NET开源 / ASP.NET Web服务优化
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止任何转载或其它形式的非法合作,侵权必究

ASP.NET Web服务优化


介绍

ASP.NET Web服务优化不能只考虑服务器端,还要考虑客户端和通信部分等等。

客户端异步调用Web方法

异步invoke意味着会新开线程调用方法,这样让主线程更有能力处理其它事务。异步子线程结束时会通知主线程,如果有要求,也会返回数据。如果是复杂且比较慢的方法,用异步效果更好。

当VS.NET生成Web服务的代理类时,它会自动生成Begin<webmethodname>和End<webmethodname>,下面举例说明。

假设有MyWebService服务和方法 int Sum(int a, int b),此方法返回a+b,代理会包含如下部分:

public System.IAsyncResult BeginSum(int a, int b, 
       System.AsyncCallback callback, object asyncState)
{
    return this.BeginInvoke("Sum", new object[] {a, b}, 
                                 callback, asyncState);
}

public int EndSum(System.IAsyncResult asyncResult)
{
    object[] results = this.EndInvoke(asyncResult);
    return ((int)(results[0]));
}

下面是异步调用示例:

//webservice instance
private MyWebService webService = new MyWebService();

private int result = 0;

public void InvokeSum(int a, int b)
{
    //delegating
    AsyncCallback asyncCallback = 
            new AsyncCallback(FinishSum);

    //start executing a web method 
    //Sum in a separate thread
    webService.BeginSum(a, b, asyncCallback, null);
}

//this callback method is invoked 
//when a web method has finished working
public void FinishSum(IAsyncResult iAsyncResult)
{
    //get the result
    this.result = webService.EndSum(iAsyncResult);
}

 

在运行初期加载各代码集前创建实例

大家都知道,服务器端第一次执行比后续执行慢,这通过观察输出窗口就可以知晓,以Debug模式打开项目,运行后看输出窗口,一旦一个方法激活,程序会加载几个库,比如:System.Web.dllSystem.Web.Services.dll和System.XML.dll等等,也许还有你自己代码写的库。这个加载过程会占用时间,所以在程序启动时提前创建Web服务实例,这会加载库就自然节省时间了。

使用提前认证

非匿名情况下可以使用本节的技巧,SoapHttpClientProtocol 是Web服务代理的基类,这个类有PreAuthenticate 属性,MSDN里是这样描述这个属性:

PreAuthenticate 为真时,当认证机制支持时,首次请求发包会发送WWW-authenticate header。当它为假时,请求初始状态不会验证用户,如果是匿名,则方法执行,否则是401错误,客户端WebClientProtocol 随即回复认证证书给服务器,如果认证通过,方法可执行,否则不执行。

不过要记住,不是所有认证方法都支持PreAuthenticate,如果IIS服务器使用Windows Integrated Authentication,提前认证不可能用上。为了加速Web服务方法调用,使用“基本”验证方案,不过记住,“基本”方案有代价,只用于SSL保护模式。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内