我看了很多网上的代码发现很多都是用javascript通过xmlhttp来访问webservice来实现后台的操作。
我现在用的都是访问某个文件夹中的aspx文件来实现后台操作的。两者之间有什么区别吗?
安全性?或是其他的?大家来说说另:最近想做一个用户名验证的ajax程序练习一下,想尝试使用updatepanel,发现在textbox没有onblur服务器事件,是不是说在这种应用下不能用updatepanel只能自己来手工来写呢?刚刚接触ajax一直在手工写和用控件之间徘徊。

解决方案 »

  1.   

    我觉得updatepanel不好,不喜欢封装的东西
    用JQUERY就行了,
    WEBSERVICE性能不好吧,我是直接请求ASHX文件
      

  2.   

        webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即是客户不了解(也不需要)其过程,他们只获取数据.
        webservice传递的数据只能是序列化的数据,典型的就是xml数据,这里我们也只讨论xml数据的传输.
    至于没有onblur事件,原因是它是服务器控件
      

  3.   

    我的看法是,如果web服务是由自己开发的,并且不需要跨平台\跨应用访问,那么使用js通过xmlhttp来访问web服务完全是个误区.web服务本身的目的是用在跨平台\跨应用上.我以前的一个项目中需要去调用短信接口,后来与对方公司协商,大家都一致的提到使用web服务,但是他们使用的是java开发,我使用.net调用如果你的web服务,可以会被不同的客户端消费,如google的web 搜索服务,可以在windows应用程序中调用,也可以在asp.net中调用,还可以在Windows Mobile应用程序中调用,这就是实现了一个跨应用的功能.我们知道web服务的性能会稍微差一点,如果开发web服务不是基于上述的目的,我的看法是这样就是在乱用web服务了.所以,我在项目中使用ajax的时候(我使用asp.net ajax),我都是使用PageMethods(页方法.)
      

  4.   

    textbox最终在浏览器中呈现input type="text",所以,你可以直接在textbox中加入onblur事件.只不过在开发环境中会有下划线的提示.这也无关紧要.如果不喜欢,可以使用编程的方法,如Textbox对象.Attributes.Add()的方法来做.
      

  5.   

    谢谢 truelove12,我对PageMethods不是很熟悉,以前没有用过
    正在学习ing
      

  6.   

    想请教一下
    PageMethods是不是一定要使用asp.net ajax才能使用?如果自己写的类,是不是依然要使用xmlhttp的形式呢?javascript中似乎也有PageMethods对应的方法,是不是由ScriptManageer扩展出来的呢?
      

  7.   

    我的理解是:
    1.要使用PageMethods必须要使用asp.net ajax中的ScriptManager控件,并将其EnableScriptManager属性设置为true
    2.在Javascript中原来是没有PageMethods的,在加入了ScriptManager之后,扩展出了PageMethods
    3.使用PageMethods来写ajax是不用建筑在Updatepanel上的,只需要是普通的html控件或服务器控件即可(因为我觉得Updatepanel有时也不能满足我的要求)
    4.用了PageMethods就可以基本抛开xmlhttp进行数据传递了以上看法是我还没有写代码看了您的贴子和网上的一些小例子的感觉,不知道是否正确
      

  8.   

    PageMethods.静态方法名(参数列表,成功执行的回调函数,失败的回调函数,上下文对象)可见,静态方法名是位于.aspx.cs中定义的,所以定是需要.aspx的配合.如果自己写的类???
    不知道是指.cs还是指js的类?javascript中似乎也有PageMethods对应的方法,是不是由ScriptManageer扩展出来的呢?是不是说js中似乎也"没有"PageMethods对应的方法.PageMethods是asp.net ajax中对js扩展出来的.包括String.format() 注意这是客户端的方法,它也是js的扩展.
      

  9.   

    1\完全正确,不过应该是 将其EnablePageMethods 属性设置为true
    2\不完全对吧.PageMethods并非是ScriptManager扩展出来的,而是ScriptManager对象通过加载很多js文件来得到的.
    3\完全正确,而且是效率比使用UpdatePanel要高.
    4\是的,其实你如果使用xmlhttp可以做到跨浏览器的话,效率应该是最高的.当然现在有好多这样现成可以使用的库.
    不过,asp.net ajax也的确很强大,可以将服务器类型和客户端类型做映射,是非常方便的.如将.aspx.cs中返回的结果为List<Person>的对象,映身到js中的一个数组..
      

  10.   

    终于明白了,谢谢您!!!
    刚学的时候只知道xmlhttp这种的,但不知道"正规"的开发方式是怎么样的,就在网上找
    找啊找,找了很多,看到很多库,这个库那个库,看得头晕,不知道哪个好,也不知道应该选哪个后来我选用asp.net ajax,也一直在看控件的使用方法,感觉好是好,但控件永远有不全的时候,总有局限性,就感觉asp.net ajax没用了........
    直到现在我才算明白过来,为什么所有教程都说ScriptManager是asp.net ajax的基本,以前理解得很潜,就知道要用updatepanel之类的控件就是要用到这个
    还以为updatepanel是asp.net ajax的基本...现在才明白那些教程所说"基本"了听您一席我真有一点豁然开朗的感觉.让我知道了asp.net ajax倒底是一个怎么一个用法,明白了,那些控件只是锦上添花,知道了,asp.net ajax开发的基本方法,真真太感谢了还让我明白了,原来我最初用的那些xmlhttp方法也是没有什么错误的,只是开发效率相对低一些谢谢您,结贴了!
      

  11.   

    不客气,xmlhttp开发效率低,可是运行效率可是比那些封装了几层的库要高多了.
      

  12.   


    PageMethods真的是个好东东吗?这一点有待商榷,个人认为,微软的AJAX是极大地方便了程序员,但这种方便其实是以牺牲效率为作为代价的,就以PageMethods为例,要使用PageMethods,必须引用ScriptManager组件,然而程序员所不知道的是,当打开引用了ScriptManager的页面,后台会自动地加载很多js文件,这极大地延长打开页面的时间,网速不好的客户端甚至半天都打不开页面,这不是夸张,我亲身经历过的,相比之下,直接请求ASHX文件是一个效率比较高的方法,但ASHX文件有一个缺点,就是一个文件只能写一个方法(当然也有曲折的办法写多个方法,但代码看起来会很乱,不方便维护),所以使用Webservice便成了一个折中的方案,这也是楼主你在网上看到的很多代码都是访问Webservice实现后台的操作的原因,有些人说这是乱用web服务,这至少说明他没有大型项目的实际开发经验了