|
实现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; |
|