DCSIMG
שאלה בתפוז: קובץ XML לשמירת Regex Patterns? - Ohad Aston - ASP.NET Blog

Ohad Aston - ASP.NET Blog

פיתוח לאינטרנט, ASP.NET ועוד

על הבלוג

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

Try Opera today - it's free

Ohad Aston's Facebook profile

Pagerank - קידום בגוגל

website counter

Powered by TinyMCE
Add to Technorati Favorites
Add to Google

אני ב - Twitter

    הבלוגספירה

    עצומות חשובות - חתמו והשפיעו!

    פרוייקטים ששווים הצצה

    שאלה בתפוז: קובץ XML לשמירת Regex Patterns?

    החלטתי לאמץ את הרעיון של ג'סטין - להעלות תשובות לשאלות שעלו בפורום בתפוז גם לבלוג, מכמה סיבות:

    1. לא כולם מכירים את פורום תכנות ‎.NET בתפוז, ואם כבר הגענו עד כאן - זה זמן טוב להזכיר את הפורום ולהזמין את מי שעוד לא כותב שם להצטרף.
    2. לא כ"כ קל לחפש בתפוז ולכן הרבה הודעות נעלמות שם כלא היו.
    3. הבלוג מאפשר לענות בצורה טובה יותר עם אפשרות להוסיף תמונות, קוד ועוד.

    השאלה:

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

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

    הפתרון הראשון הוא להשתמש ב - Global Resources, זהו מנגנון מובנה ב - ‎.NET והוא קל לשימוש.

    Global Resources

    ניתן לשמור בקבצי Resources "משאבים", החל מערכים של סטרינג ועד קבצים שלמים.

    ה - Resources מתחלקים לשני סוגים:

    • Global Resources - משאבים המשותפים לאפליקציה כולה
    • Local Resources - משאבים המשותפים לדף מסויים או לטופס מסויים.

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

    Resources הם קבצי XML (הסיומת שלהם היא resx) שיכולים להחזיק ערכים ואף קבצים - והם מתקמפלים עם האפליקציה (בדומה לקבצי ה - Config).

    בכדי להוסיף קובץ Resource לאפליקציה שלנו, יש ללחוץ קליק ימני על הפרוייקט, ולבחור ב Add New Item, מתוך החלון שיפתח נבחר ב - Resource File:

    01

    לאחר לחיצה על Add, במקרה של אתר ASP.NET יתריע כי אנחנו מנסים להוסיף קובץ מיוחד שעליו להיות בתיקיית App_GlobalResources וישאל האם אנחנו רוצים להוסיף את הקובץ לתייקיה הזו, תאשרו לו לשים את הקובץ בתיקיה זו.

    לאחר מכן יפתח העורך של קבצי Resources, המצב הדיפולטי של העורך, הוא עריכה של ה - Strings בקובץ - טבלה עם שלוש עמודות:

    1. Name - השם של הערך
    2. Value - הערך עצמו
    3. Comment - הערות שניתן להוסיף לצרכי תיעוד וכיו"ב.

    להלן דוגמה להוספה של ערך לקובץ:

    02

    בכדי לגשת לערך, נלחץ על Save ונעבור לקוד כלשהו באפליקציה שלנו שאנחנו רוצים לשלוף בו את הערך הזה.

    ה - Resources נמצאים אוטומטית תחת מרחב השמות Resources (שימו לב כי יש מרחב שמות System.Resources שמכיל בתוכו מחלקות של ה - Framework).

    שם ה - Class של המשאבים שלנו יהיה זהה לשם הקובץ ללא הסיומת שלו:

    03

    ניתן גם לגשת למשאבים דרך דף ה - ASP.NET עצמו בצורה הבאה:

    04 

    עד כאן על קבצי Resources, ניתן לקרוא עוד על הנושא ב - MSDN, ובאתר asp.net:

    שימוש בקבצי XML מותאמים אישית

    ניתן לשמור את הנתונים בקבצי XML שאנחנו ניצור שישמרו תחת התקייה App_Data, ולגשת אליהם דרך מחלקות שיגשו לקבצים וישלפו את הערכים.

    ב - 4GuysFromRolla יש מאמר מעולה, שמסביר איך ליצור את המנגנון הזה - כולל Caching של קובץ ה - XML (מכיוון שקריאה מקבצים באופן תדיר היא לא יעילה (ולא חכם לעבוד כך)): Using XML to Share Constants Across Projects.

    במאמר מוסבר כיצד ליצור את קבצי ה - XML ואת המחלקות שמטפלות ושלופות מהקובץ, איך להתעסק עם ה - Cache וגם איך ליצור גרסאות (כך שניתן בקלות להעלות את הקבצים ל - Testing או ל - Production עם ערכים אחרים מבלי לערוך את הקבצים לפני שמעלים או על השרת).

    לשתי השיטות יתרונות וחסרונות משלהן, ה - Resources נותנים יכולות כמו Localization, ובנוסף ניתן לערוך אותם עם עורך פשוט.

    קבצי ה - XML מאפשרים ליצור Versions וגם ממשק לעריכה שלהם בזמן ריצה דרך האפליקציה בקלות יחסית (לקבצי ה - Resource יש פורמט טיפל'ה מסובך).

    פורסם: Dec 15 2007, 05:28 PM by OhadAston | with 2 comment(s)
    תגים:, ,

    תוכן התגובה

    ekampf כתב/ה:

    רק לגבי השורה האחרונה, בשביל לקרוא ולכתוב קבצי resx יש את ResXResourceWriter\Reader ככה שגם אם הפורמט מסובך לא צריך להתעסק איתו.

    # December 16, 2007 6:22 AM

    OhadAston כתב/ה:

    תודה על העדכון:)

    # December 17, 2007 2:43 PM
    שלח תגובה

    (שדה חובה)  

    (שדה חובה)  

    (אופציונלי)

    (שדה חובה) 

    Please add 7 and 7 and type the answer here:


    Enter the numbers above: