<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>مدونة النبهاني &#187; تطبيق متعدد الطبقات</title>
	<atom:link href="http://alnabhani.wordpress.com/tag/%d8%aa%d8%b7%d8%a8%d9%8a%d9%82-%d9%85%d8%aa%d8%b9%d8%af%d8%af-%d8%a7%d9%84%d8%b7%d8%a8%d9%82%d8%a7%d8%aa/feed/" rel="self" type="application/rss+xml" />
	<link>http://alnabhani.wordpress.com</link>
	<description>أحدث مواضيعي البرمجية والتقنية</description>
	<lastBuildDate>Sat, 28 Nov 2009 17:05:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ar</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='alnabhani.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/91abf77f7c013d66c6f253d8802f990d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>مدونة النبهاني &#187; تطبيق متعدد الطبقات</title>
		<link>http://alnabhani.wordpress.com</link>
	</image>
			<item>
		<title>التطبيقات متعددة الطبقات N-Tier Applications من منظور تقنيات .Net framework :</title>
		<link>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 10:34:15 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[تقنية net.]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[layers]]></category>
		<category><![CDATA[multi layers]]></category>
		<category><![CDATA[n-tier]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[تطبيق متعدد الطبقات]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=45</guid>
		<description><![CDATA[يعد تطوير التطبيقات على شكل طبقات من افضل الطرق المتبعة في هندسة البرمجيات ، فهنا يمكن تقسيم البرنامج على عدة طبقات Layers تتولى كل طبقة منها مهمه معينه ، وبالتالي يسهل التعديل على أي منها عند حدوث أي خطأ او نقص او اكتشاف اي ثغرة امنية او قصور . وأغلب التطبيقات التجارية &#8211; خصوصا قواعد [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=45&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p dir="rtl">يعد تطوير التطبيقات على شكل طبقات من افضل الطرق المتبعة في هندسة البرمجيات ، فهنا يمكن تقسيم البرنامج على عدة طبقات Layers تتولى كل طبقة منها مهمه معينه ، وبالتالي يسهل التعديل على أي منها عند حدوث أي خطأ او نقص او اكتشاف اي ثغرة امنية او قصور . وأغلب التطبيقات التجارية &#8211; خصوصا قواعد البيانات &#8211; تعتمد هذه الطريقة ، لكن هذا لا يعني ان البرمجيات الصغيرة والمجانية بعيده عن التطبيق هاهنا .في هذا المقال المترجم ، نتطرق &#8211; بشكل نظري &#8211; الى كيفية بناء تطبيقات متعددة الطبقات من خلال تقنيات Microsoft .Net .</p>
<p dir="rtl"><span id="more-45"></span></p>
<p dir="rtl">تحتوي التطبيقات متعددة الطبقات على ثلاث طبقات رئيسية : طبقة العرض  Presentation Layer ، الطبقة الوسطى Middle Layer ، طبقة البيانات DataLayer . ان فصل هذه الطبقات عن بعضها بالطريقة الصحيحة والسلمية يضمن لك الاستفادة من ميزات أسلوب بناء التطبيقات على شكل طبقات ، وافضل طريقة تفصل فيها بين هذه الطبقات بشكل كامل هو ان تكون كل طبقة موجودة في مشروع Project منفصل تجتمع كلها في حل واحد Solution ، وبهذا تصبح كل طبقة منفصلة تماما عن الأخريات ، فقد تكون طبقة العرض Presentation Layer من نوع Windows Forms ، والطبقة الوسطى على هيئة Class Library ، بينما طبقة البيانات قد تكون حتى WCF Service او XML Web service ، وكما ذكرنا أعلاه ، فإن تعديل أي طبقة لن يؤثر على الاخريات بأي حال من الأحوال ، وصدور تقنية جديدة تحتاج الى تطبيقها في احد الطبقات لن يدفعك الى اعادة بناء التطبيق ككل بل الطبقة المعنية بذلك فقط!.</p>
<p dir="rtl"> </p>
<p dir="rtl">يساعدك Visual Studio على تطوير التطبيقات على شكل طبقات بعدة ادوات تتوفر فيه واكاد اجزم بان اغلبكم يعرفها :</p>
<ul>
<li>DataSet Designer : والذي نستغله في عمل مشروعين او طبقتين منفصلتين : طبقة كائنات البيانات Data Entities وطبقة الإتصال والتعامل المباشر مع مصادر البيانات Data Access Layers المتمثل في Data Adapters .</li>
<li>Object Relational Designer : (O/R) Designer : والذي يقوم بتوليد الـ DataContexts وفئات البيانات Data Classes على شكل فضاءات اسماء Namespaces منفصلة تماما ، هذا الفصل يعني انك تفصل طبقة الـ Data Entity عن طبقة Data Accessing .</li>
<li>LINQ to SQL : والذي يمكنك من جمع DataContexts من عدة طبقات معا .</li>
<li>مربع حوار Configure Data Syndication : والذي يمكنك من ضبط إعدادات التزامن بين البيانات الموجودة على الخادم server وتلك الموجودة في Local Database Cache ، هذا يساعدك كثيرا على فصل طبقة الـخادم Server عن طبقة الـعميل Client .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">وفيما يلي موجز عن كل طبقة وما يمكن ان تستخدمه فيها من تقنيات متاحة لك :</p>
<h1>طبقة العرض Presentation Layer:</h1>
<p dir="rtl">وهي تلك الطبقة التي يتعامل بها المستخدم مع البرنامج UserInterface ، وتحتوي ايضا في العادة على المنطق الخاص بالبرنامج  logic ، وفي العادة قد تحتوي طبقة العرض لديك على المكونات التالية :</p>
<ul>
<li>ربط البيانات بالأدوات : DataBinding : والتي تستخدم فيها الـ BindingSource والـ BindingNavigator .</li>
<li>ممثلات كائنات البيانات : كـ Linq to SQL لتستخدمها في طبقة العرض .</li>
<li>قاعدة البيانات المحلية : Local Databases : كـ Local Database Cache والتي تمكنك من مزامنة البيانات مع تلك الموجودة في السيرفر من خلال Microsoft Synchronization Services for ADO.NET .</li>
</ul>
<p dir="rtl">المخطط التالي يوضح طبقة العرض والتقنيات المتوفرة لاستخدامها فيها :</p>
<p dir="rtl"><img class="alignnone" src="http://img379.imageshack.us/img379/6177/prestiertj3.png" alt="" width="421" height="375" /></p>
<p dir="rtl">بقي ان اوضح ان طبقة العرض لا تصل الى طبقة البيانات مباشرة وانما تتصل بالطبقة الوسطى التي بدورها تتصل بطبقة البيانات ، وهنا قد تكون الطبقة الوسطى مشروع WCF او غيره .</p>
<p dir="rtl"> </p>
<h1>الطبقة الوسطى MiddleTier :</h1>
<p dir="rtl">وظيفة هذه الطبقة انها تلعب دور الوسيط بين طبقة البيانات DataLayer وطبقة العرض PresentationLayer .</p>
<p dir="rtl">تتكون الطبقة الوسطى في العادة من المكونات التالية :</p>
<ul>
<li>الـ BusinessLogic : والذي يكون في العادة DataValidation او التحقق من المدخلات والبيانات .</li>
<li>TableAdapters و Datasets .</li>
<li>كائنات تمثيل البيانات : كـ LINQ to SQL entity .</li>
<li>الخدمات العامة Common Services : كالصلاحيات والمأذونيات والتخصيص للمستخدم .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">الشكل التالي يقدم مخططا للتقنيات المتوافرة لاستخدامها في الطبقة الوسطى :</p>
<p dir="rtl"> <img class="alignnone" src="http://img225.imageshack.us/img225/4928/midtierjd9.png" alt="" width="449" height="313" /></p>
<p dir="rtl"> </p>
<p dir="rtl">وتتصل الطبقة الوسطى بطبقة البيانات عن طريق اتصال Data Connection والذي يكون متوفرا في العادة في مكون الاتصال بالبيانات Data Access Component .</p>
<h1>طبقة البيانات : Data Tier :</h1>
<p dir="rtl">وتكون هذه الطبقة موجودة عند مصدر بيانات البرنامج او مكان توافر قاعدة البيانات ، احيانا يكون ذلك خادم Server يحتوي على SQL Server عند الاتصال بقاعدة بيانات من النوع SQL Server ، واستخدام طبقة البيانات بهذه الطريقة يسهل عملية تصميم تطبيقات من نوع Server/Client حيث تكون هذه الطبقة هي المسؤولة عن الاتصال بالـ Server وارسال واستقبال البيانات منه واليه .</p>
<p dir="rtl">الشكل التالي يوضح التقنيات المستخدمة في طبقة البيانات :</p>
<p dir="rtl"> </p>
<p dir="rtl"> <img class="alignnone" src="http://img295.imageshack.us/img295/8560/datatierld8.png" alt="" width="418" height="134" /></p>
<p dir="rtl"> </p>
<p dir="rtl">كان هذا المقال مترجما من مكتبة MSDN سعيت من خلال هذا الامر الى توفير المزيد من المعلومات حول هذا الاسلوب الراقي والاحترافي في تصميم التطبيقات ، ولم اذكر الكثير من التفاصيل ولم ازد الا القليل حتى لا نجعل الامر معقدا .</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=45&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>

		<media:content url="http://img379.imageshack.us/img379/6177/prestiertj3.png" medium="image" />

		<media:content url="http://img225.imageshack.us/img225/4928/midtierjd9.png" medium="image" />

		<media:content url="http://img295.imageshack.us/img295/8560/datatierld8.png" medium="image" />
	</item>
	</channel>
</rss>