בולנט - דברים מיוחדים...

www.ASP.org.il

Israeli ASP Organization
ארגון ה-ASP הישראלי
מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > Components

יצירת רכיבי COM באמצעות VISUAL BASIC

במאמר זה אסביר על בניית רכיבי COM ושילובם בדפי הASP
מייקרוסופט העניקה לסביבת הפיתוח ASP רכיבים עשירים ואפשרויות מגוונות, כמו למשל ה-ADO שעוזר לנו להתחבר בקלות למסדי נתונים ולבצע מולם פעולות או רכיב מערכת הקבצים (FSO) שמאפשר לערוך, למחוק, וליצור קבצים בשרת. אם הזדמן לכם לעבוד עם אחד מהאובייקטים האלה, אתם בוודאי יודעים שליצירת מופע של האובייקט משתמשים בסיינטקס:

in VBs: dim x; set x=server.createobject("adodb.connection") in Js: var x; x= new ActiveXObject("Scripting.FileSystemObject")
כפי שאתם רואים, המתכונת ליצירת האובייקט היא:
in VBs: dim x; set x=server.createobject("project.class") in Js: var x; x= new ActiveXObject("project.class")

רכיבי ברירת המחדל שמייקרוסופט מספקת עם סביבת הפיתוח ASP עוזרים לנו הרבה פעמים להקטין את מספר שורות הקוד, כמו למשל הADO שבלעדיו, היינו צריכים לכתוב שורות קוד רבות על מנת להתחבר לבסיס נתונים. הרכיבים הכתובים כDLL או אם תרצו רכיב COM, כתובים בשפת תכנות עילית, והקוד שבהם עובר הידור לפני השימוש בו. קוד שעבר הידור או קימפול לשפת מכונה, ירוץ הרבה יותר מהר על השרת מאשר קובץ ASP רגיל הכתוב כקובץ טקסט פשוט.
בנוסף לכך, רכיבי COM בהיותם מהודרים, הרבה יותר מוגנים מקוד סקריפט פשוט ובמקרים רבים נעשה בהם שימוש על מנת להגביר את ההגנה מפני חשיפת פרטי מיקום וסוג מסד הנתונים. חישבו לרגע, מה יכול לעשות אדם שפרץ לשרת שלכם, שבמקרה מכיל מידע חשוב, כמו סיסמאות גישה של לקוחות. אדם כזה יוכל לפתוח את קבצי הASP ללא בעיה ולהשיג את מיקום מסדי הנתונים שמכילים את המידע, פתרון עסקי חשוב שרכיבי הCOM מספקים נגד חבלות כאלה הוא שימוש ברשת חצי מוגנת, אשר מכילה את קבצי ה-ASP שאליהם צריכים הגולשים להגיע דרך האינטרנט, אולם, קבצי ה-ASP יכילו בסך הכל יצירת מופע של רכיבי COM שבהם ימצאו הכתובות למסדי הנתונים. רכיבי ה-COM ישבו ברשת מאובטחת בייחד עם מסדי הנתונים ובכך גם אם ייפרץ השרת, לא יוכלו הפורצים להשיג מידע על מסדי הנתונים

בניית רכיבי COM בVISUAL BASIC כשפתחה מייקרוסופט את אסטרטגיית הCOM(Component Object Model) החדשה, לקחה על עצמה אתגר ליצור סביבה שבה יוכלו מפתחים בבייסיק לדוגמא, להשתמש ברכיב הבנוי בשפת JAVA או בC++, ולקרוא לשיטות והמאפיינים המצויינים ברכיב מתוך קוד הכתוב בכלל בשפת תכנות אחרת וכיוצא מכך, ניתן לבנות רכיבי COM כמעט בכל שפת תכנות מונחית עצמים(OOP). שני שפות המומלצות ביותר לבניית רכיבים הן VB וc++/c למרות שבייסיק נחשבת לשפה מגושמת מדי, ולעומתה C++ הרבה יותר טובה, אתמקד במאמר זה ביצירת רכיבים בשפת בייסיק(באופן כללי, ניתן לבנות רכיבים אפילו בJAVA אבל קוד הכתוב ב-JAVA מהודר לקוד מכונה וירטואלי שה-JVM מהדר לקוד מכונה רק בזמן ריצתו, נחשב לאיטי למדי, אף על פי שקוד כזה יוכל לרוץ על כל סוגי המכונות בהם מותקן הJVM-JAVA VIRTUAL MACHINE

שלבי היצירה

על מנת לכתוב ולהדר את הרכיבים והדוגמאות כאן, יידרש לך מהדר ויזואל בייסיק. בעת פתיחת סביבת הפיתוח של בייסיק, ייפתח תפריט בחירת סוג הפרוייקט. הסוג המומלץ ביותר הוא DLL למרות שתוכל גם לכתוב את הרכיב כתוכנית עצמאית (EXE). אם בכל זאת תבחר בACTIVEX EXE תקבל ייתרון כיוון שתכנית הכתובה כ-EXE מתרחשת כתהליך נפרד וכך גם אם תתרחש תקלה בעת ריצתו, שאר היישומים לא יפגעו וירוצו כרגיל. בתור התחלה כדאי שתבחר בDLL.

לאחר בחירת סוג הפרוייקט, תיפתח לפניך סביבת המהדר בה תאלץ לשנות את שם המחלקה בתיבת התכונות שבצד(ברירת המחדל היא CLASS 1). שנה את שם המחלקה לPRG. אם תרצה, תוכל גם לשנות את שם הפרוייקט, אך אנו נעבוד ביינתיים עם ברירת המחדל(PROJECT 1).
השלב הבא יהיה כתיבת התכנית. בתכנית ההדגמה שלנו, ניצור פונקציה שתדע לחבר שתי מחרוזות שהתקבלו מתוך דף ה-ASP ולשלוח אותם חזרה אל הדף לשם כתיבתם. כאשר סמן הטקסט נמצא על גבי משטח העבודה, הקלד את הקוד הבא:

Public function strplus(str_a as string, str_b as string) as string strplus = str_a & str_b End function

לאחר כתיבת הקוד, יהיה עלינו להפוך את הרכיב שלנו לזמין לקבצי ה-ASP הנמצאים בשרת, את זה נעשה ע"י רשימתו ברג'יסטרי של השרת. אם אתם כותבים את הקוד במחשב השרת, סביבת הפיתוח של בייסיק תעזור לכם ברישום. כדי לרשום ולשמור את האובייקט לכו לתפריט FILE -> MAKE PROJECT1.DLL כאשר תעשו זאת, יירשם האובייקט ברישום המערכת כ-PROJECT1.STRPLUS. אם אתם כותבים את הקוד במחשב הביתי ורוצים לרשום אותו במחשב אחר, תצטרכו לרשום אותו באופן ידני.

כעת, לאחר שהאובייקט כבר רשום, נצטרך לבצע מופע שלו בקובץ ה ASP על מנת להשתמש בשיטה שלו (שכמובן, מחברת שתי מחרוזות ששולחים אליה ומוסיפה ביניהם תו רווח). כדי לבצע מופע של האובייקט, נשתמש בסיינטקס הבא:

in VBs: dim x set x=server.createobject("Project1.prg") in Js: var x; x= new ActiveXObject("Project1.prg") לאחר שיצרנו מופע של האובייקט, נשתמש בשיטות שלו ע"י הקוד: s=x.strplus("yitzik","nakash") response.write "my name is: " & s להלן הקוד המלא בVBS <% dim x,s set x=server.createobject("Project1.prg") s=x.prg("yitzik","nakash") response.write "my name is: " & s %>

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

שימוש ברכיבים קיימים מתוך הרכיב שלנו

אחד השימושים הנרחבים ביותר של רכיבי הCOM הוא בעבודה עם מסדי הנתונים, אך אם אתם לא מנוסים בכתיבת קוד בשפת בייסיק, אתם בטח תשאלו איך בכלל להתקשר אל מסד הנתונים מהרכיב. כאמור,אחת הסיבות שמייקרוסופט פיתחה את טכנולוגיית ה-COM היא כדי לעזור למפתחים לצמצם כמה שיותר את הקוד שעליהם לכתוב, את זאת הם עשו על ידי מתן האפשרות ליצור קישור בעת כתיבת הקוד, אל רכיבים קיימים וכיוצא מכך, תוכלו ליצור REFFERENCE אל רכיבים אחרים שאתם כתבתם או אל הרכיבים שמייקרוסופט סיפקה לכם (ADO,FSO...).
הדוגמא הבאה תהיה יצירת תכנית המקבלת שם של חיה מתוך קוד הASP, ומוציאה את הפרטים עליה ממסד הנתונים במסגרת רכיב ה-COM:
צור פרוייקט חדש מסוג DLL בסביבת הפיתוח של בייסיק. שנה את שם הפרוייקט לANM ואת שם המחלקה לDETAIL_ANM.
כעת, יהיה עליך ליצור REFFERENCE אל רכיב ה-ADO המותקן בשרת ורשום ברג'יסטרי, את זאת תעשה ע"י בחירה בתפריט: PROJECT-> REFERENCES תיפתח לפניך תיבה המציגה רשימה של כל האובייקטים המותקנים בשרת, בחר ב MICROSOFT ACTIVEX DATA OBJECTS 2.1 LIBRARY ולחץ על אישור.
עכשיו נשאר לך לכתוב את הקוד עצמו:

public function animal(name as string) as string dsn="my_dsn_name" dim rs as new adodb.recordset rs.open "select * from anm where name='"&name,dsn animal=rs("datail") rs.close set rs=nothing End function

לפני שנריץ את הקוד, נעבור קצת על אופן הכתיבה: בשורה הראשונה נמצאת הגדרת הפונקציה והפרמטרים שהיא מקבלת. הגדרת הפונקציה בקוד שלנו מציינת שהיא מקבלת פרמטר מסוג מחרוזת ומחזירה ערך מסוג מחרוזת
בשורה השניה אנו מגדירים את שם הקישור למסד הנתונים
בשורה השלישית אנו יוצרים אובייקט RECORDSET ונותרים לו את השם RS , שימו לב לשוני בין יצירת מופע לאובייקט בASP לעומת VB.
בשורה הרביעית אנו פותחים את סט הרשומות ונותנים לו את הפרמטרים הרגילים של מחרוזת SQL ואת שם הקישור למסד הנתונים
בשורה החמישית אנו "מעניקים" למשתנה ANIMAL את מחרוזת תיאור בעל החיים
בשורות השישית והשביעית אנו סוגרים את הרקורדסט ומנקים את משאביו
בשורה השמינית אנו סוגרים את הפונקציה


כעת, נהדר ונרשום את הרכיב בשרת כמו שעשינו בדוגמא הראשונה וניצור את קובץ ה-ASP הבא:

<% who=request.form("name") if who<>"" then Dim rec Set rec=server.createobject("anm.detail_anm") Response.write "מידע על"&who&"<br><br>"&rec.animal(who) else Response.write "<center><form action='' method='post'>" Response.Write "<input type='text' name='name' VALUE='NAME'><br>" Response.Write "<input type='submit'></form></center>" end if %>
כעת הרץ את קובץ ה-ASP על השרת שלך וראה את התוצאות אך לפני כן וודא שיש לך כבר DSN מוגדר עם השם שרשמת בקוד הויזואל סייסיק שמצביע על מסד נתונים עם המבנה הבא: טבלה בשם ANM המכילה את השדות הבאים: 1. שדה שם מסוג מחרוזת בשם NAME 2. שדה פרטים מסוג מחרוזת בשם DETAIL

קריאה לרכיבי COM הנמצאים בשרת אחר

לעתים אנו רוצים לחלק משימות בין מחשבים שונים כדי לא להטיל עומס על שרת אחד. פעולה זו אפשרית על ידי קריאות לרכיבי COM ברחבי הרשת. לפני שאנו מבצעים אסטרטגייה של פיזור תכניות על גבי מחשבים שונים, עלינו לבדוק האם זה בכלל יעזור במהירות ביצוע הקוד או להיפך: אם הקוד שלנו קטן, הזמן שיקח לקריאה למחשב אחר להתבצע, יהיה יותר ארוך מאשר אם נריץ אותו על אותו מחשב, לעומת זאת כשהקוד ארוך ומסובך, עדיף לשלוח קריאה מהשרת שמכיל את קבצי ה-ASP אל שרת אחר שמכיל את רכיב ה-COM ובכך להגביר את מהירות הביצוע.
קריאות לרכיבי COM ברשת האינטרנט אפשריות על ידי מספר שיטות, אסביר על חלקן:


DCOM- DISTRIBUTED COM בטכנולוגיה זו אנו מבצעים קריאה לרכיב אחר אחרי שהגדרנו בשרת תכנית שתטפל בכך עם ויזואל בייסיק. ניתן גם ליצור קריאות CORBA וRMI שמשתמשות הרבה פעמים בפרוטוקולים הנמוכים כמו TCP/IP או UDP, פרוטוקולים אלה מאפשרים יצירת קשר רציף בין מחשבים ולאכן הם יכולים לעזור, אך ישנם מקרים בהם השרת מוגן על ידי FIREWALL ואז לא תמיד ניתן להשתמש בפרוטוקולים אלה ואז צריך לעבור לפרוטוקול גבוהה יותר כמו HTTP. בעיה נוספת עם DCOM היא שלא ניתן להעביר את הקריאה בין סוגי מחשבים שונים כי קוד הבסיס שלהם הוא שונה.
SOAP בעזרת SOAP אפשר לקרוא לרכיבים ולשלוח להם מידע בשפת XML. עוד מידע על SOAP תמצאו במאמר אחר שכתבתי שעוסק באופן השימוש בו.

לסיכום

תארתי במאמר זה דרכים לשימוש ברכיבי COM וליצירתם. רוב הפורטלים הגדולים משתמשים ברכיבים כאלו לשם ביצוע יעיל של הקוד. הרכיבים הם הרבה יותר מקוד טקסטואלי פשוט אלא בנויים מקוד מכונה שרץ ביתר קלות. לא יכולתי להביא לכם דוגמאות מוכנות כיוון שאני כותב בC++ ואין לי את המהדר של בייסיק, ואני ממליץ גם לכם לעבור לC++ שהיא הרבה יותר חזקה מביסיק. אבל את הבסיס ליצירת הרכיבים, העדפתי ללמד בביסיק בגלל הפשטות שלה(דוה).
ביי ובהצלחה!!!



התגובות שלכם

         
01. 20/12/2004  יותם גפסון
מאמר לעניין! מסביר כמו שצריך...

02. 22/12/2005  lior73
לי אין וידיאל באייסיק וואני צריך לדעת איך קובעים שם ומחלקה ידנית

         

מחבר: איציק נקשרמת קושי: 3  ||  ציון: (6.66666666666667)כל הזכויות שמורות ל-IAO ©

© כל הזכויות שמורות ל-IAO
Lamparas y Mobiles  |   בולנט - Bolenat סטלן  |   מתכונים  |   הומו גאה  |   שמות  |   מיסטיקה וקבלה  |   Fisherman Pants סדרות טלויזיה טיסות זולות הודו נפאל תאילנד ביקורות משחקי מחשב Engineering Solutions עיצוב גרפי בפלאש לימוד צילומים תמונות ופיתוח קנוורט משאיות ישראל islands & beaches TV Series Guide חגי ישראל play online game clothes wear בניית אתר חנויות מחשבים ו-ציוד הקפי jewish holidays israeli games ישראל אופנה חולצות טישירט מעוצבות הריון לידה תינוק כוסיות ערומות קורס אימון אישי מידע על חברות רשתות ikesound car audio wholesale recetas comidas family and woman magic trip T Shirt mania Bolenat Searches Bolenat UK online video clips חיפושים מגזין מסטול ל-סטלן המצוי Hebrew learning online תכשיטים טבעות שרשראות קליפרים מצתים התפתחות הילד comparte light lamps תרופות / מחלות הדפסה על חולצות למכירה מוזיקה ישראלית תמונות סרטונים מצחיקים גידול צמחים פרחים ישראלים בעולם מתפנקים - ספא פינוק מושלם ייעוץ עסקים משפחתיים סרט קולנוע - קומדיה סאטירה כסף / שוק ההון לימוד שחיה בריכה מפסיקים לעשן סיגריות נשים אישה בחורה בחורות Bongs and Pipes Music Festivals Coca-Cola קססונית