آشنائی با سيستم پيكربندی برنامه های وب در ASP.NET 2.0  New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 جمعه  6  مرداد  1396  2017  Jul.  28   Friday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 سيستم پيكربندی ASP.NET 2.0 (بخش دوم )

 مديريت وب

10782

6

4.2

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

سيستم پيكربندی  ASP.NET 2.0

سيستم پيكربندی  ASP.NET 2.0 (بخش دوم )
در بخش اول با اصول اوليه سيستم پيكربندی ASP.NET 2.0 آشنا شديم . در اين بخش به بررسی برخی از تنظميات پيكربندی خواهيم پرداخت .

‍‍‍Connection String
در ASP.NET 1.x ، اطلاعات مربوط به connection string در بخش <appSetting> ذخيره می گرديد . در ASP.NET 2.0 ، تمامی اطلاعات در ارتباط با connection-string در يك  بخش جديد با نام <connectionStrings> ذخيره می گردد .
ذخيره اطلاعات connection - string در بخش <appSetting>  دارای چالش های مختص به خود است :

  • زمانی كه اطلاعات connection string در بخش appSetting  ذخيره می گردد ، برای يك كنترل مرتبط با داده نظير SqlCacheDependency و يا MembershipProvider  امكان دستيابی به اطلاعات وجود ندارد . 

  • ايمن سازی Connection string با استفاده از الگوريتم های رمزنگاری چالش های خاص خود را دارد .

  • ويژگی فوق صرفا" در ارتباط با برنامه های ASP.NET نبوده و  تمامی برنامه های دات نت نظير Windows Forms , Web Service و ساير موارد ديگر را نيز شامل می شود .

با توجه به اين كه اطلاعات connection string مستقل از بخش appSetting ذخيره می گردد ، می توان آنان را با استفاده از مجموعه متد ConnectionString بازيابی نمود .
كد زير نحوه ذخيره  connection string در فايل Web.config  را نشان می دهد .

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
      <add
           name="MyConnectionString1"
           connectionString="Data Source providerName="System.Data.SqlClient" />
   </connectionStrings>
</configuration>

نحوه بازيابی اطلاعات يك connection string در برنامه :

Public Sub Page_Load (sender As Object, e As EventArgs)
...
Dim dbConnection as New _
   SqlConnection(ConfigurationSettings.ConnectionStrings(
"MyConnectionString1"))
...
End Sub

پيكربندی Session State
state management يكی از مسائل مهم در زمان پياده سازی برنامه های وب است كه می بايست با توجه به اهميت آن به درستی با ابعاد آن آشنا گرديد . در گذشته ای نه چندان دور ( ده سال پيش ) ، با اين كه برای پياده سازی برنامه های كامپيوتری از معماری client-server  استفاده می گرديد ولی عملا"  در معماری فوق ما دارای يك fat client و يك  fat server می باشيم كه برای ذخيره state از امكانات موجود در سمت سرويس دهنده و يا سرويس گيرنده استفاده می شود . با توجه به اين كه در  معماری فوق ، يك ارتباط دائم بين سرويس گيرندگان و سرويس دهنده وجود دارد برای ذخيره و نگهداری state با مشكل خاصی مواجه نمی شويم .
در برنامه های وب گفتگوی بين يك سرويس گيرنده و يك سرويس دهنده از طريق پروتكل HTTP انجام می شود و جملگی به خوبی می دانيم كه اين پروتكل يك پروتكل stateless است و ارتباط با يك سرويس دهنده از راه دور در زمان مورد نياز ايجاد و در ادامه و پس از سرويس دهی ، غيرفعال می شود . با اين كه HTTP 1.1 از يك روش Keep-alive استفاده می نمايد ولی سرويس دهنده نمی تواند درخواست های ايجاد شده توسط يك سرويس گيرنده را تشخيص دهد . 
برای ذخيره و نگهداری state  از گزينه های متعددی استفاده می گردد كه session يك نمونه در اين زمينه است .شی Session متداولترين محلی است كه می توان اطلاعات مربوط به وضعيت برنامه  و كاربران را  در آن ذخيره و نگهداری نمود . برای پياده سازی session از يك Hashtable استفاده می گردد و  داده بر اساس تركيب زوج  كليد و مقدار ذخيره می شود .
Session در ASP.NET 2.0 يك مفهوم جديد نيست و متاثر از ماهيت پروتكل HTTP  است ( Stateless ) و قبل از ASP.NET و حتی ASP كلاسيك وجود داشته است .

داده Session در چه مكانی ذخيره می گردد ؟
شی Session يك روش موثر برای ذخيره و نگهداری وضعيت يك برنامه و يا كاربران آن را ارائه می نمايد. ASP.NET به همراه سه Storage Provider ارائه شده است :

  • In-Process Session State Store : اطلاعات session در Cache ( حافظه ) ذخيره می گردد .

  • Out-of-Process Session State Store : اطلاعات Session در State Server Service ذخيره می گردد ( asp_net_state.exe )

  • Sql Session State Store : اطلاعات session در بانك اطلاعاتی SQL ذخيره می گردد . برای پيكربندی از aspnet_regsql.exe استفاده می گردد .

در  ASP.NET 2.0 ، يك قابليت جديد با نام custome به مجموعه فوق اضافه شده است . با استفاده از گزينه فوق ، پياده كنندگان می توانند داده session را در يك مكان دائم ذخيره نمايند . مثلا" ASP.NET 2.0 امكان ذخيره داده session را در  برخی بانك های اطلاعاتی  نظير Oracle,DB2 و يا Sybase ندارد . در صورتی كه بخواهيم داده session را در يكی از  بانك های اطلاعاتی فوق و يا يك فايل XML ذخيره نمائيم ، می توان از يك Provider class سفارشی استفاده نمود .
برای پيكربندی اطلاعات session از عنصر <sessiononState > در فايل web.config  استفاده می گردد :

<configuration>
   <system.web>
     <sessionState mode="Off|InProc|StateServer|SQLServer|Custom" ../>
   </system.web>
...
</configuration>

 
در ادامه به بررسی مختصر هر يك از گزينه های فوق خواهيم پرداخت .

In-Process Session State Store  : متداولترين و در عين حال سريعترين روش پيكربندی session state در ASP.NET 2.0 می باشد ( مقدار mode برابر inproc در نظر گرفته می شود )  .در اين روش داده Session  در cache داخلی HttpRuntime ذخيره شده و به صورت live قابل دستيابی است . با توجه به اين كه داده session در حافطه ذخيره می گردد ، به سرعت می توان به آن دستيابی داشت ( ضرورتی ندارد  داده از يك مكان ديگر به درون حافظه انتقال يابد ).  داده seesion تا زمان اعتبار session در حافظه موجود می باشد و پس از time out فضای اشغال شده آزاد می گردد . 

Out-of-Process Session State Store : داده  session  در يك process كه به عنوان يك سرويس ويندوز اجراء می گردد ، نگهداری می شود ( aspnet_state.exe ) .
 State Service به صورت پيش فرض اجراء نمی گردد و برای فعال كردن آن می توان از دستور net start aspnet_sate استفاده نمود . به صورت پيش فرض ، سرويس فوق از پورت 42424 استفاده می نمايد . در صورت ضرورت می توان با استفاده از كليد ريجستری زير آن را تغيير داد .

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port

برای استفاده از روش فوق كافی است كه مقدار Inproc به StateServer در فايل web.config تغيير داد . همچنين می بايست از خصلت StateConnectionString به منظور مشخص نمودن IP و شماره پورتی كه Session State Service بر روی آن اجراء شده است ، استفاده نمود .

<configuration>
  <system.web>
     <sessionState mode="StateServer"
 
         stateConnectionString="tcpip=127.0.0.1:42424"/>
  </system.web>
</configuration>

Sql Session State Store : داده session در يك بانك اطلاعاتی SQL ذخيره می گردد .

<configuration>
  <system.web>
    <sessionState
        mode="SQLServer"
        sqlConnectionString="data source= TestSessionServer;
        user id=TestWebUser;password=Test"
        cookieless="false"
        timeout="20"
     />
 </system.web>
</configuration>.

Custom State Store :معماری Sessin state در ASP.NET 2.0 بگونه ای طراحی شده است كه امكان افزودن Provider به آن وجود دارد ( مشتق شده از كلاس SessionStateStoreProviderBase  ) . در صورتی كه بخواهيم Provider اختصاصی خود را ايجاد و يا از يك  third-party provider استفاده نمائيم ، می بايست مقدار خصلت mode را Custome در نظر گرفت . در چنين مواردی ، لازم است كه custom provider assembly مشتق شده از كلاس SessionStateStoreProviderBase را مشخص نمود .

<configuration>
  <system.web>
    <sessionState
        mode="Custom"
          CustomProvider="CustomStateProvider">
          <providers>
             <add name="CustomStateProvider"
                type="CustomStateProviderAssembly,
                CustomStateProviderNamespace.CustomStateProviderSateProvider"/>
           </providers>
   </sesisonState>
 </system.web>
</configuration>

 مثال : كد زير يك نمونه از پيكربندی sessionState  در فايل web.config را نشان می دهد :

<sessionState
      mode="StateServer"
      cookieless="false"
      timeout="20"
      stateConnectionString="tcpip=TestSessionStore:42424"
     
stateNetworkTimeout="60"
      sqlConnectionString=""
/>

توضيحات :

  • mode : نوع ذخيره سازی اطلاعات session را مشخص می نمايد . در اين رابطه از پنج گزينه Off, InProc, StateServer, SQLServer  و Custom استفاده می گردد . كه مقدار پيش فرض InProc است .  

  •  cookieless : مشخص می نمايد كه آيا از HTTP cookieless Session Key management حمايت می گردد .

  • timeout : مدت زمان حيات Session را مشخص می نمايد  . مقدار timeoute بر اساس زمان درخواست ارزيابی می گردد . مثلا" در صورتی كه مقدار timeout بيست دقيقه باشد و در خواستی در ساعت ده و ده دقيقه دريافت گردد ، timeout در ساعت ده و سی دقيقه به اتمام می رسد .

  • stateConnnectionString :از خصلت  فوق به منظور مشخص نمودن آدرس  TCP/IP و پورت جهت ارتباط يا  Windows Service providing state management استفاده می گردد ( در مواردی كه mode=StateServer در نظر گرفته شود ) .

  • stateNetworkTimeout : مقدار timeout ( بر حسب ثانيه ) را  در زمان ذخيره state در يك out-of-process session ( نظير  StateServer ) ، مشخص می نمايد . 

  • sqlConnectionString : از خصلت فوق  جهت ارتباط با بانك اطلاعاتی SQL Server  برای ذخيره و بازيابی داده session استفاده می گردد ( در مواردی كه mode=SQLServer در نظر گرفته شود) . 

پيكربندی Session State  با استفاده از Connection string  : كد زير يك نمونه از پيكربندی Session State با استفاده از connection string را نشان می دهد :

<configuration>
 <connectionStrings>
   <add name = "TestSessionState"
      connectionString = "data source=TestSessionServer;
      user id=TestWebUser;password=test" />
 </connectionStrings>
 <system.web>
   <sessionState
     mode="SQLServer"
     sqlConnectionString="TestSessionState"
     cookieless="false"
     timeout="20"
    />
 </system.web>
</configuration>

در بخش سوم به بررسی ساير تنظيمات پيكربندی خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382