vs2005还没有下完,等不急拉,先翻译下atlas里面的web服务,原文地址:

http://atlas.asp.net/quickstart/atlas/doc/services/default.aspx
翻译的不是很好,还请提出更好的翻译,谢谢

asp.net Atlas容许你的web程序从浏览器(客户端)调用正规的web 服务,这给web程序带来了丰富的用户体验,因为他不需要象传统方法一样需要通过postback把窗体提交给服务器而仅仅是在浏览器和服务器之间传递你所需要的数据。

ASP.NET 'Atlas' 通过浏览器从Web服务中访问JavaScript代理而提供了一种访问和使用Web服务的基本方法。

一,从aspx页面调用简单的web服务
1,在站点里添加个web服务,给里面你想调用的方法加上[WebMethod]特性,因为这样你才可以从外部访问,下面是个简单的web服务:
<%@ WebService Language="C#" Class="Quickstart.Samples.SimpleService" %>

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace Quickstart.Samples
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class SimpleService : System.Web.Services.WebService
    {
        [WebMethod]
        public string EchoString(string s)
        {
            return s;
        }
    }

}
2,在你的web 页面添加下列的atlas:Script以便在页面里激活asp.net Atlas,当你的页面被请求的时候他们会被下载。

<atlas:Script ID="Script1" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Mozilla" />
<atlas:Script ID="Script2" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Firefox" />
<atlas:Script ID="Script3" runat="server" Path="~/ScriptLibrary/AtlasRuntime.js"/>


3,在web页面添加一个javascript语句用他的src属性指向web 服务,当你的页面被请求的时候.asmx/js 条目将下载javascript代理:

<script language="JavaScript" src="SimpleService.asmx/js">


4,现在你可以从你的页面中调用web 服务中的方法了,他是基于事件驱动的,他有三个参数,第一个是web服务中的方法所需要的参数,第二个参数是数据成功返回所激发的操作(函数),第三个参数是返回数据超时所激发的操作(函数):

Quickstart.Samples.SimpleService.EchoString(
    "SomeText",     //params
    OnComplete,     //Complete event
    OnTimeout       //Timeout event
    );


5,你甚至可以直接传递html input控件的值给web 服务中的方法

Quickstart.Samples.SimpleService.EchoString(
    document.getElementById('inputName').value,       //params
    OnComplete,     //Complete event
    OnTimeout       //Timeout event
    );


6,在成功获得数据的操作函数中,有个result参数,这个就是调用web服务方法而返回的数据,如果响应超时,将激发OnTimeOut操作;

 function OnComplete(result)
    {
        alert(result);
    }

    function OnTimeout(result)
    {
        alert("Timed out");
    }


好了,下面是aspx页面的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Simple Service</title>

    <atlas:Script ID="Script1" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Mozilla" />
    <atlas:Script ID="Script2" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Firefox" />
    <atlas:Script ID="Script3" runat="server" Path="~/ScriptLibrary/AtlasRuntime.js"/>

    <!-- get script proxy -->
    <script type="text/javascript" language="JavaScript" src="SimpleService.asmx/js">
    </script>
</head>
<body>
    <h3>
        Enter your name:<input id="inputName" />
        <button id="buttonGo" onclick="return OnbuttonGo_click()">GO</button>
    </h3>

    <script type="text/javascript" language="JavaScript">
    function OnbuttonGo_click() 
    {
        //Call script proxy passing the input element data
        requestSimpleService = Quickstart.Samples.SimpleService.EchoString(
            document.getElementById('inputName').value,       //params
            OnComplete,     //Complete event
            OnTimeout       //Timeout event
            );
        return false;
    }
    
    function OnComplete(result) 
    {
        alert(result);
    }

    function OnTimeout(result) 
    {
        alert("Timed out");
    }
    </script>

</body>
</html>