ניהול שרת ה IIS 7 דרך קוד
מאירועי הפרקים הקודמים:
בפרק הקודם הסברתי שIIS 7, בניגוד לגרסאות הקודמו, בנוי בצורה מודולרית לחלוטין. היות שהוא נבנה מחדש, כמודולים סביב ה Core, אנחנו, המתכנתים המסכנים יכולים לעבוד איתו בצורה יותר נוחה.
אז לפני שניגש ונתחיל לכתוב handlers משלנו, בואו נתחיל מקטן, ונראה איך דרך קוד אנחנו יכולים לשלוט ממש בנוחות על הדברים הקיימים.
נעים להכיר, Microsoft.Web.Administration
תכירו את הניימספייס החדש, Microsoft.Web.Administration. זה זמן מעולה להוסיף אותו כרפרנס לפרוייקט שלכם. המיקון שלו הוא ב %windir%/system32/inetsrv ושמו Microsoft.Web.Administration.dll.
לאחר מכן, בואו נוסיף את שורת ה using:

Server Manager
האובייקט מולו נעבוד הכי הרבה עכשיו הוא ServerManager, שלמעשה, דרכו אנחנו יכולים לשלוט על כל מאפייני השרת.
כשאנחנו יוצרים מופע שלו, אנחנו מקבלים העתק של מצב השרת ברגע יצירת המופע. כל הפעולות שאנחנו מבצעים מול האובייקט הזה, לא נחשבות ולא מופעלות עד שאנחנו מאשרים את השינויים, עבודה א-סינכרונית.
בתור התחלה, הנה דוגמאת קוד קטנה:

אנחנו יוצרים מופע של ServerManager ועוברים בלולאה על כל האתרים ומדפיסים את המידע עליהם. לא ממש מסובך, אפילו די מובן מאליו. הנה דוגמא של תוצאת הריצה:

הייתם מאמינים שעד עכשיו לא היה ניתן לכתוב את הקוד הכ"כ פשוט הזה בצורה נוחה?
כמובן, שאף אחד לא מגביל אותנו רק לקריאת מידע. אנחנו יכולים להוסיף גם. הנה דוגמא לקוד שמקבל מהמשתמש מידע, ועל סמך זה יוצר Website חדש:
את המצב לפני הרצת האפליקציה, אתם יכולים לראות בחלון ה command line למעלה - זוג אתרים בלבד.
עכשיו, כשנריץ את האפליקציה, יוגדרו כל הנתונים, וכשיורץ CommitChanges הם יסונכרנו מול הIIS עצמו. אם נעשה שינוי אחריו, ולא נעשה לו commit, השינוי לא יתרחש.
הפעלתי את האפליקציה, הזנתי את הנתונים, ובאמת התווסף אתר לIIS:

בדיוק לפי הנתונים שהגדרתי. מובן, שבצורה דומה ניתן להוסיף Application Pools, לשנות הגדרות יותר מורכבות וכו'.
למעשה, Server Manger הוא סוג של עידן חדש, שבו ניתן לנהל בקלות את הIIS וממחיש את השינוי המהותי שחל.
בהצלחה.
בפרק הבא:
בפרק הבא נכתוב handler חדש ונגדיר אותו בIIS.
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }