جمعه, ۲۸ دی, ۱۴۰۳ / 17 January, 2025
مجله ویستا

سیستم پیکربندی ASP NET ۲ ۰


سیستم پیکربندی ASP NET ۲ ۰

پیاده کنندگان برنامه های وب که از فن آوری ASP کلاسیک به منظور پیاده سازی برنامه های وب در گذشته ای نه چندان دور استفاده می کردند و شاید هم اینک نیز استفاده می نمایند , به یاد دارند که اطلاعات پیکربندی برنامه های فوق به صورت باینری و در محلی با نام متابیس IIS , ذخیره می گردد

● سیستم پیکربندی ASP.NET ۲.۰

پیاده کنندگان برنامه های وب که از فن آوری ASP کلاسیک به منظور پیاده سازی برنامه های وب در گذشته ای نه چندان دور استفاده می کردند ( و شاید هم اینک نیز استفاده می نمایند ) ، به یاد دارند که اطلاعات پیکربندی برنامه های فوق به صورت باینری و در محلی با نام متابیس IIS ، ذخیره می گردد . پیاده کنندگان برنامه های وب برای اعمال تغییرات لازم در متابیس از دو گزینه متداول استفاده می کردند : نوشتن اسکریپت های مورد نیاز و یا استفاده از کنسول مدیریتی برنامه IIS ( سرویس دهنده وب مایکروسافت ) .

برخلاف ASP کلاسیک ، در ASP.NET ۱.x حضور متابیس ها کم رنگ گردید و در مقابل ، استفاده از یک سیستم پیکربندی مبتنی بر xml مورد توجه قرار گرفت . علیرغم این که سیستم فوق دارای انعطاف بمراتب بیشتری نسبت به نسخه قبلی است ولی امکانات مدیریتی مناسبی را به منظور ویرایش فایل های پیکربندی در اختیار پیاده کنندگان برنامه های وب قرار نمی دهد . تنها گزینه موجود برای ویرایش یک فایل پیکربندی ، برخورد با فایل پیکربندی به عنوان یک فایل xml و بهنگام سازی آن فایل بر اساس ماهیت فایل های xml است . مهمترین مشکل رویکرد فوق ، برخورد با تمامی بخش های فایل پیکربندی به عنوان گره های xml است .

در ASP.NET ۲.۰ ، امکانات و پتانسیل های متعددی به منظور مدیریت پیکربندی برنامه های وب ارائه شده است با این هدف که بتوان با سادگی و سرعت بیشتری پیکربندی یک برنامه وب را انجام داد .خواندن و ویرایش فایل های پیکربندی در یک ماشین محلی و یا از راه دور از جمله مهمترین ویژگی های ارائه شده در ASP.NET ۲.۰ می باشد .

اطلاعات پیکربندی یک برنامه ASP.NET در دو فایل مهم Xml ذخیره می گردد . از Xml برای تشریح خصلت ها و رفتار جنبه های مختلف برنامه های ASP.NET استفاده می‌شود . سیستم پیکربندی ASP.NET از دو فایل پیکربندی استفاده می نماید :

▪ machine.config : فایل پیکربندی سرویس دهنده

▪ Web.Config : فایل پیکربندی برنامه

با توجه به ماهیت فایل های پیکربندی ( فایل هائی از نوع xml ) ، عناصری که مسئولیت تشریح پیکربندی را برعهده دارند نسبت به حروف بزرگ و کوچک حساس می باشند .

در مثال زیر ، یک نمونه فایل web.config به همراه بخش مربوط به معرفی <sessionState> یک برنامه وب نشان داده شده است .

?xml version="۱.۰" encoding="UTF-۸" ?

configuration

system.web

sessionState

mode="InProc"

stateConnectionString="tcpip=۱۲۷.۰.۰.۱:۴۲۴۲۴"

stateNetworkTimeout="۱۰"

sqlConnectionString="data source=۱۲۷.۰.۰.۱; user id=sa; password=test"

cookieless="false"

timeout="۲۰"/

/system.web

/configuration

● مزایای استفاده از یک فایل xml برای پیکربندی (در مقابل یک متابیس باینری )

امکان خواندن اطلاعات پیکربندی وجود داشته و می توان به سادگی و با استفاده از یک ویرایشگر متن نظیر NotePad آنان را ویرایش نمود ( گرچه توصیه می گردد که در این رابطه از ویژوال استودیو ۲۰۰۵ و یا ادیتوری که قادر به تشخیص تگ های xml می باشد ، استفاده گردد). فایل پیکربندی را می توان به سادگی از یک سرویس دهنده به سرویس دهنده دیگر منتقل نمود . ویژگی فوق در یک Web Farm بسیار مفید و موثر می باشد .

پس از انجام تغییرات مورد نیاز در یک فایل پیکربندی ، ASP.NET به صورت اتوماتیک تغییرات ایجاد شده را تشخیص و آنان را در ارتباط با برنامه اعمال خواهد کرد . ASP.NET بدین منظور یک نمونه جدید از برنامه را ایجاد و کاربران را به برنامه جدید هدایت می نماید .

پس از اعمال تغییرات در پیکربندی یک برنامه ASP.NET ، ضرورتی ندارد که مدیریت برنامه سرویس دهنده وب را متوقف و مجددا" فعالیت آن را آغاز نماید .

سیستم پیکربندی ASP.NET قابل توسعه است و اطلاعات مرتبط با یک برنامه را می توان به سادگی ذخیره و بازیابی نمود .

اطلاعات حساس ذخیره شده در سیستم پیکربندی ASP.NET ۲.۰ را می توان در صورت تمایل به صورت رمزشده ذخیره نمود ( اقدامی در جهت افزایش امنیت و ایمن سازی برنامه های وب خصوصا" اطلاعات حساس مرتبط با آنان ) .

● فایل پیکربندی سرویس دهنده : machine.config

هر سرویس دهنده ASP.NET دارای یک فایل پیکربندی با نام machine.config است که در زمان نصب فریمورک بر روی سیستم ایجاد می گردد . فایل فوق در مسیر C:\Windows\Microsoft.NET\Framework ۲.۰xxxxx نصب و از محتویات آن به عنوان تنظیمات پیش فرض در تمامی برنامه های ASP.NET نصب شده بر روی سرویس دهنده استفاده می گردد . با توجه به نقش مهم این فایل در عملکرد تمامی برنامه های موجود بر روی کامپیوتر ( ویندور ، وب ) لازم است که تغییر در فایل فوق با دقت خاصی انجام شود و نسبت به نوع کار و دامنه متاثر از تغییرات شناخت کافی وجود داشته باشد .

در صورتی که بر روی سیستم چندین نسخه از فریمورک دات نت نصب شده باشد ، هر نسخه دارای فایل پیکربندی machine.config مختص به خود است . مثلا" در صورتی که بر روی کامپیوتر نسخه های ASP.NET ۱.۱ ، ASP.NET ۱.۰ و ASP.NET ۲.۰ نصب شده باشد ، هر نسخه فریمورک دارای فایل machine.config مختص به خود است . این بدان معنی است که بر روی سرویس دهنده فوق سه فایل پیکربندی machine.config وجود خواهد داشت .

علاوه بر فایل machine.config ، فریمورک دات نت دو فایل دیگر را به اسامی machine.config.default و machine.config.comments نیز نصب می نماید . از فایل اول به عنوان نسخه backup فایل machine.config استفاده می گردد. در صورتی که بخواهیم به تنظیمات اولیه برگردیم ، کافی است تنظیمات موجود در فایل machine.config.default را به فایل machine.config کپی نمود . در فایل دوم ( machine.config.Comments ) ، هر بخش از فایل پیکربندی تشریح می گردد .

ASP.NET runtime ، از دو فایل فوق استفاده نمی نماید و صرفا" بدین جهت نصب شده اند تا در صورت ضرورت از آنان به منظور برگشت به حالت اولیه استفاده نمود ( default factory setting ) .

● فایل پیکربندی برنامه : web.config

برخلاف فایل machine.config ، هر برنامه ASP.NET دارای نسخه اختصاصی تنظیمات پیکربندی مختص به خود است که در فایلی با نام web.config ذخیره می گردد . در صورتی که برنامه وب دارای چندین Subfolder باشد ، هر subfolder دارای فایل web.config مختص به خود است که محتویات آن از تنظیمات موجود در فایل پیکربندی parent به ارث رسیده است و یا تنظیمات مورد نظر را خود تعریف می نماید .

برای بهنگام سازی سرویس دهندگان در farm ( بر اساس تنظمیات جدید ) ، می توان به سادگی فایل web.config را به دایرکتوری مربوط به برنامه کپی نمود . در چنین مواردی ضرورتی به دستیابی سرویس دهنده محلی و راه اندازی آن وجود نداشته و برنامه ادامه فعالیت خود را به صورت طبیعی و بر اساس تنظیمات جدید انجام خواهد داد .

● نحوه بکارگیری پیکربندی

زمانی که ASP.NET runtime ، تنظمیات پیکربندی را برای یک درخواست وب بکار می گیرد ، فایل machine.config در یک مجموعه ترکیب و اطلاعات فوق در ارتباط با برنامه مورد نظر بکار گرفته می شوند . تنظیمات پیکربندی از برنامه وب parent به ارث برده می شود . فایل machine.config به عنوان parent تمامی برنامه های وب در نظر گرفته می شود .

پیکربندی هر برنامه وب منحصربفرد است گرچه این تنظیمات از parent به ارث رسیده باشند . مثلا" در صورتی که فایل web.config موجود در فهرست ریشه یک وب سایت مقدار session timeout را معادل ده دقیقه تعریف نماید ، تنظمیات پیش فرض در فایل machine.config که مقدار session timeout را بیست دقیقه تعریف کرده است ، نادیده می گیرد .

● تشخیص تغییر در فایل پیکربندی

ASP.NET به صورت اتوماتیک تغییرات ایجاد شده در فایل های machine.config و web.config را تشخیص می دهد . تشخیص فوق توسط رویداد file-change که توسط سیستم عامل محقق می گردد ، انجام می شود .

زمانی که یک برنامه ASP.NET فعالیت خود را آغاز می نماید ، تنظیمات پیکربندی خوانده شده و در ASP.NET Cache ذخیره می شوند .در ادامه یک file dependency در entry مربوط به cache در فایل machine.config و یا web.config قرار می گیرد . پس از تشخیص تغییر در فایل های machine.config و یا web.config ، یک application domain جدید توسط ASP.NET ایجاد تا به درخواست های جدید سرویس دهد . application domain قدیم پس از پاسخگوئی به درخواست های جاری از بین خواهد رفت .

● فرمت فایل پیکربندی

شاید تنها تفاوت اصلی فایل های web.config و machine.config ، نام آنان باشد و شکل و ساختار دو فایل فوق مشابه است . فایل های پیکربندی به چندین بخش تقسیم و هر بخش توسط یک xml element سطح بالا مشخص می گردد . عنصر ریشه xml یک فایل پیکربندی ، <configuration> نامیده می شود .

در مثال زیر ، یک فایل نمونه web.config نشان داده شده است ( مقادیر بین علائم [] ، در یک فایل پیکربندی واقعی ، با مقادیر واقعی جایگزین می گردند ) .

?xml version="۱.۰" encoding="UTF-۸"?

configuration

configSections

section name="[sectionSettings]" type="[Class]"/

sectionGroup name="[sectionGroup]"

section name="[sectionSettings]" type="[Class]"/

/sectionGroup

/configSections

/configuration

عنصر ریشه Xml یک فایل پیکربندی همواره <configuration> نامیده می شود . هر section handler به همراه تنظمیات مربوطه در یک <SectionGroup> قرار می گیرند . <SectionGroup> یک ساختار سازمانی درون فایل پیکربندی را ارائه می نماید تا به کمک آن بتوان پیکربندی مورد نیاز را در گروه های منحصربفرد انجام داد . به عنوان نمونه بخش <system.web> درون فایل پیکربندی ، مکانی را که اطلاعات آن در ارتباط با ASP.NET می باشد ، مشخص می نماید.

پس از آشنائی اولیه با اصول سیستم پیکربندی ASP.NET ۲.۰ در بخش بعدی با برخی از تنظمیات پیکربندی آشنا خواهیم شد .

سیستم پیکربندی ASP.NET ۲.۰ (بخش دوم )

در بخش اول با اصول اولیه سیستم پیکربندی ASP.NET ۲.۰ آشنا شدیم . در این بخش به بررسی برخی از تنظمیات پیکربندی خواهیم پرداخت .

● ‍‍‍Connection String

در ASP.NET ۱.x ، اطلاعات مربوط به connection string در بخش <appSetting> ذخیره می گردید . در ASP.NET ۲.۰ ، تمامی اطلاعات در ارتباط با 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/v۲.۰"

connectionStrings

add

name="MyConnectionString۱"

connectionString="Data Source providerName="System.Data.SqlClient" /