zoukankan      html  css  js  c++  java
  • 利用Spring.NET实现WCF的AOP编程

        在WCF中,有时我们希望实现AOP编程,用于权限验证、日志记录等,而Spring.NET就是一种很好的实现工具。

        1、引用Spring.NET相关DLL

        下载Spring.NET包,并在WCF项目中引用相关DLL:

                                  

        2、添加WCF服务

        在WCF项目中添加相关WCF服务:

        契约代码:

    using System.ServiceModel;
    
    namespace MyWcfTest
    {
        [ServiceContract]
        public interface IWcfContract
        {
            [OperationContract]
            string GetData(string value);
        }
    }

        服务实现:

    namespace MyWcfTest
    {
        public class ImplementService : IWcfContract
        {
            public string GetData(string value)
            {
                return string.Format("你输入的是:{0}", value);
            }
        }
    }

        添加WcfServer.svc文件:

    <%@ ServiceHost Language="C#" Debug="true" Service="WcfServer" Factory="Spring.ServiceModel.Activation.ServiceHostFactory"  %>

        注意,这里添加了Spring.NET的相关Factory,同时Service变成了我们自定义的名字,它在稍后的配置文件中定义。

        3、配置Spring.NET

        添加Spring.NET配置文件MyObjects.xml,内容如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.net
            http://www.springframework.net/xsd/spring-objects.xsd">
    
      <object type="Spring.Aop.Framework.AutoProxy.TypeNameAutoProxyCreator, Spring.Aop">
        <property name="TypeNames">
          <list>
            <value>*Service*</value>
          </list>
        </property>
        <property name="InterceptorNames">
          <list>
            <value>aroundAdvice</value>
          </list>
        </property>
      </object>
    
      <object id="aroundAdvisor" type="Spring.Aop.Support.NameMatchMethodPointcutAdvisor, Spring.Aop">
        <property name="Advice" ref="aroundAdvice"/>
        <property name="MappedNames">
          <list>
            <value>Find*</value>
          </list>
        </property>
      </object>
    
      <object id="aroundAdvice" type="MyWcfTest.MyAroundAdvice, MyWcfTest"/>
      
      <object id="WcfServer" type="MyWcfTest.ImplementService, MyWcfTest" />
      
      <object id="htService1" type="MyWcfTest.Service1, MyWcfTest" />
    </objects>

        在WCF应用程序的配置文件Web.config中添加下列配置内容:

      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
        </sectionGroup>
      </configSections>
      <spring>
        <context>
          <resource uri="~/MyObjects.xml" />
          <resource uri="config://spring/objects" />
        </context>
        <objects xmlns="http://www.springframework.net" />
      </spring>

       4、注册Spring.NET上下文

        新增应用程序全局设置文件Global.asax,在其中的Application_Start方法中添加下面的代码,用以注册Spring.NET上下文。

            protected void Application_Start(object sender, EventArgs e)
            {
                ContextRegistry.GetContext();
            }

        由此配置完成,即可实现针对WCF的AOP编程。

  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/huatao/p/4848275.html
Copyright © 2011-2022 走看看