diff --git a/OSS.Common.Tests/LogTests.cs b/OSS.Common.Tests/LogTests.cs
index 5cad014..1363f27 100644
--- a/OSS.Common.Tests/LogTests.cs
+++ b/OSS.Common.Tests/LogTests.cs
@@ -1,4 +1,6 @@
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OSS.Common.Plugs.CachePlug;
using OSS.Common.Plugs.LogPlug;
namespace OSS.Common.Tests
diff --git a/OSS.Common/OSS.Common.csproj b/OSS.Common/OSS.Common.csproj
index 23dd7d0..c1aa2dc 100644
--- a/OSS.Common/OSS.Common.csproj
+++ b/OSS.Common/OSS.Common.csproj
@@ -3,7 +3,7 @@
netstandard2.0
False
- 1.2.6.0
+ 1.2.7
False
Kevin
OSSCoder
@@ -13,12 +13,10 @@
http://img1.static.osscoder.com/logo.jpg
https://github.com/KevinWG/OSS.Common
- 1. 优化HMAC未覆盖的算法
-2. éš�æœºæ•°ç®—æ³•æ·»åŠ å�¯åЍseed
-3. é»˜è®¤æ—¥å¿—åŠŸèƒ½æ·»åŠ é”™è¯¯Code
+ 优化�件模�
- 1.2.6.0
- 1.2.6.0
+ 1.2.7.0
+ 1.2.7.0
https://github.com/KevinWG/OSS.Common/blob/master/LICENSE
diff --git a/OSS.Common/Plugs/CachePlug/CacheUtil.cs b/OSS.Common/Plugs/CachePlug/CacheUtil.cs
index 762c30a..dabfe37 100644
--- a/OSS.Common/Plugs/CachePlug/CacheUtil.cs
+++ b/OSS.Common/Plugs/CachePlug/CacheUtil.cs
@@ -12,7 +12,6 @@
#endregion
using System;
-using System.Collections.Concurrent;
namespace OSS.Common.Plugs.CachePlug
{
@@ -21,7 +20,7 @@ namespace OSS.Common.Plugs.CachePlug
///
public static class CacheUtil
{
- private static readonly DefaultCachePlug defaultCache= new DefaultCachePlug();
+ private static readonly DefaultCachePlug defaultCache = new DefaultCachePlug();
///
/// 通过模��称获�
@@ -47,13 +46,46 @@ namespace OSS.Common.Plugs.CachePlug
/// �对过期时间
/// 模��称
/// 是å�¦æ·»åŠ æˆ�功
- public static bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null,
- string moduleName = ModuleNames.Default)
+ [Obsolete]
+ public static bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration,
+ DateTime? absoluteExpiration = null,
+ string moduleName = ModuleNames.Default)
{
return GetCache(moduleName).AddOrUpdate(key, obj, slidingExpiration, absoluteExpiration);
}
+ ///
+ /// æ·»åŠ æ—¶é—´æ®µè¿‡æœŸç¼“å˜
+ /// 如果å˜åœ¨åˆ™æ›´æ–°
+ ///
+ /// æ·»åŠ ç¼“å˜å¯¹è±¡ç±»åž‹
+ /// æ·»åŠ å¯¹è±¡çš„key
+ /// 值
+ /// 相对过期的TimeSpan
+ /// 模��称
+ /// 是å�¦æ·»åŠ æˆ�功
+ public static bool Set(string key, T obj, TimeSpan slidingExpiration,
+ string moduleName = ModuleNames.Default)
+ {
+ return GetCache(moduleName).Set(key, obj, slidingExpiration);
+ }
+
+ ///
+ /// æ·»åŠ å›ºå®šè¿‡æœŸæ—¶é—´ç¼“å˜,如果å˜åœ¨åˆ™æ›´æ–°
+ ///
+ /// æ·»åŠ ç¼“å˜å¯¹è±¡ç±»åž‹
+ /// æ·»åŠ å¯¹è±¡çš„key
+ /// 值
+ /// �对过期时间,�为空则按照�对过期时间计算
+ /// 模��称
+ /// 是å�¦æ·»åŠ æˆ�功
+ public static bool Set(string key, T obj, DateTime absoluteExpiration,
+ string moduleName = ModuleNames.Default)
+ {
+ return GetCache(moduleName).Set(key, obj, absoluteExpiration);
+ }
+
///
/// 获å�–缓å˜å¯¹è±¡
///
diff --git a/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs b/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs
index d54c50e..d7a7d6c 100644
--- a/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs
+++ b/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs
@@ -29,7 +29,8 @@ namespace OSS.Common.Plugs.CachePlug
private static readonly MemoryCache m_Cache=new MemoryCache(new MemoryCacheOptions());
#endif
///
- /// æ·»åŠ ç¼“å˜,如果å˜åœ¨åˆ™æ›´æ–°
+ /// æ·»åŠ ç¼“å˜
+ /// 如果å˜åœ¨åˆ™æ›´æ–°
///
/// æ·»åŠ ç¼“å˜å¯¹è±¡ç±»åž‹
/// æ·»åŠ å¯¹è±¡çš„key
@@ -37,11 +38,39 @@ namespace OSS.Common.Plugs.CachePlug
/// 相对过期的TimeSpan 如果使用固定时间 =TimeSpan.Zero
/// �对过期时间,�为空则按照�对过期时间计算
/// 是å�¦æ·»åŠ æˆ�功
+ [Obsolete]
public bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null)
{
return Add(key, obj, slidingExpiration, absoluteExpiration, true);
}
+ ///
+ /// æ·»åŠ æ—¶é—´æ®µè¿‡æœŸç¼“å˜
+ /// 如果å˜åœ¨åˆ™æ›´æ–°
+ ///
+ /// æ·»åŠ ç¼“å˜å¯¹è±¡ç±»åž‹
+ /// æ·»åŠ å¯¹è±¡çš„key
+ /// 值
+ /// 相对过期的TimeSpan
+ /// 是å�¦æ·»åŠ æˆ�功
+ public bool Set(string key, T obj, TimeSpan slidingExpiration)
+ {
+ return Add(key, obj, slidingExpiration, null, true);
+ }
+
+ ///
+ /// æ·»åŠ å›ºå®šè¿‡æœŸæ—¶é—´ç¼“å˜,如果å˜åœ¨åˆ™æ›´æ–°
+ ///
+ /// æ·»åŠ ç¼“å˜å¯¹è±¡ç±»åž‹
+ /// æ·»åŠ å¯¹è±¡çš„key
+ /// 值
+ /// �对过期时间,�为空则按照�对过期时间计算
+ /// 是å�¦æ·»åŠ æˆ�功
+ public bool Set(string key, T obj, DateTime absoluteExpiration)
+ {
+ return Add(key, obj, TimeSpan.Zero, absoluteExpiration, true);
+ }
+
///
///
///
@@ -52,7 +81,8 @@ namespace OSS.Common.Plugs.CachePlug
///
///
///
- private static bool Add(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration, bool isUpdate)
+ private static bool Add(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration,
+ bool isUpdate)
{
if (slidingExpiration == TimeSpan.Zero && absoluteExpiration == null)
throw new ArgumentNullException("slidingExpiration", "缓å˜è¿‡æœŸæ—¶é—´ä¸�æ£ç¡®,需è¦�设置固定过期时间或者相对过期时间");
@@ -71,7 +101,7 @@ namespace OSS.Common.Plugs.CachePlug
return true;
#else
var opt = new MemoryCacheEntryOptions();
- if (absoluteExpiration != null)
+ if (absoluteExpiration != null)
opt.AbsoluteExpiration = new DateTimeOffset(absoluteExpiration.Value);
else
opt.SlidingExpiration = slidingExpiration;
diff --git a/OSS.Common/Plugs/CachePlug/ICachePlug.cs b/OSS.Common/Plugs/CachePlug/ICachePlug.cs
index 747c5f8..9a9edb2 100644
--- a/OSS.Common/Plugs/CachePlug/ICachePlug.cs
+++ b/OSS.Common/Plugs/CachePlug/ICachePlug.cs
@@ -29,8 +29,30 @@ namespace OSS.Common.Plugs.CachePlug
/// Ïà¶Ô¹ýÆÚµÄTimeSpan Èç¹ûʹÓù̶¨Ê±¼ä =TimeSpan.Zero
/// ¾ø¶Ô¹ýÆÚʱ¼ä,²»Îª¿ÕÔò°´ÕÕ¾ø¶Ô¹ýÆÚʱ¼ä¼ÆËã
/// ÊÇ·ñÌí¼Ó³É¹¦
+ [Obsolete]
bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null);
+ ///
+ /// Ìí¼Óʱ¼ä¶Î¹ýÆÚ»º´æ
+ /// Èç¹û´æÔÚÔò¸üÐÂ
+ ///
+ /// Ìí¼Ó»º´æ¶ÔÏóÀàÐÍ
+ /// Ìí¼Ó¶ÔÏóµÄkey
+ /// Öµ
+ /// Ïà¶Ô¹ýÆÚµÄTimeSpan
+ /// ÊÇ·ñÌí¼Ó³É¹¦
+ bool Set(string key, T obj, TimeSpan slidingExpiration);
+
+ ///
+ /// Ìí¼Ó¹Ì¶¨¹ýÆÚʱ¼ä»º´æ,Èç¹û´æÔÚÔò¸üÐÂ
+ ///
+ /// Ìí¼Ó»º´æ¶ÔÏóÀàÐÍ
+ /// Ìí¼Ó¶ÔÏóµÄkey
+ /// Öµ
+ /// ¾ø¶Ô¹ýÆÚʱ¼ä,²»Îª¿ÕÔò°´ÕÕ¾ø¶Ô¹ýÆÚʱ¼ä¼ÆËã
+ /// ÊÇ·ñÌí¼Ó³É¹¦
+ bool Set(string key, T obj, DateTime absoluteExpiration);
+
///
/// »ñÈ¡»º´æ¶ÔÏó
///
diff --git a/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs b/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs
index eb94ae2..884b88d 100644
--- a/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs
+++ b/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs
@@ -66,7 +66,7 @@ namespace OSS.Common.Plugs.DirConfigPlug
var type = typeof(TConfig);
- XmlSerializer xmlSer = new XmlSerializer(type);
+ var xmlSer = new XmlSerializer(type);
xmlSer.Serialize(fs, dirConfig);
result = new ResultMo();
diff --git a/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs b/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs
index 6f0ba29..39aa275 100644
--- a/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs
+++ b/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs
@@ -51,7 +51,7 @@ namespace OSS.Common.Plugs.LogPlug
return string.Concat(dirPath, DateTime.Now.ToString("yyyyMMddHH"), ".txt");
}
- private object obj = new object();
+ private readonly object obj = new object();
///
/// 写日志
@@ -61,7 +61,7 @@ namespace OSS.Common.Plugs.LogPlug
{
lock (obj)
{
- string filePath = getLogFilePath(info.ModuleName, info.Level);
+ var filePath = getLogFilePath(info.ModuleName, info.Level);
#if NETFW
using (StreamWriter sw = new StreamWriter(filePath, true, Encoding.UTF8))
#else
diff --git a/OSS.Common/Plugs/ModuleNames.cs b/OSS.Common/Plugs/ModuleNames.cs
index 4837b97..fafcdca 100644
--- a/OSS.Common/Plugs/ModuleNames.cs
+++ b/OSS.Common/Plugs/ModuleNames.cs
@@ -12,6 +12,7 @@
*****************************************************************************/
#endregion
+
namespace OSS.Common.Plugs
{
///
@@ -25,24 +26,29 @@ namespace OSS.Common.Plugs
public const string Default = "default";
///
- /// 支付模�
+ /// 支付ä¸å¿ƒæ¨¡å�—
///
public const string PayCenter = "pay_center";
-
- ///
- /// 推é€�ä¸å¿ƒæ¨¡å�—
- ///
- public const string PushCenter = "push_center";
-
+
///
/// 社会化ä¸å¿ƒ
///
public const string SocialCenter = "social_center";
///
- /// 多媒体ä¸å¿ƒæ¨¡å�—
+ /// 用户ä¸å¿ƒæ¨¡å�—
///
- public const string MediaStorage = "media_storage";
+ public const string User = "user";
+
+ ///
+ /// 订�模�
+ ///
+ public const string Order = "order";
+
+ ///
+ /// 产�模�
+ ///
+ public const string Product = "order";
}
}
diff --git a/README.md b/README.md
index 4ae8db9..5db1c0b 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,73 @@
-#OS.Common
- ͨÓûù´¡ÊµÏÖ£¬ÌṩÖ÷ÒªÓÐÒÔϵÄÄÚÈÝ£º
- 1. »ù´¡Óû§ÏµÍ³É豸ÐÅϢʵÌ嶨Òå¡£
- 2. Ö÷Á÷¼Ó½âÃÜ·½°¸ÊµÏÖ£¨£©
- 3. ³£¹æÊµÌåDTOת»¯£¬¾²Ì¬À©Õ¹·½·¨£¨Ê±¼ä£¬×Ö·û´®µÈµÈ´¦Àí£©
- 4. »ù´¡ÈÕÖ¾£¬»º´æ£¬ÅäÖø¨Öú¾²Ì¬À༰ĬÈÏ·½°¸ÊµÏÖ
- 5. È«¾Ö½á¹û£¬·ÖҳʵÌ嶨Òå
+# OS.Common
+ͨÓûù´¡ÊµÏÖ£¬µ±Ç°ÊÇÒÔ±ê×¼¿âµÄÐÎʽÌṩ£¬ÔÚnet46·ÖÖ§ÏÂÓбê×¼¿âºÍFramework 4.6µÄÁ½¸ö°æ±¾ÊµÏÖ
+µ±Ç°Àà¿âÖ÷ÒªÌṩÒÔϵÄÄÚÈÝ£º
-###Authrization
- Óû§ÊÚȨÐÅϢģ¿é£¬¿ÉÒÔÔÚÉÏÏÂÎÄÖÐʹÓÃMemberShiper£¬ÆäÖÐÖ÷Òª°üº¬Á½¸öÊôÐÔ£º
- 1. AppAuthorize
- ¶ÔÓ¦µÄÊÇÓ¦ÓÃÊÚȨÐÅÏ¢Ö÷ÒªÊÇÓ¦ÓÃÀ´Ô´£¬¿Í»§¶ËµÄÀàÐ͵È
- 2. MemberInfo
- ¶ÔÓ¦µÄÊǵ±Ç°µÄÓû§ÐÅÏ¢£¬Óû§Ãû³Æ µÈ
- MemberShiper ÖÐÌṩÁËGetToken·½·¨£¬·½±ã¼ÓÃÜÓû§Id£¬Í¬Ê±ÓÐÒ»¸ö¶ÔÓ¦µÄGetTokenDetailÀ´´ÓtokenÖнâÃÜÓû§idÐÅÏ¢
- ʹÓõÄÊǼÓÃÜ·½Ê½ÎªAes¼ÓÃÜ
+1. »ù´¡Óû§ÏµÍ³É豸ÐÅϢʵÌ嶨Òå¡£
+2. Ö÷Á÷¼Ó½âÃÜ·½°¸ÊµÏÖ£¨£©
+3. ³£¹æÊµÌåDTOת»¯£¬¾²Ì¬À©Õ¹·½·¨£¨Ê±¼ä£¬×Ö·û´®µÈµÈ´¦Àí£©
+4. »ù´¡ÈÕÖ¾£¬»º´æ£¬ÅäÖø¨Öú¾²Ì¬À༰ĬÈÏ·½°¸ÊµÏÖ
+5. È«¾Ö½á¹û£¬·ÖҳʵÌ嶨Òå
- ʹÓ÷½·¨£º¿ÉÒÔÔÚÇëÇóÖÐÌí¼ÓÖмä¼þ»òÕßfilter£¬À´¶ÔÆä½øÐи³Öµ£¬È»ºó¿ÉÒÔÔÚ¾ßÌåµÄÒµÎñÖнøÐе÷Óá£
- ÐèҪעÒâµÄÊÇÒÔÉÏÁ½¸ö±äÁ¿½ÔΪÏ̱߳äÁ¿£¬Èç¹ûÄãʹÓõÄÒì²½Ị̈߳¬Çë×¢Òâ´«Öµ¸ø¶ÔÓ¦µÄÏ̡߳£
+## Authrization
+Óû§ÊÚȨÐÅϢģ¿é£¬¿ÉÒÔÔÚÉÏÏÂÎÄÖÐʹÓÃMemberShiper£¬ÆäÖÐÖ÷Òª°üº¬Á½¸öÊôÐÔ£º
+1. AppAuthorize
+ ¶ÔÓ¦µÄÊÇÓ¦ÓÃÊÚȨÐÅÏ¢Ö÷ÒªÊÇÓ¦ÓÃÀ´Ô´£¬¿Í»§¶ËµÄÀàÐ͵È
+2. Identity
+ ¶ÔÓ¦µÄÊǵ±Ç°µÄÓû§ÐÅÏ¢£¬Óû§Ãû³Æ µÈ
+MemberShiper ÖÐÌṩÁËGetToken·½·¨£¬·½±ã¼ÓÃÜÓû§Id£¬Í¬Ê±ÓÐÒ»¸ö¶ÔÓ¦µÄGetTokenDetailÀ´´ÓtokenÖнâÃÜÓû§idÐÅÏ¢
+ʹÓõÄÊǼÓÃÜ·½Ê½ÎªAes¼ÓÃÜ
-###ComModels
- ϵͳĬÈÏʵÌåÐÅÏ¢£¬·ÖҳʵÌå £¬ ½á¹ûʵÌ壬·½±ãÈ«¾ÖʹÓã¬
- ÆäÖнá¹ûʵÌåResultMo°üº¬Èý¸öÊôÐÔ£º
- Ret-״̬Â룬ÔÚResultTypesµÄö¾ÙÖÐÒѾ°Ñ³£¼ûµÄ״̬ÐÅÏ¢×öÁ˼òµ¥¶¨Ò壬ÕâЩ״̬ÂëºÍHttp״̬Âë»ù±¾Ïà¶ÔÓ¦£¬
+
+## ComModels
+ϵͳĬÈÏʵÌåÐÅÏ¢£¬·ÖҳʵÌå £¬ ½á¹ûʵÌ壬·½±ãÈ«¾ÖʹÓã¬
+ÆäÖнá¹ûʵÌåResultMo°üº¬Èý¸öÊôÐÔ£º
+ret-״̬Â룬ÔÚResultTypesµÄö¾ÙÖÐÒѾ°Ñ³£¼ûµÄ״̬ÐÅÏ¢×öÁ˼òµ¥¶¨Ò壬ÕâЩ״̬ÂëºÍHttp״̬Âë»ù±¾Ïà¶ÔÓ¦£¬
ÆäÖÐ0±íʾΪSuccess£¬Í¬Ê±¶¨ÒåÁ˸öIsSuccess()µÄ·½·¨À©Õ¹£¬´ËֵΪ¿ìËÙÅжϷµ»ØÊÇ·ñÕýÈ·¡£
+msg-¶ÔӦ״̬ÂëµÄÏûÏ¢
- Message-¶ÔӦ״̬ÂëµÄÏûÏ¢
- IsSuccess-¿ìËÙÅжÏ״̬ÂëÊÇ·ñÕýÈ·£¬Ä¬ÈÏ0ʱÕýÈ·
+## Encrypt
+ϵͳ¼ÓÃÜ»ù´¡¿â
+Ö÷Òª°üº¬£ºmd5£¨Md5£©,aes£¨AesRijndael£©,sha1£¨Sha1£©,hmacsha1£¨HmacSha1-¼ÓÑÎsha1¼ÓÃÜ·½Ê½Õ⼸ÖÖ¼ÓÃÜËã·¨
-###Encrypt
- ϵͳ¼ÓÃÜ»ù´¡¿â
- Ö÷Òª°üº¬£ºmd5£¨Md5£©,aes£¨AesRijndael£©,sha1£¨Sha1£©,hmacsha1£¨HmacSha1-¼ÓÑÎsha1¼ÓÃÜ·½Ê½Õ⼸ÖÖ¼ÓÃÜËã·¨
+## Extention
+ϵͳÀ©Õ¹·½·¨£¬Ö÷Òª°üº¬£º
+×Ö·û´®×ª»¯À©Õ¹£¬È磺 "0".ToInt32()£¬"xxx".Base64UrlEncode()µÈ
+ʱ¼äת»¯À©Õ¹£¬È磺DateTime.Now.ToUtcSeconds() µÈ
+TaskÀ©Õ¹·½·¨£¬È磺 Task.WaitResult() µÈ
+UrlCodeÀ©Õ¹·½·¨£¬Èç "name=n&code=1".UrlEncode();
+ö¾ÙÀ©Õ¹·½·¨£¬È磺 typeof(Enum).ToEnumDirs();
+xmlÐòÁл¯À©Õ¹·½·¨£¬ È磺 "test".DeserializeXml();
-###Extention
- ϵͳÀ©Õ¹·½·¨£¬Ö÷Òª°üº¬£º
- ×Ö·û´®×ª»¯À©Õ¹£¬È磺 "0".ToInt32()£¬"xxx".Base64UrlEncode()µÈ
- ʱ¼äת»¯À©Õ¹£¬È磺DateTime.Now.ToUtcSeconds() µÈ
- TaskÀ©Õ¹·½·¨£¬È磺 Task.WaitResult() µÈ
- UrlCodeÀ©Õ¹·½·¨£¬Èç "name=n&code=1".UrlEncode();
- ö¾ÙÀ©Õ¹·½·¨£¬È磺 typeof(Enum).ToEnumDirs();
- xmlÐòÁл¯À©Õ¹·½·¨£¬ È磺 "test".DeserializeXml();
+## Plugs
+ϵͳÀ©Õ¹Ä£¿éºÍ¶ÔÓ¦µÄĬÈÏʵÏÖ£¬Í¬Ê±ÔÚPlugsĿ¼Ï¶¨ÒåÁËModuleNamesÀ࣬º¬ÓÐϵͳ³£¼ûÄ£¿é¡£
+Èç¹ûÄãÓи߼¶¶¨ÖÆÐèÇ󣬱ÈÈçÔÚϵͳ²»Í¬Ä£¿éʹÓòå¼þµÄ²»Í¬ÊµÏÖ£¬¿ÉÒÔÔÚ³ÌÐòÈë¿Ú´¦¶¨ÒåÖ¸¶¨Ä£¿éÃû³Æ¶ÔÓ¦µÄ²å¼þʵÏÖ£¬¶øÎÞÐèÐÞ¸ÄÒµÎñ´úÂë
+
+ÕâÀïÖ÷Òª°üº¬ÒÔÏÂÈýÖÖ²å¼þ
+
+### Ò».CachePlug
+»º´æÄ£¿é£¬ÄÚ²¿¶¨ÒåÁËICachePlug½Ó¿Ú£¬ºÍÒ»¸ö DefaultCachePlugĬÈÏ»º´æÊµÏÖ£¬
+ʹÓÃʱ£¬¿ÉÒÔÖ±½ÓʹÓà CacheUtil ¾²Ì¬ÀàÏµķ½·¨£¬±ÈÈçSet·½·¨
- »¹ÓÐ×Ô¶¨ÒåÑéÖ¤ÊôÐÔÏñ OSRequiredAttributeµÈ£¬¿ÉÒÔʹÓÃIsOsValidateÀ´ÑéÖ¤ÊÇ·ñÑé֤ͨ¹ý¡£
+ CacheUtil.Set("key","va",TimeSpan.FromHours(1),"moduleName")
-###Modules
- ϵͳÀ©Õ¹Ä£¿éºÍ¶ÔÓ¦µÄĬÈÏʵÏÖ,ÆäÖÐÖ÷ÒªÓÐϱßÈý¸ö²¿·Ö:
+ÆäÖÐ modulename ÊÇ¿ÉÑ¡²ÎÊý
+Èç¹û´«È룬ÔòÔÚ³ÌÐòÈë¿Ú´¦¿ÉÒÔ¸ø OsConfig.CacheProvider(Func) ίÍи³Öµ
+ ÎÒÃǾͿÉÒÔ¸ù¾ÝʹÓÃÆµÂÊ£¬Êý¾ÝÖØÒªÐÔ£¬ÒÔ¼°ºÍÆäËüϵͳµÄÒÀÀµÇé¿öÀ´¶¨ÒåÌØ¶¨Ä£¿éϵIJ»Í¬»º´æÊµÏÖ
+ ±ÈÈçÉèÖò»Í¬µÄÄ£¿é·Ö±ðRedis£¬MemcacheµÈ£¬ÓÖ»òÕßÎÒÃÇ¿ÉÒÔÉèÖò»Í¬µÄÄ£¿éʹÓÃRedisµÄ²»Í¬ÊµÀý¡£
+
+µ±È»£¬Èç¹ûÕâ¸öίÍÐûÓж¨Ò壬»òÕßίÍзµ»Ø¿Õ£¬¾Í»áʹÓÃĬÈÏ»º´æÊµÏÖ£¬Èç¹ûÎÒÃÇÏ£Íûȫվ»»µ½ÏàͬµÄ»º´æÊµÏÖ£¬ÔòÖ±½Ó·µ»Ø¶ÔӦʵÏÖ¼´¿É¡£
-####Ò».CacheModule
- »º´æÄ£¿é
-
-####¶þ.DirConfig
- ×ÖµäÅäÖÃÄ£¿é
-
-####Èý.LogModule
- ÈÕ־ģ¿é
+### ¶þ.DirConfigPlug
+ÅäÖÃÄ£¿é£¬ ºÍ»º´æµÄʵÏÖÐÎʽÏàͬ£¬¶¨ÒåÁËÒ»¸ö IDirConfigPlug ½Ó¿Ú£¬ºÍÒ»¸ö DefaultDirConfigPlug ʵÏÖ
+ʹÓÃʱ£¬Ö±½ÓʹÓà DirConfigUtil ¾²Ì¬Àà¡£
+ĬÈÏʵÏÖÊÇÀûÓÃXmlÐòÁл¯µÄ·½Ê½£¬±£´æµ½±¾µØÎļþÖУ¬ÒÀÈ»¿ÉÒÔ¶¨ÒåÖ¸¶¨Ä£¿éÃû³ÆµÄÌØ¶¨Êý¾ÝÔ´µÄÅäÖÃʵÀý¡£
+±ÈÈçÏîÄ¿±¾ÉíµÄÅäÖÿÉÒÔÉèÖÃÊý¾Ý¿âʵÏÖ£¬ÒÀÀµÆäËûÏîÄ¿µÄ£¬¿ÉÒÔͨ¹ý½Ó¿ÚʵÏÖ¡£
+
+
+### Èý.LogPlug
+ÈÕ־ģ¿é£¬Ò»Ñù£¬ÄÚ²¿¶¨ÒåÁËÒ»¸ö ILogPlug ½Ó¿Ú£¬ºÍÒ»¸ö DefaultLogPlug ĬÈÏʵÏÖ
+ʹÓÃʱ£¬Ö±½ÓʹÓà LogUtil ¾²Ì¬Àà¡£
+ĬÈÏʵÏÖÊÇͨ¹ý±£´æµ½±¾µØÎļþµÄÐÎʽʵÏÖ£¬Ã¿¸öСʱÉú³ÉÒ»¸öÎļþ¡£
+ÒÀÈ»¿ÉÒÔ¶¨ÒåÖ¸¶¨Ä£¿éÃû³ÆµÄÌØ¶¨Êý¾ÝÔ´µÄÅäÖÃʵÀý£¬±ÈÈçÓÐЩ·¢ËÍÓʼþ£¬ÓÐЩ·¢ËͶÌÐÅ֪ͨµÈ¡£