
installutil עם הנתיב המלא לקובץ ה-EXE של השירות.installutil /u עם אותו נתיב. לאחר רענון חלון Services השירות נעלם.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Service ב-Windows» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו הולכים לראות איך אנחנו מבצעים הוסט אבל לא על ידי תוכנת קונסול אלא על ידי Windows Service החיסרון בתוכנת קונסול או בכל סלף הוסט שהוא כמו תוכנת ווינפורם או תוכנת WPF בשביל לבצע הוסטינג של סרוויס זה שמשתמש יכול פשוט לסגור את התוכנה הזאת גם על ידי הטאסק מנאג'ר גם על ידי זה שהוא נניח רואה אותה וסוגר אותה בנוסף התוכנה
הזאת מתחבאת אוטומטית כאשר המחשב מתחבא וכאשר מדליקים את המחשב היא לא עולה מחדש. כמו כן תוכנה כזאת שרצה שייכת ליוזר אחד ואם אני רוצה שאוטומטית ההוסט ירוץ כשהמחשב עולה בלי שום קשר לאף יוזר אז כמובן אני צריך להשתמש פה בווינדוס סרוויס שרץ אוטומטית לא רואים אותו בשום מקום רק
בתס מנג'ר וזה הדבר הנכון להריץ סרוויס שלנו כאשר אנחנו לא רוצים להשתמש ב-IS אלא באיזושהי תוכנה שנמצאת במחשב ומריצה אותה.
אז דבר ראשון מה שנעשה זה נלך ל-Solution ונוסיף פרויקט חדש. אז נלך ל-Solution, Add New Project והפרויקט שאני בוחר הוא בקטגוריית Windows, אני בוחר Windows Service.
אוקיי, בואו ניתן לו שם והשם שניתן לו זה יהיה Calculator Win Service. וזה בעצם השם של הפרויקט שאני מוסיף.
ואני מבצע אוקיי והתווסף לי לסלושן פרויקט שהוא פרויקט של Windows Service. דבר ראשון מה שאנחנו עושים אנחנו משנים את השם של הקובץ שהוא הקובץ שרץ ב-Windows Service.
אני רואה שאוטומטית השם הזה זה Service 1 אז בואו נשנה אותו ל-Calculator Service. שוב חשוב ששמות של מחלקות יהיו שונים משמות של מרחבי שמות בכדי שלא תהיה התנגשות ביניהם.
ברגע שעשיתי את זה אז הוא שואל אותי אם לשנות גם את השם של המחלקה של הווינדוס סרוויס אני אומר לו כן ובואו נסתכל על המחלקה שנוצרה לנו.
מקש ימני על הדיזיינר view code ואני רואה שיש לי פה מחלקה שנקראת כלקולטור סרוויס עכשיו חשוב להבין המחלקה הזאת זה לא ה-WCF סרוויס שלנו שהוא נמצא ב-DLL כלקולטור ליבררי והמחלקה של ה-WCF סרוויס נקראת כלקולטור והקונטרקט שלה כלומר האינטרפייס נקרא i-כלקולטור.
המחלקה Calculator Service שייכת ל-Windows Service והיא מייצגת את המחלקה שרצה ב-Windows Service. במחלקה הזאת אני רואה שיש לי שתי פונקציות On Start ו-On Stop.
On Start מתבצעת כאשר הסרוויס מורץ. נניח כשהמחשב עולה והסרוויס אוטומטית עולה אז הוא רץ ואז On Start מתבצעת. On Stop מתבצעת כאשר הסרוויס יורד מהאוויר. אני מדבר על ה-Windows Service.
אז בואו נחשוב מה אנחנו עושים. אז מקודם כתבנו את כל ההוסטינג בקונסול הוסט, אז אנחנו רק צריכים ללכת ולהעביר את הפרמטרים למקומות הנכונים בפרויקט של הווינדוס סרוויס.
יש לנו כאן את ה-service host, אני אעתיק אותו, אני אגש למחלקה של הווינדוס סרוויס ואני אדביק אותו פה כ-data member מפני שאני רוצה להגיע אליו גם ב-on-start וגם ב-on-stop בשביל לעצור אותו.
קודם כל כמובן אני רואה שהמערכת לא מזהה אותו וזה בגלל שאנחנו צריכים להוסיף את ה-dll שקודם הוספנו ל-host. רפרנס ואנחנו צריכים להוסיף שני dll. dll ראשון בריסנט אני יכול לראות אותו והסיסטם סרוויס מודל בואו נוסיף אותו וdll שני שאנחנו צריכים להוסיף זה כמובן dll של ה-wcf סרוויס שבנינו
הכלקולטור ליבררי בואו נוסיף גם אותו וכעת אנחנו יכולים לחזור להגיע עם המקלדת לסרוויס הוסט קונטרול נקודה פותח לי את האפשרות להציג את ה-using של ה-namespace ו-enter מגדיר לי למעלה את היוזינג המתאים אוקיי בואו נחזור לפוסט הקודם ונמשיך להעתיק את כל הדברים הנוספים אז כל האדרס אני כמובן צריך והביינדינג אני צריך
והקונטרק אני צריך את האובייקט של הסרוויס הוסט אני רוצה לפתוח אותו לצרף אליו את האנד פוינט להגדיר behavior אפילו נגדיר אותה על אותו המקום ולהגדיר שהיא באוויר לצרף את ה behavior ולפתוח את הסרוויס אין לי כמובן קונסול אז אני אתעלם מכל הפונקציות שמדברות על הקונסול.
אני אעתיק את זה, אחזור בחזרה ל-Windows Service ואני אדביק את זה ב-On-Start. מה אנחנו עושים ב-On-Stop? כמובן שב-On-Stop אנחנו צריכים ללכת ולבגור את הסרוויס, ואת זה כתבנו ב-Finallyly.
אז נחזור בחזרה ונדביק ב-On-Stop את הקוד שסוגר את הסרוויס שלנו. בואו נגדיר את מרחבי השמות המתאימים. יש לנו את ה-Calculator, יש לנו את ה-Behavior, ואחרי שהגדרנו את הכל כמו שצריך, אז אני רואה למעלה, כמו תמיד, שיש לי המון מרחבי שמות שאני לא צריך אותם, Organize, Using, Remove and Sort,
והוא מוציא לי את כל מרחבי השמות שאני לא צריך. כעת אנחנו צריכים לעשות בסרוויס מספר דברים, כדי שניתן יהיה להתקין אותו במחשב. אז דבר ראשון, אנחנו פונים בחזרה לדיזיינר שראינו מקודם, ששייך למחלקה Calculator Service, לוחצים מקש ימני עליה ובוחרים Add Installer, כדי שנוכל לבצע התקנה של הסרוויס במחשב.
עכשיו אני רואה שיש לי פה שני רכיבים. אני בוחר את הרכיב הראשון, Service Installer, מקש ימני פרופרטיז, ואני צריך להגדיר לו כמה הגדרות.
דבר ראשון, ה-Service Name. אנחנו קראנו לסרוויס שלנו Calculator Service. בואו נעתיק את זה. יש לנו פה את ה-Service Name Calculator Service, ויש לנו פה Display Name, כדי שנוכל לראות אותו אחר כך בחלון ה-Services.
נדביק אותו גם כאן, ויש לנו פה עוד הגדרה של סטארט טייפ. יש לנו פה את Manual שאומר שרק אם אנחנו נריץ אותו בעצמנו אז סרוויס יעלה, זה לא משהו שאנחנו רוצים, אנחנו רוצים שהוא יעלה אוטומטית כשהמחשב עולה.
אז אנחנו הולכים ובוחרים את אוטומטיק, יש לנו פה גם Disable שהוא בכלל לא פעיל, אז בואו נבחר אוטומטיק. זה הגדרות שיש לנו לבצע עם הרכיב Service Installer.
לאחר מכן יש לנו Service Process Installer, אנחנו בוחרים Properties ואנחנו משנים את Account מ-User, כי אנחנו לא רוצים שזה יהיה ספציפית לגבי יוזר מסוים ל-Local System, כי אנחנו רוצים שהוא יהיה עבור כל היוזרים במחשב.
ואנחנו שומעים, עכשיו אנחנו יכולים לסגור את כל הטפסים הקודמיים. בואו נסגור אותם ונסגור את חלון המאפיינים. כל מה שאנחנו צריכים לעשות זה לבנות את האפליקציה.
לפני זה אנחנו לא צריכים יותר את ה-Consol Host. לכן מה שנעשה, נפתח את התיקייה שלו, Open Containing Folder, אנחנו מגיעים לפרויקט עצמו של הקונסול הוסט.