How to change ASP.NET MVC 2 default folder structure in Visual studio 2010 Beta 2

30 בינואר 2010

החלטנו בצוות לכתוב את המערכת החדשה ב MVC 2 (נשבר כבר מזמן מ web Forms).
מבנה הספריות הדיפולטי לא מתאים לנו – לוגית האפליקציה שלנו מחולקת לשני תחומים עיקריים, לכן רצינו פיצול של הקוד, בעיקר מטעמי תחזוקה.

ב web Forms היינו יוצרים שתי ספריות ומתחת לכל ספריה היו נמצאים הקבצים הרלוונטים אליה.
ב MVC 2 התווסף הפיצ'ר Areas, או יותר נכון single-project area (בגרסא הסופית של MVC 2 לא ישוחרר הפיצ'ר של פיזור areas בפרוייקטים שונים, אבל מי צריך את זה בכלל)-
     הכוונה – הוספת ספריה בשם Areas ב root של הפרוייקט,
                ומתחתיה יש ספריה לכל area – בעצם ספריה שמכילה את ה controllers ו views עבור אותו area
                מאוד נח לחלוקת הפרוייקט, מה גם שיכול להיות לכם controller בשם זהה בשני איזורים שונים(שכמובן יעשה פעולות שונות)
הסבר על areas אפשר לראות בהרצאה מ PDC2009 בשם Microsoft ASP.NET MVC 2: The New Stuff בערך מדקה 12

בצורה מפתיעה, ב 2 visual studio 2010 beta לא קיים התפריט של הוספת area (חבל שהבחור מה PDC לא ציין זאת, ותודה לנעם קינג שהעלה את הנקודה הזו בפניי והפנה אותי לכאן)
קצת מתסכל שבכל חיפוש כמעט הגעתי אל הפוסט של Phil Haack, שמסביר איך לממש areas אבל גם מציין בראשית הפוסט ש "Single project areas are a core part of ASP.NET MVC 2"

איזו התרגשות,יש תמיכה, ויהיו תפריטים בגרסה של visual studio שתצא בפבואר, אבל איך בונים את זה עכשיו??
חיפושים העלו את ההסבר הבא Walkthrough: Organizing an ASP.NET MVC Application using Functional Areas ששוב מראה שימוש בכלים, שכרגע קיימים רק עבור visual studio 2008 מול asp.net mvc 2 rc, אבל יש שם פרוייקט דוגמא :-).
1. תורידו את פרוייקט הדוגמא.
2. צרו בפרוייקט שלכם מבנה ספריות דומה למבנה שיש שם תחת ספרית areas,
    ואל תשכחו להעתיק את קובץ הרישום AreaRegistration.cs בכל אחד מהאיזורים שלכם.
3. עכשיו שנו את שמות האיזורים בקובץ הרישום,
    ואל תשכחו לשנות את ה  namespace (שימו לב שה namespace צריך להכיל .Areas. בשביל שיעבוד).
4. תוסיפו AreaRegistration.RegisterAllAreas(); בפונקציה RegisterRoutes  שב global.asax מיד אחרי ה IgnoreRoute.

סיימנו Happy Happy Joy Joy

הסיבה להיצמדות לקונבנציות האלה קשורה למציאת ה views ע"י ה view engine הדיפולטי של asp.net MVC
יכולנו לכתוב View Engine משלנו ואז לבנות את הפרוייקט באיזו צורה שנרצה (המיקום של ה controller-ים פחות משנה, הם בכל מקרה יזוהו)
אבל אני מעדיף להיצמד לקונבנציה במקרה זה.

הסבר קצרצר באנגלית אפשר למצוא בתשובה שלי ב stackoverflow ועוד הסברים על פתרון בעיות בפוסט הבא

מקווה שזה עוזר למישהו

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *