Asp.Net Memcachedインストール構成使用、セキュリティ

19020 ワード

Memcachedインストール構成の使用
一、ソフトウェアを準備する必要があります:VS.NET(05/08)SQLSERVER memcachedサーバー側とクライアントクラスライブラリ(オープンソースソフトウェア、ダウンロード可)のうち、クライアントクラスライブラリには以下のDLLが含まれています:Memcached.ClientLibrary.dll       ICSharpCode.SharpZipLib.dll
二、Windows下のMemcacheインストール:1.memcacheのwindows安定版をダウンロードして、あるディスクの下に解凍して、例えばc:memcached 2.端末(すなわちcmdコマンドインタフェース管理者としてインストールし、まずcmd.exeの元のファイル(c:windowssystem 32cmd.exe)を見つけ、右クリックして管理者が入り、次のステップはxpインストール方法と同じ)の下に「c:memcachedmemcached.exe-d install’インストール3.再入力:'c:memcachedmemcached.exe-d start’が起動します.NOTE:今後memcachedはwindowsのサービスとして起動するたびに自動的に起動します.これでサーバ側のインストールが完了しました.4.監視e:memcachedmemcached.exe -p 11121 -m 64 -vv
三、ASPを創立する.NETプロジェクトはASPを作成する.NETWOBプロジェクトは、MMCWEBと命名され、上述したいくつかのクライアントクラスライブラリの参照を追加します.四、構成memcachedはlog 4 netを使用しているので、まずlog 4 netをwebに配置します.configでconfigSectionsノードを見つけ、以下の内容
を追加してconfigSectionsノードの外に、                                                                                                                                        デバッグを開始し、構成のエラーメッセージが表示されず、Webサイトのディレクトリの下にフォルダLogFilesがあり、log 4 net構成が成功したことを示します.
五、SockIOPoolSockIOPoolを初期化するのは何ですか?SockIOPoolは、Memcachedクライアントが提供するソケット接続プールであり、一般的にはMemcachedサーバ側とデータを交換するオブジェクトである.SockIOPoolはアプリケーションの起動時に一度初期化すればいいので、GLOBALにこの仕事を置きます.ASAX.CSのApplication_Startメソッドではchar[]separator={','};            string[] serverlist = ConfigurationManager.AppSettings["Memcached.ServerList"].Split(separator);           //initialize the pool for memcache servers            try            {                SockIOPool pool = SockIOPool.GetInstance();                pool.SetServers(serverlist);                pool.InitConnections = 3;                pool.MinConnections = 3;                pool.MaxConnections = 50;                pool.SocketConnectTimeout = 1000;                pool.SocketTimeout = 3000;                pool.MaintenanceSleep = 30;                pool.Failover = true;                pool.Nagle = false;                pool.Initialize();}catch(Exception err){//ここでLog 4 NetでErrorを記録できます!}注意AppSettings["Memcached.ServerList"]はWEB.CONFIGに設置されているのでWEB.CONFIGのappSettingsのサブノードには、デバッグサーバを起動する必要があります.エラーのログがなければ、IO接続プールが正常にオープンしたことを示します.
構成情報:
<?xml version="1.0"?>  

  

<!--  

         ASP.NET          ,     

  http://go.microsoft.com/fwlink/?LinkId=169433  

  -->  

  

<configuration>  

  

  <!--Enyim.Caching  (   Log4Net  )   For Memcached-->  

  

  <!--<configSections>  

    <sectionGroup name="enyim.com">  

      <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />  

    </sectionGroup>  

  </configSections>  

  <enyim.com protocol="Binary">  

    <memcached>  

      <servers>  

        <add address="127.0.0.1" port="11121"  />  

      </servers>  

      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />  

    </memcached>  

  </enyim.com>-->  

   

  <!--The Enyim.Caching   End -->  

  

  <!--MemcachedProviders     -->  

  <configSections>  

  <section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders"  

        allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>  

  <sectionGroup name="enyim.com">  

    <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />  

  </sectionGroup>  

  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>  

  </configSections>  

  <cacheProvider defaultProvider="MemcachedCacheProvider">  

    <providers>  

      <add name="MemcachedCacheProvider"  

     type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders"  keySuffix="_MySuffix_" defaultExpireTime="2000"/>  

    </providers>  

  </cacheProvider>  

  <enyim.com>  

    <memcached>  

      <servers>  

        <!-- put your own server(s) here-->  

        <add address="127.0.0.1" port="11121" />  

      </servers>  

      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />  

    </memcached>  

  </enyim.com>  

  

  <log4net>  

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">  

      <layout type="log4net.Layout.PatternLayout">  

        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}]- %message%newline" />  

      </layout>  

    </appender>  

    <root>  

      <priority value="WARN"/>  

      <appender-ref ref="ConsoleAppender">  

        <filter type="log4net.Filter.LevelRangeFilter">  

          <levelMin value="WARN"/>  

          <levelMax value="FATAL"/>  

        </filter>  

      </appender-ref>  

    </root>  

  </log4net>  

   

  <!--The MemcachedProviders   End-->  

    

  <connectionStrings>  

    <add name="ApplicationServices"  

         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"  

         providerName="System.Data.SqlClient" />  

  </connectionStrings>  

    

    

  <system.web>  

    <compilation debug="true" targetFramework="4.0" />  

  

    <authentication mode="Forms">  

      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />  

    </authentication>  

  

    <membership>  

      <providers>  

        <clear/>  

        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"  

             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"  

             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"  

             applicationName="/" />  

      </providers>  

    </membership>  

  

    <profile>  

      <providers>  

        <clear/>  

        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>  

      </providers>  

    </profile>  

  

    <roleManager enabled="false">  

      <providers>  

        <clear/>  

        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />  

        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />  

      </providers>  

    </roleManager>  

  

  </system.web>  

  

    

    

   

  <system.webServer>  

     <modules runAllManagedModulesForAllRequests="true"/>  

  </system.webServer>  

</configuration>  

 
六、Memcachedを使ってやっと本題に入りましたが、使う前にデータを用意する必要があります.エンティティクラスPeopleを作成し、Serializableプロパティを追加します!!!対応するデータベースに、テーブルを1枚追加し、フィールドはエンティティクラスに対応し、テストデータを挿入します.永続層とビジネス層の設計は省略され、ILIST、DATASETの場合、いくつかのデータを提供する責任を負っています.Memcachedは簡単に使用できます.例えば、バックグラウンドでPeopleタイプのデータのセットを検索し、peopleListというarraylistに入れます.そして、このarraylistは頻繁に使用しなければなりません.MemcachedClient mc=new MemcachedClient()だけです.mc.EnableCompression = true;mc.Set(key, peopleList);上のkeyはこのarraylistにアクセスするためのキーで、Memcachedのデータはキー-値ペアとして保存されています.いったんmc.KeyExists(key)がTRUEである、return mcを用いる.Get(key)as ArrayListはデータを抽出する、削除する場合はreturn mcを用いる.Delete(key);などなど.自分で考えてもいいです.以上はデモにすぎませんが、実際にはデータキャッシュは複雑で煩雑な作業であり、バックグラウンドコードの階層化最適化だけでなく、データベースがビッグデータ量にアクセスするポリシーとチューニングも必要です.
Memcachedのセキュリティ
Memcachedのワークフローを理解している場合は、キャッシュへのアクセス中に制御する権限のない関連プロセスに気づいているかもしれません.もしあなたのデータが非常に重要でなければ、この方面の安全問題を心配する必要はありません.必要であれば、以下の点でより完全に使用することができます.
唯一のKeyを使用:Memcachedのデータは大きな配列の形で存在するので、唯一のkeyを使用する必要があります.あなたのデータにアクセスする唯一の方法は、データを保存するkeyを通じて、それ以外にクエリーできる方法はありません.
あなたのMemcached器の安全を保証します:Memcached自身は認証メカニズムがないため、Memcachedのサーバーに対して照会して、すべてファイアウォールを通じて行うべきです.ファイアウォールでルールを設定し、どのサーバがアクセスを許可しているのか、アクセスを許可していないのかを設定できます.
あなたのデータを暗号化します:あなたはデータとKeyを暗号化の方式でMemcachedの中で保存することができます.これには追加のCPU時間がかかりますが、データの安全のために、状況が許す限り、この方法は試してみる価値があります.