轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(5)--其它

Netop.Core主要提供的服务是类工厂服务及AOP服务,当然还其它一些小服务:

一、对话上下文Netop.Core.Context.SessionContext
       此对话上下文可用在桌面程序和ASP.NET程序,可用SetData和GetData在上下文中传递数据。方法有:
       public static bool IsWeb()
       public static string GetAppMapPath (string path)
       public static object GetData(string key)
       public static object GetData(string key, bool isToSession)
       public static void SetData(string key, object value)
       public static void SetData(string key, object value, bool isToSession)
       public static void Remove(string key)

二、缓冲
       定义了缓冲接口ICache和ILocalCache(本地缓冲),Netop.Core.Cache.MicrosoftEnterpriseLibraryCache就是包装Microsoft.Practices.EnterpriseLibrary.Caching实现ILocalCache接口的一个类,当然也可以做一个包装MemCached实现ICache接口的类,以后有时间把它共享出来。
       本地缓冲服务的调用是通过Netop.Core.Cache.AppMemoryCache来的,当然配置文件是需要进行配置的:
       Microsoft.Practices.EnterpriseLibrary.Caching有关的配置为:

<configSections>
     <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings,Microsoft.Practices.EnterpriseLibrary.Caching" />
      <section name="Netop.Application" type="Netop.Core.Configuration.ConfigurationHandler,Netop.Core" />    
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

<cachingConfiguration defaultCacheManager="Default Cache Manager">
    <backingStores>
      <add name="inMemory" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching" />
    </backingStores>
    <cacheManagers>
      <add name="Default Cache Manager"
                type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching"
                expirationPollFrequencyInSeconds="60"
                maximumElementsInCacheBeforeScavenging="1000"
                numberToRemoveWhenScavenging="10"
                backingStoreName="inMemory" />
    </cacheManagers>
  </cachingConfiguration>

在<Netop.Application>节点下的配置:

<Application.Cache>
      <Provider>Netop.Core.Cache.MicrosoftEnterpriseLibraryCache,Netop.Core</Provider>
      <ApplicationLog>Application.Log</ApplicationLog>

<ExpirationPolicy.IsSet>1</ExpirationPolicy.IsSet>
      <ExpirationPolicy.Expiration>60</ExpirationPolicy.Expiration>
      <ExpirationPolicy.TypeFullName>Microsoft.Practices.EnterpriseLibrary.Caching.Expirations.SlidingTime,Microsoft.Practices.EnterpriseLibrary.Caching</ExpirationPolicy.TypeFullName>
    </Application.Cache>

经过这些配置的设定后,就可以使用AppMemoryCache的方法了:
        
        public static void AddCacheData(string key, object data)
        public static void AddCacheData(string key, object data, Priority priority)
        public static void AddCacheDataForEver(string key, object data)
        public static void AddCacheDataForFileDependency(string key, object data, Priority priority, string fileName)
        public static void AddDataForAbsoluteTime(string key, object data, Priority priority, TimeSpan timeFromNow)
        public static void AddDataForAbsoluteTime(string key, object data, Priority priority, System.DateTime absoluteTime)
        public static void AddDataForSlidingTime(string key, object data, Priority priority, TimeSpan slidingExpiration)
        public static void AddDataForSlidingTime(string key, object data, Priority priority, TimeSpan slidingExpiration, System.DateTime originalTimeStamp)
        public static object GetCacheData(string key)
        public static void RemoveCacheData(string key)
        public static bool Contains(string key)
        public static int Count

三、日志
       Netop.Core.Log.Log4Net是实现了Netop.Core.Log.ILog接口的对Log4Net包装类,ILog接口为:
    public interface ILog
    {
        void Debug(object message);
        void Write(object message);
        void Write(object message, LogInfoType logInfoType);
        void Write(object message, Exception exception);
        void Write(object message, Exception exception, LogInfoType logInfoType);
    }
       Netop.Core.Log.LogManager是使用日志的工厂类,最主要的处理是对如对Log4Net进行数据库配置的日志时如何提取自己加密的ConnectionString给Log4Net,细节可看GetLog4NetLogger方法及相关的配置代码。

使用Log4Net有关的配置为:
   <configSections>
     <section name="Netop.Application" type="Netop.Core.Configuration.ConfigurationHandler,Netop.Core" />    
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
      另外配置<log4net>艽点,如:
  <log4net>
    <logger name="Log">
      <level value="ERROR" />
      <appender-ref ref="LogFile" />
    </logger>
    <appender name="LogFile" type="log4net.Appender.FileAppender" >
      <param name="File" value="Log/log-file.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p [%c]  %m%n"/>
      </layout>
    </appender>
  </log4net>

在Netop.Application里的配置呢?如你自己要配置另外的日志,可在Netop.Application里加类似这样的配置(当然请给XXXXXX和YYYYYY取个好名),如 :
   <XXXXXX>
      <LogCategory>Netop.Core.Log.Log4Net,Netop.Core</LogCategory>
      <LogParameter>YYYYYY</LogParameter>
   </XXXXXX>
   我自己的系统的一种配置为(当然还有多个形表式式的日志的配置):
   <Application.Log>
      <LogCategory>Netop.Core.Log.Log4Net,Netop.Core</LogCategory>
      <LogParameter>Log</LogParameter>
   </Application.Log>
   当然Log对应的在log4net中的等等配置你要搞好(那个你就参照相关Log4Net的资料吧),上面<LogParameter>Log</LogParameter>中的Log名就是上面的<logger name=" Log">的Log名,要对应关联起来才行。

然后程序就可调用了:
   Netop.Core.Log.ILog log = Netop.Core.Log.LogManager.GetLogger("Application.Log");
   log. Debug(“......”);

顺便说一下,在
    <Application.Cache>
      ...
      <ApplicationLog>Application.Log</ApplicationLog>
      ...
    </Application.Cache>
  中的<ApplicationLog>Application.Log</ApplicationLog>就是指着Application.Log的Log配置,在Netop.Core.Cache.MicrosoftEnterpriseLibraryCache,Netop.Core中已可根据配置记录相关日志。

其它的一些小服务,如验证码等等简单易用的就不说了。

轻量级的.NET对象查找服务和AOP开发框架源码Netop.Core3.5下载地址:http://download.csdn.NET/detail/tom_cat_xie_jxdy/9837303

轻量级的.NET对象查找服务和AOP开发框架测试源码 下载地址:http://download.csdn.Net/detail/tom_cat_xie_jxdy/9837278

Netop.Core--轻量级的.NET对象查找服务和AOP开发框架文档下载地址:http://download.csdn.net/detail/tom_cat_xie_jxdy/9838212

时间: 2024-11-05 18:41:01

轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(5)--其它的相关文章

轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(1)-导言

Netop.Core是我程序开发积累的一个轻量级的.NET对象查找服务和AOP开发框架,现将源码公开,共享给各位NET程序员后面相关的文章对这个开发框架进行程序解说和使用解说. Netop.Core--轻量级的.NET对象查找服务和AOP开发框架概述:1.    对象查找服务(本地服务实例生成,远程服务,WCF服务)和AOP服务.2.    其它普通服务:配置, 对话上下文,日志,缓冲等.3.    类库:Netop.Core.dll  4.    必需的外部类库:Microsoft.Pract

轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(2)--配置

先把Netop.Core的最核心部分"对象查找服务"放一放,先说说应用系统的配置. 一个应用系统的配置是少不了的,除非你是一个纯硬代码族顽固者. 也见过有的应用系统通过系统提供的健值(key-value)方法在appSettings节点下设了几十个甚至上百个,不堪入目,更别说条理性了. 开发一个应用框架,配置一般是少不了,如log4net就有自己的配置,不会让你在appSettings设几十个条目. 开发配置是很简单的,下面慢慢说来. 在NET应用中,配置信息以XML文档储存.WEB应

轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(4)--AOP

上节谈了谈类工厂/对象查找服务,本节谈谈AOP的实现. AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. Netop.Core的AOP采用代理的实现方式.采用代理方式,您的类就必须继承一个基类(当然不是那个默认的Object,如您的类已经有一个父类,那可以让那个类的父类去继承)-- ContextBoundObject或Netop.Core.Aspect.AspectObject.当然Net

轻量级的.NET对象查找服务和AOP开发框架Netop.Core源码解说(3)--类工厂/对象查找服务

上节谈了谈Netop.Core的对于应用系统的配置信息的处理,对于Netop.Core最核心的服务--类工厂/对象查找服务当然要用到配置服务,等下会说到. 对于NET类工厂/对象查找服务,名气大的有Spring.Net(对应于Java的Spring--号称轻量级中间件),为什么还要再造一个轮子呢?如果说Spring是轻量级的,那Netop.Core就只 能是微量级的,够用就好,学习曲线会大幅下降,学习研究代码的时间也会大幅下降. 够用就好,何乐而不为?况且Netop.Core的类工厂/对象查找服

Spring核心框架 - AOP的原理及源码解析

一.AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象:切面通常包括对于基础的增加应用:配置是指AOP体系中提供的配置环境或者编织配置,通过该配置AOP将基础和切面结合起来,从而完成切面对目标对象的编织实现. 层次2面向方面系统:配置模型,逻辑配置和AOP模型是为上策的语言和开发环境提供支持的,主要功能是将需要增强的目标对象.切面和配置使用AOP的API转换.抽象.封装成面向方面中的逻辑模型. 层次1底层编织实现模块:主要是将面向方面系统抽象封

leaflet结合geoserver利用WFS服务实现图层删除功能(附源码下载)

前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet 的插件库,非常有用 内容概览 leaflet结合geoserver利用WFS服务实现图层删除源代码demo下载 效果图如下: 本篇主要是在上一篇leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的,leaflet通过调用geoserver发布的地图服务WFS来

openlayers6结合geoserver利用WFS服务实现图层删除功能(附源码下载)

内容概览 1.openlayers6结合geoserver利用WFS服务实现图层删除功能2.源代码demo下载 效果图如下: 本篇主要是在上一篇openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的,openlayers6通过调用geoserver发布的地图服务WFS来达到图层删除记录的目的.与GeoServer的WFS进行基于Rest交互关键就在于请求参数,值得注意的是这些请求最好采用POST方法发送.查询可以采用json,但增加,删除,修改都只能

C#版Windows服务安装卸载小工具-附源码

前言 在我们的工作中,经常遇到Windows服务的安装和卸载,在之前公司也普写过一个WinForm程序选择安装路径,这次再来个小巧灵活的控制台程序,不用再选择,只需放到需要安装服务的目录中运行就可以实现安装或卸载. 开发思路 1.由于系统的权限限制,在运行程序时需要以管理员身份运行 2.因为需要实现安装和卸载两个功能,在程序运行时提示本次操作是安装还是卸载  需要输入 1 或 2 3.接下来程序会查找当前目录中的可执行文件并过滤程序本身和有时我们复制进来的带有vhost的文件,并列出列表让操作者

做一个合格的程序猿之浅析Spring AOP源码(十八) Spring AOP开发大作战源码解析

其实上一篇文章价值很小,也有重复造轮子的嫌疑,网上AOP的实例很多,不胜枚举,其实我要说的并不是这个,我想要说的就是上一节中spring的配置文件: 我们这边并没有用到我们上几节分析的哪几个AOP的主要实现类:ProxyFactoryBean.java , ProxyFactory.java ,AspectJProxyFactory.java ,在我们这个配置文件中,根本没有显示的去配置这些类,那么spring到底是怎么做到的呢? 大家可以这么想,spring到底是怎么去杀害目标对象的呢?真正的