Atlas学习手记(1):Hello,Atlas

关于Atlas的介绍已经有很多的文章,我就不废话了,对于我自己来说学习一个新东西,总是习惯于以一个简单的示例开始,Atlas也不例外,本文将会以一个非常简单的示例来踏上Atlas之旅,文中示例程序来自于Atlas老家

1.创建“Atlas”应用程序

安装完Atlas之后,会在Visual Studio的项目模版里面出现一项“AtlasWeb Site,如下图。在新建Atlas应用程序时,选择它,这样在新建的项目中的Bin文件夹下会存在一个Microsoft.Web.Atlas.dll的文件。


2
.创建简单的Web Service

现在需要创建一个简单的Web Service来供“Atlas”客户端脚本调用,WebService.asmx部分实现代码如下:

[WebMethod]

public string HelloWorld(String query)

{

    
string inputString = Server.HtmlEncode(query);

    
if (!String.IsNullOrEmpty(inputString))

    
{

        
return String.Format("Hello, you queried for {0}. The "

          
+ "current time is {1}", inputString, DateTime.Now);

    }


    
else

    
{

        
return "The query string was null or empty";

    }


}

3.添加ASP.NET页面

创建一个ASP.NET页面并添加客户端脚本来调用刚才我们创建的Web Service。打开Default.aspx页面后,看到有这样一段代码:

<atlas:ScriptManager runat="server" ID="scriptManager">

</atlas:ScriptManager>
ScriptManager
Atlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,关于ScriptManager后面还会仔细分析。在ScriptManager中间引入Web Service的路径:
<atlas:ScriptManager runat="server" ID="scriptManager">

    
<Services>

        
<atlas:ServiceReference Path="WebService.asmx" />

    
</Services>

</atlas:ScriptManager>
接着编写客户端脚本,调用Web Service
<script type="text/javascript" language="JavaScript">

     
function DoSearch()

     
{

       
var SrchElem = document.getElementById("SearchKey");

       WebService.HelloWorld(SrchElem.value, OnRequestComplete);

     }


     

     
function OnRequestComplete(result)

     
{

       
var RsltElem = document.getElementById("Results");

       RsltElem.innerHTML 
= result;

     }


</script>

其中DoSearch()方法负责调用Web Service的远程方法,OnRequestComplete()在异步调用完成时执行,在本示例中负责把结果显示在<Span>上。完整地Default.aspx页面代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    
<title>Atlas Script Walkthrough</title>

    
<atlas:ScriptManager runat="server" ID="scriptManager">

        
<Services>

            
<atlas:ServiceReference Path="WebService.asmx" />

        
</Services>

    
</atlas:ScriptManager>

    
<style type="text/css">

     body 
{ font: 11pt Trebuchet MS;

        font-color
: #000000;

        padding-top
: 72px;

          text-align
: center}


     .text 
{ font: 8pt Trebuchet MS }

   
</style>

</head>

<body>

    
<form id="Form1" runat="server">

        
<div>

            Search for

            
<input id="SearchKey" type="text" />

            
<input id="SearchButton" type="button" value="Search" onclick="DoSearch()" />

        
</div>

    
<script type="text/javascript" language="JavaScript">

         
function DoSearch()

         
{

           
var SrchElem = document.getElementById("SearchKey");

           WebService.HelloWorld(SrchElem.value, OnRequestComplete);

         }


         

         
function OnRequestComplete(result)

         
{

           
var RsltElem = document.getElementById("Results");

           RsltElem.innerHTML 
= result;

         }


    
</script>

    
</form>

    
<hr style="width: 300px" />

    
<div>

        
<span id="Results"></span>

    
</div>

</body>

</html>

运行后如下:


至此,一个简单Atlas应用程序就完成了。后续文章中,我会把自己学习Atlas过程中的一些东西记录下来与大家分享。

文中完整示例下载

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-07-25 18:09 TerryLee 阅读(12351) 评论(90)  编辑 收藏 网摘 所属分类: [08]  Web开发[01]  .NET大本营

  回复  引用  查看    
#1楼 [楼主]2006-07-25 18:26 | TerryLee      
发完了才看见这是我的第200篇Post,算是开了一个好头吧:-)
  回复  引用    
#2楼 2006-07-25 22:06 | 正树 [未注册用户]
不错的,支持下,慢慢来哦
  回复  引用  查看    
#3楼 [楼主]2006-07-26 08:28 | TerryLee      
@正树
谢谢支持:)

刚开始学习Atlas,以后还得跟大家多多交流才是
  回复  引用  查看    
#4楼 2006-07-27 09:07 | kid_li      
第一次看Atlas的文章,回去试试
  回复  引用  查看    
#5楼 2006-07-27 09:07 | challenge      
支持TerryLee,学习 Atlas!
  回复  引用  查看    
#6楼 [楼主]2006-07-27 11:02 | TerryLee      
@kid_li
@challenge

谢谢:-)
  回复  引用  查看    
#7楼 2006-07-28 13:01 | 我不是一只鹿      

  回复  引用  查看    
#8楼 [楼主]2006-07-28 14:17 | TerryLee      
@我不是一只鹿
欢迎常来哦:)
  回复  引用  查看    
#9楼 [楼主]2006-07-28 14:17 | TerryLee      
@我不是一只鹿
欢迎常来哦:)
  回复  引用    
#10楼 2006-08-09 21:45 | 锦瑟 [未注册用户]
如果webservice返回一个arraylist或一个类,js里怎么处理?
如果限制返回必须是string,那完全可以用net 2.0自带的callback机制代替.
  回复  引用  查看    
#11楼 [楼主]2006-08-10 07:59 | TerryLee      
  回复  引用    
#12楼 2006-08-10 17:56 | jeanso [未注册用户]
配置文件怎么配置呢?那些需要,那些可以删除。下载你的例子里的看不懂。
  回复  引用  查看    
#13楼 [楼主]2006-08-10 18:04 | TerryLee      
@jeanso
你说的是什么配置文件?Web.config?
  回复  引用    
#14楼 2006-08-11 14:29 | jeanso [未注册用户]
哦,具体讲讲使用atlas,web.config该怎么配置。
  回复  引用  查看    
#15楼 [楼主]2006-08-14 08:31 | TerryLee      
@jeanso
新建“Atlas”Web Site不需要做任何配置!
  回复  引用  查看    
#16楼 2006-08-18 13:57 | spiderNet      
学习Atlas后,是不是.Net的好多东西就可以不用了呀
  回复  引用    
#17楼 2006-08-18 14:55 | Rich chen [未注册用户]
安装Atlas有什么要求?我用的.net是Visual Studio 2003,安装出错?
原因:
安装已停止,原因是 ProjectType 值的目录不存在。对于您所安装的 Visual Studio,该项目类型无效。
  回复  引用    
#18楼 2006-08-22 11:35 | Craig [未注册用户]
@Rich chen
要使用VS.NET2005
  回复  引用    
#19楼 2006-08-23 14:06 | chne [未注册用户]
跟Atlas第一次亲爱接触,以后得向你多多请教!
  回复  引用  查看    
#20楼 [楼主]2006-08-23 14:22 | TerryLee      
@Rich chen
需要安装VS2005
  回复  引用  查看    
#21楼 [楼主]2006-08-23 14:24 | TerryLee      
@spiderNet
Atlas的出现,基本颠覆了传统的ASP.NET开发模式
  回复  引用  查看    
#22楼 [楼主]2006-08-23 14:25 | TerryLee      
@chne
共同交流吧
  回复  引用    
#23楼 2006-08-26 13:23 | zjysky [未注册用户]
不管用啊,有问题吧
  回复  引用    
#24楼 2006-08-26 14:46 | wj5104 [未注册用户]
今天開始學習,這是看的第一篇文章。
  回复  引用    
#25楼 2006-08-26 20:56 | 姓名 [未注册用户]
现在需要创建一个简单的Web Service来供“Atlas”客户端脚本调用,WebService.asmx部分实现代码如下

请问如何创建"Web Service",



创建一个ASP.NET页面并添加客户端脚本来调用刚才我们创建的Web Service。

随意创建一个asp.net页面就可以吗?
  回复  引用    
#26楼 2006-08-27 06:00 | webabc [未注册用户]
调用您这个脚本,运行比较慢,不知道是什么原因,能否解决!
我打开自动生成的那个js脚本,居然有一万多行,这样大大制约了性能.
  回复  引用  查看    
#27楼 2006-08-27 23:13 | 凌风      
TerryLee,你发的文章(随笔)真不少,我是从看设计模式时就关注你的blog了。写的很细致,也非常准确,还挺谦虚。非常佩服,支持。期待你更多的文章和感悟
  回复  引用  查看    
#28楼 2006-08-27 23:15 | 凌风      
我虽然关注.NET 2.0很久了,但还从来没有安装过,不知VS2005能不能与VS2003共存哦。
  回复  引用  查看    
#29楼 [楼主]2006-08-28 08:37 | TerryLee      
@zjysky
什么不管用?

下载后的例子需要自行添加相关的DLL
  回复  引用  查看    
#30楼 [楼主]2006-08-28 08:38 | TerryLee      
@wj5104
坚持哦,呵呵
  回复  引用  查看    
#31楼 [楼主]2006-08-28 08:39 | TerryLee      
@姓名
1.如何创建Web Service?
添加新项,选择Web Service

2.是的
  回复  引用  查看    
#32楼 [楼主]2006-08-28 08:40 | TerryLee      
@webabc
我的脚本?

Atlas的脚本确实有些大
  回复  引用  查看    
#33楼 [楼主]2006-08-28 08:40 | TerryLee      
@凌风
谢谢支持,呵呵

VS2005和VS2003完全可以共存
  回复  引用  查看    
#34楼 2006-08-28 10:38 | <>neilzhang      
问几个问题,是我初学者疑惑的地方:
WebService.HelloWorld(SrchElem.value, OnRequestComplete);
javascript中这样调用WebService是什么意思?我另建一个WebService项目,如何调用?
为什么Helloworld的参数是一个string,你这里调用时却用了2个参数,后面又用了一个OnRequestComplete方法,作为参数,还不带参数值?
不怕您笑话,我觉得的好奇怪。

  回复  引用  查看    
#35楼 [楼主]2006-08-28 11:48 | TerryLee      
@&lt;&gt;neilzhang
参数不止这么多,OnRequestComplete是当该Web方法顺利完成并返回时被触发的回调函数名,还有其他的,建议你参考:
http://dflying.cnblogs.com/archive/2006/05/17/Atlas_and_Web_Service__Error_Timeout_and_User_Abort_Handling.html
  回复  引用  查看    
#36楼 2006-08-28 23:54 | 凌风      
今天才在CSDN上看见你是asp.net专家。呵呵,恭喜恭喜。
  回复  引用    
#37楼 2006-08-29 04:46 | webabc [未注册用户]
不是你的脚本,是用Atlas后自动生成的一个脚本,你看html原代码可以看到一个文件!打开后有1万多行
  回复  引用    
#38楼 2006-08-29 04:50 | webabc [未注册用户]
<script src="/BasicApp/WebResource.axd?d

就是里面的这个,就算自己用js写这样的功能也要不了多少代码.而用Atlas,速度下降了至少20倍.这样用来似乎已经没什么意义了!
不知道有没办法能解决
  回复  引用  查看    
#39楼 [楼主]2006-08-29 09:07 | TerryLee      
@凌风
谢谢,呵呵:-)
  回复  引用  查看    
#40楼 [楼主]2006-08-29 09:08 | TerryLee      
@webabc
速度下降了至少20倍?没那么夸张吧
Atlas JS脚本是大了点
  回复  引用    
#41楼 2006-08-29 19:10 | webabc [未注册用户]
Atlas 的脚本是否可以设置,当我需要哪部分功能就加载哪部分代码.
  回复  引用  查看    
#42楼 [楼主]2006-08-30 10:16 | TerryLee      
@webabc
标准的js库不能设置
  回复  引用    
#43楼 2006-08-30 19:04 | yangchaoaccp [未注册用户]
好东西..我正在研究它!!!!
  回复  引用  查看    
#44楼 [楼主]2006-08-31 08:54 | TerryLee      
@yangchaoaccp
多多交流吧,我也学习的时间不长
  回复  引用  查看    
#45楼 2006-09-02 14:34 | 狂风      
好东西,学习...
  回复  引用    
#46楼 2006-09-06 09:44 | hezhuan [未注册用户]
写得非常细腻和生动,非常感谢你的付出!一起学习一起进步!
  回复  引用    
#47楼 2006-09-06 15:18 | yangchao [未注册用户]
在普通的ASP.NET里面能用atlas吗?
  回复  引用  查看    
#48楼 [楼主]2006-09-06 17:02 | TerryLee      
@狂风
@hezhuan
谢谢支持,一起进步!
  回复  引用  查看    
#49楼 [楼主]2006-09-06 17:03 | TerryLee      
@yangchao
必须在.NET2.0下才可以使用!
  回复  引用    
#50楼 2006-09-08 12:07 | Winfreddie [未注册用户]
@探索
@实践
@发现
  回复  引用    
#51楼 2006-09-08 14:14 | 喵喵 [未注册用户]
那个webservice文件只能和aspx在一个文件夹下吗?
我在解决方案下新建了一个叫WebService的工程,把新创建的webservice.asmx文件放在里边,scriptManager的路径也指向它了,可是就给我报错,说“webservice未定义”
  回复  引用  查看    
#52楼 [楼主]2006-09-08 16:46 | TerryLee      
@喵喵
可以新建一个项目,然后通过命名空间去访问
  回复  引用    
#53楼 2006-09-08 17:21 | yangchao [未注册用户]
在NET2.0里面新建个ASP.NET项目,但不是通过"ATLAS"WEB SITE 来建立.这样建立起来的的项目,能通过引用DLL文件来实现么?我主要是想在以前的网站上把有些功能用ATLAS改进下
  回复  引用  查看    
#54楼 [楼主]2006-09-08 17:38 | TerryLee      
  回复  引用    
#55楼 2006-09-13 14:20 | xfary [未注册用户]
第一次接触atlas这个东东!
为什么在ajax.net中要
function OnRequestComplete(result)
{
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result.value;
}
而在Atlas中
function OnRequestComplete(result)
{
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result;
}
也就是一个是result.value一个是result
  回复  引用  查看    
#56楼 2006-09-15 12:30 | 城市猎人[匿名]      
function DoSearch()

{

var SrchElem = document.getElementById("SearchKey");

WebService.HelloWorld(SrchElem.value, OnRequestComplete);

}

此时的WebService表示什么呀,是不是每个页面只允许有一个ScriptManager ,每个ScriptManager 中只允许调用一个webServer呢?
  回复  引用  查看    
#57楼 [楼主]2006-09-15 13:03 |