DCSIMG
ניהול שרת ה IIS 7 דרך קוד - שחר.נט

שחר.נט

בלוגים שאני קורא

ספרים מומלצים

ניהול שרת ה IIS 7 דרך קוד

 מאירועי הפרקים הקודמים:
בפרק הקודם הסברתי שIIS 7, בניגוד לגרסאות הקודמו, בנוי בצורה מודולרית לחלוטין. היות שהוא נבנה מחדש, כמודולים סביב ה Core, אנחנו, המתכנתים המסכנים יכולים לעבוד איתו בצורה יותר נוחה.
אז לפני שניגש ונתחיל לכתוב handlers משלנו, בואו נתחיל מקטן, ונראה איך דרך קוד אנחנו יכולים לשלוט ממש בנוחות על הדברים הקיימים.

נעים להכיר, Microsoft.Web.Administration

תכירו את הניימספייס החדש, Microsoft.Web.Administration. זה זמן מעולה להוסיף אותו כרפרנס לפרוייקט שלכם. המיקון שלו הוא ב %windir%/system32/inetsrv ושמו Microsoft.Web.Administration.dll.

לאחר מכן, בואו נוסיף את שורת ה using:

image

Server Manager

האובייקט מולו נעבוד הכי הרבה עכשיו הוא ServerManager, שלמעשה, דרכו אנחנו יכולים לשלוט על כל מאפייני השרת.

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

בתור התחלה, הנה דוגמאת קוד קטנה:

image

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

image

 

 הייתם מאמינים שעד עכשיו לא היה ניתן לכתוב את הקוד הכ"כ פשוט הזה בצורה נוחה?

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

image

 את המצב לפני הרצת האפליקציה, אתם יכולים לראות בחלון ה command line למעלה - זוג אתרים בלבד.

עכשיו, כשנריץ את האפליקציה, יוגדרו כל הנתונים, וכשיורץ CommitChanges הם יסונכרנו מול הIIS עצמו. אם נעשה שינוי אחריו, ולא נעשה לו commit, השינוי לא יתרחש.

הפעלתי את האפליקציה, הזנתי את הנתונים, ובאמת התווסף אתר לIIS:

image

 בדיוק לפי הנתונים שהגדרתי. מובן, שבצורה דומה ניתן להוסיף 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; }
פורסם: Aug 27 2007, 09:34 AM by שחר גבירץ | with 3 comment(s)
תגים:

תוכן התגובה

Justin-Josef Angel [MVP] כתב/ה:

שחר, מאמר נהדר.

(ואת ה-CSS שלך עדיף לשים ב-CSS של האתר ולא בכל עמוד ועמוד, בכלל להעתקת קוד אני ממליץ על Copy As HTML שנתמך לכל גירסאות VS).

אתה יכול להוסיף את פריט המידע הבא - מרבית הפיצ'רים הניהוליים שמוצעים כחלק מגירסאות IIS 5.1 ו-IIS 6.0 הן בעייתיות מאוד מבחינת תחקור ופעולות מתוך דוט נט. יכולות השאילתות דרך ה-LDAP תמיד היה גרועות (גם אם הופכים אותן ל-Strongly Typed) כי הן חלקיות ועובדות רק בחלק מהמקרים ואין מיפוי של מקרים, וכל פעולה (הוספת תת-אתר, הוספת דומיין, שינוי פורטים, הוספת Extensions ומה לא) נתמכות דרך פורמט ה-LDAP הקודם רק ב-Windows Server 2003 עם SP1. (כלומר, הקוד ה-LDAPי שלך יתנהג שונה על מכונת פיתוח XP\VISTA לעומת על שרת פריסה 2003SP1.

ה-Wrapper הזו מצילה חיים.

# August 27, 2007 10:08 AM

שחר גבירץ כתב/ה:

תודה ג'סטין.

אני אוריד והתקין את Copy as HTML כך שבפעמים הבאות יופיע הקוד כקוד ולא כתמונה.

הייתה אפשרות אחרת בנוסף לLDAP - שהיא עבודה עם WMI מתוך דוט.נט. זה יוצר קוד זוועתי, בלתי קריא, ולא ניתן לתחזוקה. אבל, זה עבד (עד שהיית צריך לשנות משהו או לעשות משהו קצת לא שגרתי...).

# August 27, 2007 10:15 AM

שחר.נט כתב/ה:

ב WebCas t שהקלטתי בנושא Windows Power Shell, הדגמתי איך אנחנו יכולים ליצור cmdlet, להגדיר לו installer

# September 7, 2007 8:35 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 1 and type the answer here:


Enter the numbers above: