تبلیغات
آموزشASP.NET - سیستم پیكربندی ASP.NET 2.0 (بخش دوم )
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
پنجشنبه 11 فروردین 1390 :: نویسنده : ارش کاکاوند
در بخش اول با اصول اولیه سیستم پیكربندی 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>

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





    نوع مطلب :
    برچسب ها :
    لینک های مرتبط :


    دوشنبه 27 شهریور 1396 07:27 ق.ظ
    I am regular reader, how are you everybody? This
    post posted at this web page is in fact fastidious.
    پنجشنبه 23 شهریور 1396 05:54 ب.ظ
    Hi, I do believe this is an excellent website. I stumbledupon it ;)
    I'm going to revisit once again since I book marked it.
    Money and freedom is the greatest way to
    change, may you be rich and continue to guide other people.
    شنبه 18 شهریور 1396 06:20 ق.ظ
    hi!,I like your writing very so much! proportion we be in contact extra about your
    post on AOL? I need an expert in this house to unravel my problem.
    Maybe that is you! Having a look forward to peer you.
    چهارشنبه 15 شهریور 1396 04:30 ق.ظ
    It's hard to find well-informed people on this subject, however, you sound like you know what you're talking about!
    Thanks
    دوشنبه 30 مرداد 1396 01:19 ب.ظ
    Hi there, its nice paragraph about media print, we all be
    aware of media is a fantastic source of facts.
     
    لبخندناراحتچشمک
    نیشخندبغلسوال
    قلبخجالتزبان
    ماچتعجبعصبانی
    عینکشیطانگریه
    خندهقهقههخداحافظ
    سبزقهرهورا
    دستگلتفکر


    درباره وبلاگ

    سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

    مدیر وبلاگ : ارش کاکاوند
    مطالب اخیر
    نویسندگان
    صفحات جانبی
    نظرسنجی
    شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








    جستجو

    آمار وبلاگ
    کل بازدید :
    بازدید امروز :
    بازدید دیروز :
    بازدید این ماه :
    بازدید ماه قبل :
    تعداد نویسندگان :
    تعداد کل پست ها :
    آخرین بازدید :
    آخرین بروز رسانی :