新微赢技术网

标题: ASP.NET Web服务高级编程-VB.NET编程篇 [打印本页]

作者: 尐妖    时间: 2009-3-16 16:08
标题: ASP.NET Web服务高级编程-VB.NET编程篇
实现Web服务时不需要Web服务器,Web服务完全可以利用现有的Web服务器来实现。例如,如果没有.NET Framework,
则可以使用运行于IIS的XML分析器和ASP脚本来实现Web服务。
----------------------------------------------------------------------------------------------------
0002:
    Application对象的帮助类:
    public static class ApplicationHelper
    {
        public static void SetApplication(string key, object value)
        {
            HttpApplicationState aHttpApplicationState = System.Web.HttpContext.Current.Application;
            aHttpApplicationState.Lock();
            aHttpApplicationState[key] = value;
            aHttpApplicationState.UnLock();
        }
        public static object GetApplication(string key)
        {
            HttpApplicationState aHttpApplicationState = System.Web.HttpContext.Current.Application;
            if (aHttpApplicationState[key] != null)
            {
                return aHttpApplicationState[key];
            }
            else
            {
                return null;
            }
        }
    }
----------------------------------------------------------------------------------------------------
0003:
    如果希望ASP和ASP.NET设置其它类型的程序共享状态信息,可以提供一个状态Web服务。有状态Web服务的Application
保存这些共享信息。其它的应用程序访问这个Web服务来获取或设置这个信息。
----------------------------------------------------------------------------------------------------
0004:
    Web服务可以使用三种协议(一般来说)来传输数据SOAP、HTTP-GET和HTTP-POST。测试页使用的是HTTP-GET,
也就是URL字符串传递参数的方法。这种方法不能传递复杂的数据结构。因此只能测试基本数据类型。
----------------------------------------------------------------------------------------------------
0005:
    Web服务测试页模版所在的位置:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\DefaultWsdlHelpGenerator.aspx
----------------------------------------------------------------------------------------------------
0006:
    更改Web服务测试页样式的方法:
    ●将Web服务测试页复制到Web服务应用程序目录
    ●修改Web服务的配置文件
    <system.web>
      <webServices>
        <wsdlHelpGenerator href="DefaultWsdlHelpGenerator.aspx"/>
      </webServices>
    </system.web>
----------------------------------------------------------------------------------------------------
0007:
    ASP应用程序调用Web服务的方法:可以使用JavaScript等传统技术访问
    <script language=javascript>
        var url = "http://localhost:1410/Service1.asmx?HelloWorld";
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

        xmlHttp.onreadystatechange = handler;
        xmlHttp.open("GET",url,false);
        xmlHttp.send(null);
        function handler()
        {
            if(xmlHttp.readyState == 4)
            {
                alert(xmlHttp.responseText);
            }
        }
    </script>
----------------------------------------------------------------------------------------------------
0008:
    Web服务的类可以直接编译为dll文件被其它应用程序引用,这样就不需要使用代理类来访问了。也是一种比较
不错的测试方法。
----------------------------------------------------------------------------------------------------
0009:
    Web服务也有Global.asax文件,作用与Web应用程序中的相同。
----------------------------------------------------------------------------------------------------
0010:
    Web服务的缓存设置(CacheDuration属性),在测试页中不会起作用,只有使用其它客户端应用程序调用才会
缓存结果。
----------------------------------------------------------------------------------------------------
0011:
    Web服务开启了缓存服务,如果方法的参数调用的时候不同,会返回不同的结果。参数是缓存的KEY值。
----------------------------------------------------------------------------------------------------
0012:
    Web服务的类特性:[WebService(Description="这是一个测试的Web服务",Name="测试服务",Namespace = "http://www.test.com")]
    注意Name参数,这个会影响客户端调用的时候的类名。Namespace则是为了唯一标识Web服务。
----------------------------------------------------------------------------------------------------
0013:
    负载平衡的简单实现:在Web服务代理类的构造函数中实现这个逻辑
    int i = System.Math.IEEERemainder(System.DateTime.Now.Second,3);
    if (i == 0)
    {
        this.Url = @"http://www.xrss.cn/";
    }
    else if (i == 1)
    {
        this.Url = @"http://www.pclalal.com";
    }
    else
    {
        this.Url = @"http://www.FlashBase.cn/";
    }
----------------------------------------------------------------------------------------------------
0014:
    设置Web服务的超时:在Web服务代理类的构造函数中设置
    this.Timeout = 10000;//单位是毫秒。如果不设置,则会一直等待下去
----------------------------------------------------------------------------------------------------
0015:
    如果Web服务需要使用代理服务器:在Web服务代理类的构造函数中实现
    System.Net.WebProxy aWebProxy = new System.Net.WebProxy("http://proxy.wrox.com:80",true);
    this.Proxy = aWebProxy;
----------------------------------------------------------------------------------------------------
0016:
    改变Web服务的编码:在Web服务代理类的构造函数中实现
    this.RequestEncoding = System.Text.Encoding.UTF8;
----------------------------------------------------------------------------------------------------
0017:
    客户端访问浏览器的信息:
    ●Web服务代理类的构造函数中:this.UserAgent = "IE 6.0的浏览器访问";
    ●Web服务服务器端可以访问上面的信息:this.Context.Request.UserAgent;
作者: huangbo88    时间: 2010-2-17 19:05
偶的天啊!这是什么样的贴子呢?




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2