29-10-2007, 18:31
|
|
אדמין לשעבר
|
|
חבר מתאריך: 25.10.01
הודעות: 20,292
|
|
ברשותך, ארחיב מעט-
כאשר אתה מפתח אפליקציה בסביבה כלשהי, אתה בהכרח עושה שימוש בספריות שניתנות לך מטעם הסביבה.
סצנריו א':
בעבר, המקשר ידע לחבר קבצי OBJ שונים לידי תוכנית אחת גדולה. כך לדוגמא, לא היית צריך להפיץ
עם התוכנית שלך קבצים כמו stdio, conio ושאר מרעין בישין.
מצד שני, התוכניות רק הלכו וגדלו עם השנים. עם החדירה של סביבת חלונות, כל קובץ EXE יכל לכלול
בתוכו גם את המשאבים בהם הוא משתמש (לדוגמא: אייקונים, תמונות, טבלאות של מחרוזות וכו').
הדבר יצר גידול אדיר בגודל של קבצי הEXE.
סצנריו ב':
בלי שום קשר לעבר, מאז ומעולם היה קיים צורך להשתמש שוב בחלקי קוד. זה התחיל עם קבצי LIB
שיכולת להפיץ לפרויקטים שונים בארגון על-מנת שישתמשו בהם כתשתיות - והמשיך בעידן החלונאי לקבצי DLL.
אתה יכול לשאול שוב את השאלה - למה כשאתה מהדר את האפליקציה, שלא תקח את הקבצים האלו
ותכניס אותם לתוך הקוד שלך? הסיבה היא שלא תמיד אתה זה שכותב את אותו קוד. לדוגמא - נניח
שאתה כרגע מייצר תוכנית שעושה שימוש ברכיבי Winsock לצורך תקשורת. אתה יכול מחד לפתח
בעצמך רכיב Winsock. מצד שני, אתה יכול להחליט לעשות שימוש ברכיב שמיקרוסופט כבר פתחה
עבורך. אין לך שום גישה לקוד המקור של הרכיב הזה - אבל אתה יכול להשתמש בו. אתה נגש אליו כDLL.
יש לך חוזה ברור איתו. אתה יודע מה הוא מצפה לקבל - ואתה יודע מה לצפות לקבל ממנו. כך נוצר מצב
שהתוכנה שלך משתמשת ברכיב חיצוני שלא אתה כתבת. אם אולי, רכיב שכתבת - אבל הוא חיצוני
למערכת שאתה כרגע מייצר.
הצורך בהפצה במקרה הזה ברור - אצלך במחשב יש את אותו winsock.dll. אבל האם אתה יכול להיות
בטוח שבכל מחשב שיבחר להריץ את האפליקציה שלך הוא יהיה קיים? (האמת שכאן הדוגמא לא טובה,
היות וזו הנחה מאוד סבירה עבור הקובץ הספציפי הזה.. אבל זרום איתי לצורך הדוגמא).
סצנריו ג':
אתה יכול להגיד - אז למה שלא תהיה לי אפשרות להכניס את הwinsock.dll המדובר לתוך התוכנית שלי
(בדומה לקובץ lib) ולהמשיך להפיץ את התוכנית שלי כקובץ בודד - הו כאן אנחנו נכנסים לנושא
תחזוקתיות של קוד ושל חבילות תוכנה. במקרה הנ"ל, winsock זו חבילה שמתוחזקת ע"י מיקרוסופט.
במידה ויתגלה בה באג, מיקרוסופט תדאג להפיץ עדכון של הקובץ. אבל במידה והכנסת קובץ ישן לתוך
המערכת שלך - אתה לא תהנה מהתיקון הזה. אותו דבר בארגון שלך. במידה וצוות תשתיות כלשהו מפיץ
עדכון של רכיב שבו אתה משתמש - הוא יכול להפיץ את זה לכל המחשבים בארגון, בלי שאתה - יוצר
האפליקציה תצטרך להיות מודע לזה בכלל.
שלושת הסצנריוים שמתוארים כאן הם רק חלק מהסיבות שהעולם הלך לכיוון של פיתוח מונחה ספריות.
אני בטוח שגולשי הפורום יוכלו למצוא עוד כמה. אבל הנקודה ברורה.
_____________________________________
דורון
|