<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geektime &#187; DTO pattern</title>
	<atom:link href="http://www.geektime.co.il/tag/dto-pattern/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geektime.co.il</link>
	<description></description>
	<lastBuildDate>Thu, 23 May 2013 09:16:38 +0000</lastBuildDate>
	<language>he-IL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>גישות הפיתוח לאפליקציות N-Tier עם Entity Framework</title>
		<link>http://www.geektime.co.il/n-tier-entity-framework/</link>
		<comments>http://www.geektime.co.il/n-tier-entity-framework/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 10:09:10 +0000</pubDate>
		<dc:creator>גיל פינק</dc:creator>
				<category><![CDATA[פיתוח]]></category>
		<category><![CDATA[Change Set pattern]]></category>
		<category><![CDATA[DTO pattern]]></category>
		<category><![CDATA[Entity Framework 4]]></category>
		<category><![CDATA[N-Tier]]></category>
		<category><![CDATA[Self-Tracking Entity pattern]]></category>
		<category><![CDATA[Simple Entity pattern]]></category>

		<guid isPermaLink="false">http://www.geektime.co.il/?p=29226</guid>
		<description><![CDATA[פיתוח מערכות N-Tier מאז ומתמיד הוא נושא מאוד מורכב. Entity Framework 4 מכיל בתוכו אפשרות לבנות מימוש לכל אחת מגישות הפיתוח למערכות N-Tier ואף נותן למפתחים מימושים לחלק מהגישות. השימוש ב- Entity Framework מקל מאוד על בניית מערכות N-Tier מכוונות מידע. ]]></description>
				<content:encoded><![CDATA[<p><em><strong>חברת מיקרוסופט עורכת את <a href="http://www.microsoft.com/israel/events/teched/" target="_blank">כנס Tech-Ed 2010</a> שיתקיים באילת ב-28-30 בחודש נובמבר. אחד המסלולים המרכזיים בכנס הוא <a href="http://www.microsoft.com/israel/TechEd2010/Tracks/DEV.aspx" target="_blank">מסלול טכנולוגיות פיתוח</a></strong></em><em><strong>, במסגרתו תועבר גם הרצאה בנושא </strong><strong>Building N-Tier Applications Using Entity Framework 4. </strong></em><em><strong>אם אתם  מעוניינים  ללמוד יותר על פלטפורמות הפיתוח בסביבת מיקרוסופט,   אתם <a href="http://www.microsoft.com/israel/TechEd2010/Content/prices.aspx">מוזמנים לשריין את מקומכם</a> במסלול טכנולוגיות הפיתוח</strong></em><em><strong></strong></em><em><strong> בכנס.</strong></em></p>
<p><a href="http://www.geektime.co.il/wp-content/uploads/2010/11/vs-logo-300x1981.jpg"><img class="alignleft size-full wp-image-29227" title="vs-logo-300x198" src="http://www.geektime.co.il/wp-content/uploads/2010/11/vs-logo-300x1981.jpg" alt="" width="300" height="198" /></a></p>
<p>פיתוח מערכות N-Tier מבוססות מידע היא משימה מאוד מאתגרת. ישנם נושאים רבים שיש להביא בחשבון לפני קבלת החלטות לגבי העיצוב מערכת ה- N-Tier הכוללים בין השאר מעקב אחרי שינויים בסביבת ה- client, עבודה עם טראנזקציות, מקביליות ועוד. במאמר זה נסקור את גישות הפיתוח המקובלות כיום על מנת לפתח מערכת N-Tier בעזרת Entity Framework.</p>
<h3>גישות הפיתוח לאפליקציות N-Tier</h3>
<p>ישנן ארבע גישות פיתוח עיקריות כאשר מפתחים מערכת N-Tier ומשתמשים ב- Entity Framework כבסיס לשכבת הגישה לנתונים:</p>
<ul>
<li>Change Set pattern</li>
<li>Simple Entity pattern</li>
<li>DTO pattern</li>
<li>Self-Tracking Entity pattern</li>
</ul>
<p>לכל אחת מהשיטות יש יתרונות וחסרונות. אם משווים בין הגישות השונות כאשר הפרמטרים הם ארכיטקטורה טובה מול קלות המימוש נקבל גרף הדומה לגרף הבא:<a href="http://www.geektime.co.il/wp-content/uploads/2010/11/ntier1.png"><img class="aligncenter size-full wp-image-29229" title="ntier1" src="http://www.geektime.co.il/wp-content/uploads/2010/11/ntier1.png" alt="" width="276" height="266" /></a></p>
<h3>Change Set</h3>
<p>גישת הפיתוח של Change Set היא ליצור מבנה נתונים אשר ניתן לשינוע (serializable) ומכיל את כל היישויות והנתונים הדרושים ליחידת עבודה אחת (unit of work). מבנה הנתונים אמור להכיל בתוכו מימוש של מעקב אחרי כל השינויים על כל הנתונים שהוא מכיל. דוגמא מאוד טובה לגישה הזאת בעולם הדוט נט הוא אובייקט ה- DataSet. הבעיות העיקריות בגישה הזו הן יצירת אילוצים משמעותיים על צד הלקוח אשר אינם מאפשרים להפוך את המימוש ל- interoperable (בפועל הלקוח יהיה חייב להשתמש בדוט נט) והעובדה שנוצר tight coupling בין שני tiers. ישנו מימוש עבור Entity Framework שנותן יכולות של Change Set ונקרא EntityBag אבל הוא כרגע לא נתמך ב- Entity Framework 4.</p>
<h3>Simple Entity</h3>
<p>בדומה ל- Change Set גישת ה- Simple Entity מאפשרת reuse ליישויות מה- mid-tier, אבל בשונה מ- Change Set בגישה זו המפתח לא עוטף את היישויות תחת מבנה נתונים מסובך אלא שולח לצד הלקוח יישויות פשוטות (POCO). בגישה זו מאפשרים שינויים רק על מאפיינים של היישות וכל פעולת שינוי פשוטה (הכנסה, עדכון ומחיקה) נתמכת במתודות בצד ה- mid-tier. במידה ויש צורך בפעולות יותר מורכבות כמו לדוגמא שינוי יחס בין יישויות או שילוב של כמו עדכונים יחדיו יהיה צורך לבנות מתודות בצד ה- mid-tier שיבצעו את הפעולות הללו. היתרון בשימוש בגישה זו הוא הפשטות שבה. החסרון העיקרי שבה הוא שהיא מצריכה ריבוי של מתודות בצד ה- mid-tier עבור כל תרחיש מורכב. הדבר יכול לגרום לעומס על הרשת כאשר פונים ל- mid-tier. ב- Entity Framework 4 תוספת הפיטצ'ר של POCO מאפשר לממש את הגישה הזאת די בקלות.</p>
<h3>DTO</h3>
<p>הגישה ההפוכה לגישת ה- Change Set. בגישת פיתוח זו יש הפרדה מוחלטת בין צד הלקוח לבין ה- mid-tier כאשר משתמשים ביישויות שונות עבור ה- mid-tier ומשתמשים ביישויות אחרות על מנת לשנע נתונים לצד הלקוח בעזרת ה- Data Transfer Objects עצמם. היתרון המובהק לשימוש בגישה זו הוא שאין צימוד בין ה- tiers ולכן כל tier יכול להתפתח בצורה נפרדת על פי לוחות זמנים נפרדים. כמו כן, ניתן לשמור על המידע שעובר בין ה- tiers בפורמט יציב בלי להתייחס לשינויים שמתרחשים בכל אחד מה- tiers. החסרון העיקרי בגישה זו הוא הזמן הנדרש לפתח את כל סוגי היישויות והצורך למפות מידע בין ה- DTO לבין היישויות שנמצאות ב- mid-tier או בצד הלקוח. Entity Framework 4 מאפשר מימוש של הגישה בצורה נוחה ובעזרת כלים כמו תבניות T4 שמפתחים יכולים לבנות ואשר יכולות למכן את התהליך של יצירת ה- DTO.</p>
<h3>Self-Tracking Entity</h3>
<p>גישת ה- STE מאפשרת שילוב של היתרונות בין שימוש ב- DTO לבין השימוש ב- Change Set. בגישה זו המפתח שולח לצד הלקוח יישויות אשר מכילות מנגנון מעקב אחרי שינויים מובנה. המנגנון הנ&quot;ל אמור גם לעקוב לא רק אחרי שינויים ביישות הבודדת אלא גם בגרף יישויות. חסרון אחד של גישה זו הוא שעל מנת לבצע מיזוג של שני גרפי יישויות יהיה צורך לבנות מנגנון מיזוג חכם מה שבדרך כלל יותר פשוט לבנייה בגישת ה- Change Set. חסרון נוסף הוא עצם מנגנון המעקב אחר שינויים שיכול לסבך קצת את הקוד של היישות. Entity Framework 4 מכיל בתוכו מימוש של גישת STE על ידי תבנית T4 שניתן להפעיל על המודלים של Entity Framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geektime.co.il/n-tier-entity-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: geektime.co.il @ 2013-05-23 13:32:52 by W3 Total Cache -->