• Spring.net 对webservice管理之Ajax异步调用篇(一) 【原创】


     这几天对以前的老项目进行升级,加入了spring.net,但遇到的很多问题,首先是对AjaxPro的注入失败,这个是注入不进去的,spring.net没有像对webservice一样给AjaxPro提供了代理(如果谁有好的解决办法请给我留言),所以我使用webservice代替AjaxPro对异步的调用,如何对webservice进行管理呢?网上看到了不少的文章,发现能真正解决问题的很少,而且说的不明白,因为要对webservice进行异步调用,在首次加载的时候可以对webservice注入,但是当你在客户端进行调用的时候发现加载时候所注入的对象都为null,现在来说下我的解决办法:

    Code

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {
        public static UserBizImpl GetUserBiz()
        {
            Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext();
            return context.GetObject("UserBizImpl") as UserBizImpl;
        }

        public WebService()
        {
        }

        [WebMethod]
        public string SysHello(string name)
        {
            return GetUserBiz().GetName(name);
        }

    }

    这里使用构造方法注入,如果使用属性注入,在用到异步调用的时候对象为null

    总结:在spring.net 参考文档中提出使用spring.net代理类会把webservice的属性覆盖,而且消除对.asmx文件的依赖,并且不写webservice等特性也是没问题的,但是我这里使用的是异步,如果使用如此配置的话注入的对象会为null,看看原文是怎么说的

    ---------既然我们为web服务创建了服务端代理,就没有必要在web服务类中应用诸如WebMethod之类的特性了。因为此时.NET基础框架是看不到“真正”的服务对象的,.NET真正接触到的是应用在代理类上的特性。

    也就是说,我们完全可以从服务类中去掉WebService和WebMethod特性,只留下一个普通的.NET对象(一个PONO)。对于上面的例子来说,去掉这些特性后仍然可以正常工作,因为代理类生成器可以自动的在要导出的接口方法上应用WebMethod特性。-----------------

    下一篇讲讲述如何使用spring.net的webservice代理进行管理web服务,并通过Aop发布web服务已在客户端访问

     本文出自:http://www.cnblogs.com/myssh/archive/2009/07/03/1516436.html

     待续................

  • 相关阅读:
    【瞎口胡】CDQ 分治
    题解 Luogu P2934 [USACO09JAN]Safe Travel G
    【瞎口胡】线段树优化建图
    git did not exit cleanly (exit code 128)如何解决
    转贴Linux服务器性能评估
    小记 SqlHelper
    zookeeper安装部署
    zookeeper原理介绍
    zookeeper基本操作
    zookeeper四字命令
  • 原文地址:https://www.cnblogs.com/myssh/p/1516436.html
Copyright © 2020-2023  润新知