ASP.NET基础教程 控件编程 .NET设计模式高级应用
返回首页
当前位置: 首页 > ASP.NET教程 > 高级应用 >

使用Spring.Net将业务类封装成WebService

时间:2010-05-08 08:30来源:未知 作者:admin 点击:我要投稿  高质量的ASP.NET空间,完美支持1.0/2.0/3.5/4.0/MVC等

 

转载请注明出处
文章概述
在三层开发中,业务逻辑层不仅会在本系统中使用,而且常常会开放为WebService以供其他系统调用,从而共享计算能力。
然而,编写的WebService其实已经在业务逻辑层中实现了,只不过又重复编写了一次。Spring.NET框架提供了一整套的解决方案来简化这一过程,开发人员只需要创建配置文件,即可以实现将现有的业务逻辑开发为WebService。
项目环境
VS2008
ASP.NET
Framework 3.5
Spring.NET 1.2
业务逻辑接口与实现类
在使用Spring.NET提供的将业务逻辑类开放为WebService方式时,此业务逻辑类必须要有一个接口
在下面的示例中,简单地创建了一个无参数方法GetName,这个方法返回一个字符串:
接口

namespace Test.IService.Default
{
    public interface IUserService
    {
        string GetName();
    }
}

实现类

namespace Test.Service.Default
{
    public class UserService : IUserService
    {
        public string GetName()
        {
            return "Sunny D.D";
        }
    }
}
 

引入Spring.NET
需要引入的Spring.NET框架的dll文件列表如下:
1.         antlr.runtime.dll
2.         Common.Logging.dll
3.         Spring.Aop.dll
4.         Spring.Core.dll
5.         Spring.Data.dll
6.         Spring.Web.dll
7.         Spring.Web.Extensions.dll
Web.config配置文件
configSections节点

 <configSections>
    <sectionGroupname="spring">
      <sectionname="context"type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
      <sectionname="objects"type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
      <sectionname="parsers"type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
    </sectionGroup>
 </configSections>

Spring节点

<appSettings/>
 <connectionStrings/>
 <spring>
    <parsers>
      <parsertype="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
      <parsertype="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
      <parsertype="Spring.Aop.Config.AopNamespaceParser, Spring.Aop"/>
    </parsers>
    <context>
      <resourceuri="~/WebService.config"/>
    </context>
 </spring>

在此配置中由“<resourceuri="~/WebService.config"/>”指明了Spring配置文件的路径。
httpHandlers节点

    <httpHandlers>
      <removeverb="*"path="*.asmx"/>
      <addpath="*.asmx"verb="*"type="Spring.Web.Script.Services.ScriptHandlerFactory, Spring.Web.Extensions"validate="false" /> <!--这里是将业务逻辑类封装为WebService的关键配置-->
      <addpath="*.aspx"verb="*"type="Spring.Web.Support.PageHandlerFactory, Spring.Web" />
    </httpHandlers>

在红色注释的代码行中,如果用户访问了.asmx结尾的文件(ASP.NET的WebService资源),都将由Spring进行处理。
httpModules节点

    <httpModules>
      <addname="SpringModule"type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
    </httpModules>

WebService.config配置文件
在网站根目录中创建WebService.config,如图所示:
clip_image002
其代码如下:

<?xmlversion="1.0"encoding="utf-8" ?>
<objectsxmlns="http://www.springframework.net"
           xmlns:db="http://www.springframework.net/database"
           xmlns:tx="http://www.springframework.net/tx"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
 <objectid="Root.Test.UserService"
      type="Test.Service.Default.UserService, Test.Service.Default"
      scope="request">
 </object>
 
 <objectid="TestService"type="Spring.Web.Services.WebServiceExporter, Spring.Web">
    <propertyname="TargetName"value="Root.Test.UserService"/>
    <propertyname="Namespace"value="http://tempuri.org/"/>
    <propertyname="Description"value="测试服务"/>
    <propertyname="MemberAttributes">
      <dictionary>
        <entrykey="*">
          <objecttype="System.Web.Services.WebMethodAttribute, System.Web.Services">
          </object>
        </entry>
      </dictionary>
    </property>
 </object>
 
</objects>

Spring配置文件的格式及原理就不在这里讲述了,网络中有大量的资源。
测试页面
启动测试服务器,我的端口是2287。
需要说明的是,TestService.asmx实际是不存在的,而是在WebService.config配置文件中,WebService对象的id。在本实例中就是:

<objectid="TestService"type="Spring.Web.Services.WebServiceExporter, Spring.Web">

这时候可以看到WebService的说明页面,如图所示:
clip_image003
点击“GetName”超链接,可以看到如下页面:
clip_image005
点击“调用”按钮,可以获得WebService执行结果:
clip_image007
至此,大功告成。
本文资源
Spring.NET:官方下载
本站推荐文章:
本站热点文章:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色 情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片