machine.config : فایل پیکربندی سرویس دهنده
Web.Config : فایل پیکربندی برنامه
با توجه به ماهیت فایل های پیکربندی ( فایل هائی از نوع xml ) ، عناصری که مسئولیت تشریح پیکربندی را برعهده دارند نسبت به حروف بزرگ و کوچک حساس می باشند .
در مثال زیر ، یک نمونه فایل web.config به همراه بخش مربوط به معرفی <sessionState> یک برنامه وب نشان داده شده است .
<?xml version="1.0" encoding="UTF-8" ?> |
مزایای استفاده از یک فایل xml برای پیکربندی (در مقابل یک متابیس باینری )
امکان خواندن اطلاعات پیکربندی وجود داشته و می توان به سادگی و با استفاده از یک ویرایشگر متن نظیر NotePad آنان را ویرایش نمود ( گرچه توصیه می گردد که در این رابطه از ویژوال استودیو 2005 و یا ادیتوری که قادر به تشخیص تگ های xml می باشد ، استفاده گردد). فایل پیکربندی را می توان به سادگی از یک سرویس دهنده به سرویس دهنده دیگر منتقل نمود . ویژگی فوق در یک Web Farm بسیار مفید و موثر می باشد .
پس از انجام تغییرات مورد نیاز در یک فایل پیکربندی ، ASP.NET به صورت اتوماتیک تغییرات ایجاد شده را تشخیص و آنان را در ارتباط با برنامه اعمال خواهد کرد . ASP.NET بدین منظور یک نمونه جدید از برنامه را ایجاد و کاربران را به برنامه جدید هدایت می نماید .
پس از اعمال تغییرات در پیکربندی یک برنامه ASP.NET ، ضرورتی ندارد که مدیریت برنامه سرویس دهنده وب را متوقف و مجددا" فعالیت آن را آغاز نماید .
سیستم پیکربندی ASP.NET قابل توسعه است و اطلاعات مرتبط با یک برنامه را می توان به سادگی ذخیره و بازیابی نمود .
اطلاعات حساس ذخیره شده در سیستم پیکربندی ASP.NET 2.0 را می توان در صورت تمایل به صورت رمزشده ذخیره نمود ( اقدامی در جهت افزایش امنیت و ایمن سازی برنامه های وب خصوصا" اطلاعات حساس مرتبط با آنان ) .
فایل پیکربندی سرویس دهنده : machine.config
هر سرویس دهنده ASP.NET دارای یک فایل پیکربندی با نام machine.config است که در زمان نصب فریمورک بر روی سیستم ایجاد می گردد . فایل فوق در مسیر C:WindowsMicrosoft.NETFrameworkv2.0xxxxx نصب و از محتویات آن به عنوان تنظیمات پیش فرض در تمامی برنامه های ASP.NET نصب شده بر روی سرویس دهنده استفاده می گردد . با توجه به نقش مهم این فایل در عملکرد تمامی برنامه های موجود بر روی کامپیوتر ( ویندور ، وب ) لازم است که تغییر در فایل فوق با دقت خاصی انجام شود و نسبت به نوع کار و دامنه متاثر از تغییرات شناخت کافی وجود داشته باشد .
در صورتی که بر روی سیستم چندین نسخه از فریمورک دات نت نصب شده باشد ، هر نسخه دارای فایل پیکربندی machine.config مختص به خود است . مثلا" در صورتی که بر روی کامپیوتر نسخه های ASP.NET 1.1 ، ASP.NET 1.0 و ASP.NET 2.0 نصب شده باشد ، هر نسخه فریمورک دارای فایل 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="1.0" encoding="UTF-8"?> |
عنصر ریشه Xml یک فایل پیکربندی همواره <configuration> نامیده می شود . هر section handler به همراه تنظمیات مربوطه در یک <SectionGroup> قرار می گیرند . <SectionGroup> یک ساختار سازمانی درون فایل پیکربندی را ارائه می نماید تا به کمک آن بتوان پیکربندی مورد نیاز را در گروه های منحصربفرد انجام داد . به عنوان نمونه بخش <system.web> درون فایل پیکربندی ، مکانی را که اطلاعات آن در ارتباط با ASP.NET می باشد ، مشخص می نماید.
پس از آشنائی اولیه با اصول سیستم پیکربندی ASP.NET 2.0 در بخش بعدی با برخی از تنظمیات پیکربندی آشنا خواهیم شد .