PDA

View Full Version : تبدیل یک برنامه دولایه به سه لایه



حمیدرضاصادقیان
چهارشنبه 06 آذر 1387, 17:32 عصر
سلام دوستان. من میخواستم ساختار برنامه رو از دولایه به سه لایه تغییر بدم. از کجا شروع کنم بهتره؟
چون برنامه در حال کار هستش میخوام مشتری هامون به مشکل برخورد نکنن. و از لحاظ زمان بندی چقدر طول میکشه( تقریبی)

ghabil
چهارشنبه 06 آذر 1387, 20:20 عصر
اولا چرا؟ میخوای چی بدست بیاری؟
دوما چقدر روی برنامه نویسی چند لایه تسلط داری و چقدر با مشکلات و دردسرهاش آشنایی؟
سوما از چه تکنولوژِ میخوای استفاده کنی ؟
چهارما برنامت چی هست ؟ حجمش چقدره ؟ کدوم بخشهاش رو میخوای منتقل کنی به لایه های میانی؟
پنجما ساموار میگم اگر خیلی واجب نیست و دلیل خیلی خوبی نداری این کار رو نکن، چون خیلی اذیت میشی!

ali_kolahdoozan
چهارشنبه 06 آذر 1387, 21:05 عصر
1- روندهای لایه بندی هیچ ربطی به مشتری شما نداره . شما هر طوری به db وصل بشی و کار کنی در نتیجه برای مشتری فرقی نداره
2- اگر در هر منطقی که رفتی راحتی فعلا این پروژه رو جمع کن بعد تغییر رویه بده
3- این بحثها برای راحتی برنامه نویس است نه برای تبلیغ . توی کاتالوگ نرم افزارها نوشته بر اساس چند لایه و ... آخه چه فرقی داره برای مشتری؟

vcldeveloper
پنج شنبه 07 آذر 1387, 03:00 صبح
3- این بحثها برای راحتی برنامه نویس است نه برای تبلیغ . توی کاتالوگ نرم افزارها نوشته بر اساس چند لایه و ... آخه چه فرقی داره برای مشتری؟
فرقش در این هست که اگر فرضا مشتری احساس کرد روی سرورش بیش از حد فشار میاد، میتونه با توجه به وجود چند لایه مستقل، بعضی از لایه ها را روی سرور مجزا نصب کنه. از طرفی، چون بخش عمده پردازش ها در سمت سرور انجام میشه، لایه کلاینت کم حجم تر میشه، و نصب آن بر روی سیستم های کلاینت راحتتر خواهد بود، یا حتی می توان راحت تر آن را Web Base کرد. از طرفی، به دلیل وجود یک لایه میانی که وظیفه کنترل Business Logic را برعهده داره، در صورت لزوم تغییر در برنامه، یا قوانین حاکم بر آن، راحت تر میشه تغییرات را انجام داد. پس برای مشتری هم فرق میکنه که معماری برنامه چی باشه!

zman123456
پنج شنبه 07 آذر 1387, 10:32 صبح
دلایلی که آقای کشاورز فرمودند واقعا قابل توجه هست.پس اگه میشه بقیه ماجرا رو ادامه بدید.

حمیدرضاصادقیان
پنج شنبه 07 آذر 1387, 11:27 صبح
ممنون از تمامی دوستان. من با معماری چند لایه آشنایی تقریبا کاملی دارم. و با دردسرهاش نیز آشنایی دارم. ولی برای افزایش سرعت کار برنامه ، امنیت بیشتر ، و منتقل کردن لایه محاسبات به لایه میانی و سمت سرور میخوام بار ترافیکی روی سیستم مشتری رو کم کنم.البته اینکار رو در معماری دولایه با استفاده از منتقل کردن اطلاعات سمت سرور با استفاده از پروسیجر انجام دادم. ولی میخوام بتونم به صورت آفلاین نیز از مزیت های سه لایه استفاده کنم. برای شبکه هایی که فاصله های خیلی زیادی از هم دارند و میخوان به صورت آفلاین باهم کار کنند. که تاجایی که من میدونم در معماری سه لایه این امکان وجود داره.
بازهم از بقیه دوستان تشکر میکنم.البته این پروژه تمام شده هست. و تقریبا 600 مشتری مختلف دارند از این برنامه استفاده میکنند.

vcldeveloper
جمعه 08 آذر 1387, 04:23 صبح
من با معماری چند لایه آشنایی تقریبا کاملی دارم. و با دردسرهاش نیز آشنایی دارم. ولی برای افزایش سرعت کار برنامه ، امنیت بیشتر ، و منتقل کردن لایه محاسبات به لایه میانی و سمت سرور میخوام بار ترافیکی روی سیستم مشتری رو کم کنم.البته اینکار رو در معماری دولایه با استفاده از منتقل کردن اطلاعات سمت سرور با استفاده از پروسیجر انجام دادم. ولی میخوام بتونم به صورت آفلاین نیز از مزیت های سه لایه استفاده کنم. برای شبکه هایی که فاصله های خیلی زیادی از هم دارند و میخوان به صورت آفلاین باهم کار کنند. که تاجایی که من میدونم در معماری سه لایه این امکان وجود داره.
به این سوال هنوز جواب ندادید:

سوما از چه تکنولوژِی میخوای استفاده کنی ؟

حمیدرضاصادقیان
جمعه 08 آذر 1387, 12:08 عصر
منظورتون چی هست؟ خوب من میخوام ساختار رو به سه لایه تبدیل کنم. میخوام با کمک دوستان یک تکنولوژی مناسب رو براش انتخاب کنم.منظورتون رو از تکنولوژی متوجه نشدم. آیا منظور همون Dcom,Soap و... هست؟ اگر اینطوریه بیشتر تمایل دارم سمت تکنولوژی برم که به راحتی بشه سیستم رو به تحت وب انتقال داد.

ali_kolahdoozan
جمعه 08 آذر 1387, 12:30 عصر
توی وبلاگ بهروز راد روش خوبی معرفی شده

ghabil
جمعه 08 آذر 1387, 12:38 عصر
تا جایی که من خبر دارم بهروز راد بیشتر دات نت کار میکنه و احتمالا چون ایشون توی بهش دلفی سوال پرسیدن سوال دلفی دارند.

نرم افزاری که 600 تا مشتری داره و حتما کلی جاها نصب هست ، دست زیدن بهش خیلی انگیزه و دلیل میخواد چون دوباره باید بری نصب کنی دوباره باید دیباگ بشه دوباره باید آموزش داده بشه و ...

vcldeveloper
جمعه 08 آذر 1387, 17:45 عصر
منظورتون چی هست؟ خوب من میخوام ساختار رو به سه لایه تبدیل کنم. میخوام با کمک دوستان یک تکنولوژی مناسب رو براش انتخاب کنم.منظورتون رو از تکنولوژی متوجه نشدم. آیا منظور همون Dcom,Soap و... هست؟ اگر اینطوریه بیشتر تمایل دارم سمت تکنولوژی برم که به راحتی بشه سیستم رو به تحت وب انتقال داد.
یک سری فریم ورک برای برنامه های multi-tier وجود داره که شما می تونید از آنها استفاده کنید، یا خودتان فریم ورک مخصوص خودتان را طراحی کنید. طراحی یک فریم ورک مخصوص به خودتان میتونه مزیت هایی داشته باشه، ولی کاری هست بسیار هزینه بر و وقت گیر. برای همین هم در اکثر مواقع از فریم ورک های آماده استفاده میشه. در دلفی بطور پیش فرض DataSnap وجود داره. DataSnap یک لایه ارتباطی بر اساس DCOM, Socket, یا SOAP ایجاد میکنه، به همراه یک لایه دسترسی به داده های بانک اطلاعاتی از راه دور. DataSnap تا مدتها بروز نشد، تا اینکه در دلفی 2009 بروز شد، اما نسبت به نسخه های گذشته تغییرات عمده ایی کرد. اولین تغییر این بود که برخلاف گذشته، DataSnap 2009 برپایه dbExpress بنا نهاده شد، و امکان کار با سایر تکنولوژی های ارتباط با بانک را نداره. البته خودِ dbExpress هم در دلفی 2007 دستخوش تغییرات زیادی شد، و امکانات زیادی بهش اضافه شده. استفاده از dbExpress به DataSnap 2009 این امکان را داد که قابلیت هایی مثل فراخوانی متدهای سرور از راه دور بجای Stored Procedure، یا پشتیبانی از کلاینت های جاوا و دات نت را ارائه کند. نکته دیگه ایی که درباره DataSnap 2009 مهم هست، اینه که این ابزار برخلاف نسخه های گذشته، فقط از Indy و بصورت برقراری ارتباط سوکت پشتیبانی میکنه، و مثل سابق چند نوع روش انتقال داده نداره. البته هنوز کامپوننت های نسخه های قبلی وجود دارند، و کاربر می تواند هنوز از آنها بجای DataSnap 2009 یا در کنار آن، استفاده کند. بطور کلی، انتظار میره که قابلیت های بسیار بیشتری به DataSnap 2009 در نسخه های آینده اضافه بشه.
در کنار DataSnap 2009، شرکت های 3rd Party هم محصولات مختلفی در این زمینه ارائه کردند. معروف ترین و جالبترین شان را که من دیدم، RemObjects DataAbstract بود. DataAbstract یک لایه ارتباط با بانک اطلاعاتی از راه دور فراهم میکنه که برپایه Schema هست، یعنی وابستگی به نوع تکنولوژی بکار رفته برای اتصال به بانک اطلاعاتی، یا خودِ سرور بانک اطلاعاتی نداره. از طرفی DataAbstract روی بستری بنام RemObjects SDK قرار میگیره که وظیفه انتقال اطلاعات بین لایه های مختلف را برعهده داره. RemObjects SDK از انواع و اقسام ارتباطات، پشتیبانی میکنه، و قابل رقابت با Remoting دات نت هست. SDK همچنین به شما این امکان را میده که از سمت سرور، متدهایی از کلاینت را هم بصورت Callback فراخوانی کنید. محصولات RemObjects را می توان در دلفی و در دات نت استفاده کرد، که این هم خودش یک حسن بزرگ هست، چون با تغییر پلت فرم به دات نت، نیازی به تغییر این لایه ها ندارید. در کنار اینها، قابلیت کنترل لایه ها، و حتی Business Logic با استفاده از PascalScript هم در آنها تعبیه شده. البته RemObjects DataAbstract و SDK در بسیاری از کارها روش های خاص خودشان را دارند، و برای یادگیری آنها باید وقت صرف کنید. حتی نحوه ارتباط برقرار کردنشان با بانک اطلاعاتی هم متفاوت از روشی است که در دلفی به آن عادت کردید!
نکته دیگه درباره این محصولات این هست که Documentation رسمی ندارند؛ یعنی کل راهنما بصورت چند ده مقاله، چندین فیلم آموزشی، و یک Wiki در سایت RemObjects ارائه میشه. البته سورس محصولات به همراه تعداد زیادی Demo - با توضیحات مناسب - به مشتری تحویل داده میشه. بطور کلی، DataAbstract و RemObjects SDK قابلیت های زیادی برای ساخت برنامه های Enterprise در هر دو سکوی Win32 و دات نت ارائه می کنند. بسته نصب DataAbstract (شامل SDK هم هست) در حدود 60 مگابایت هست، که وقتی روی دلفی نصب میشه، چیزی در حدود 160 مگابایت را اشغال میکنه.
من خودم هنوز از محصولات RemObjects در هیچ پروژه ایی استفاده نکردم، ولی مدتی هست که یک نسخه از آن را روی دلفی 2009 نصب کردم، و نگاهی هم به برخی مقالات منتشره شده درباره آنها انداختم.

شرکت های دیگه ایی هم هستند که محصولاتی در این زمینه ارائه کردند، الان اسمشان یادم نیست، و باید بگردم تا مشخصات محصولاتشان را پیدا کنم.

حمیدرضاصادقیان
جمعه 08 آذر 1387, 20:46 عصر
سلام. علی آقا بابت توضیحات کاملتون ممنون. خوب من دارم درحال حاضر با دلفی 7 کار میکنم. فکر میکنم فعلا مجبور به استفاده از datasnap با پروتکل هایی میباشم که داره ساپورت میکنه. ظاهرا میتونم از Com+ یا Soap استفاده کنم.که Soap بیشتر برای بحث تحت وب مطرح میشه و Com+ برای ویندوزی.
حالا ازکجا باید شروع کنم؟ در اصل من میخوام ساختار برنامه رو تغییر بدم.چون میدونم با ساختار فعلی برنامه در رکوردهای بالا به مشکل برخواهد خورد. دلم نمیخواد در رکوردهای بالا سیستم مشتری به گیر بربخوره. به جز تغییر ساختار برنامه نیاز به تغییر ساختار خیلی از جداول و کوئری ها میباشد. در صورتی که من یکی دوتا گزارش رو یکروز وقت گذاشتم و کوئری مربوطه رو عوض کردم روی 30000 رکورد که تقریبا چیزی حدود 1 ساعت و 45 دقیقه طول میکشید به تقریبا کمتر از 5 ثانیه سرعت گزارش افزایش یافت.

vcldeveloper
شنبه 09 آذر 1387, 00:04 صبح
من دارم درحال حاضر با دلفی 7 کار میکنم. فکر میکنم فعلا مجبور به استفاده از datasnap با پروتکل هایی میباشم که داره ساپورت میکنه. ظاهرا میتونم از Com+ یا Soap استفاده کنم.که Soap بیشتر برای بحث تحت وب مطرح میشه و Com+ برای ویندوزی.
SOAP را می توانید برای انتقال هر نوع داده ایی استفاده کنید. خود مایکروسافت هم در WCF روی استفاده از SOAP تاکید داره. خوبیش این هست که اگر بعدا بخواید برنامه کلاینت را به سکوی دیگه ایی منتقل کنید، یا آن را Web Base کنید، باز هم می توانید ازش استفاده کنید. همچنین، چون از HTTP استفاده میکنه، در تنظیم شبکه، و فایروال هم مشکل نخواهید داشت. اما مشکل اصلی اش متنی بودن آن هست، یعنی برای هر چیزی باید یک سند XML ارسال یا دریافت بشه. این باعث کند شدن انتقال اطلاعات میشه، امنیت اطلاعات را هم به خطر میاندازه. البته برای آن هم راهکارهایی وجود داره، مثلا می تونید داده متنی را قبل از ارسال فشرده سازی کرده، و رمزنگاری کنید، تا هم حجمش کاهش پیدا کند، هم امنیتش افزایش پیدا کند.
در مقابل، DCOM چون داده ها را بصورت باینری منتقل میکنه، حجم داده های منتقل شده در آن کمتر هست، پس سریعتر عمل میکنه. اما DCOM پیچیدگی های بیشتری داره، و تنظیم کردن آن، بخصوص بحث تنظیم فایروال های موجود در شبکه، کار پیچیده ایی هست. از طرفی، در این حالت سرور و کلاینت باید ویندوز باشند.
استفاده از DataSnap موجود در دلفی 7 زیاد مطمئن نیست، چون با وجود DataSnap 2009، این نسخه الان فقط برای سازگاری با نسخه های پیشین نگهداری شده، و احتمال داره در نسخه های بعدی دلفی اصلا وجود نداشته باشه! از طرفی، DataSnap موجود در دلفی 7 باگ ها و قلق های خاص خودش را داره، یعنی علاوه بر اینکه درباره اش مطالعه می کنید، باید آن را به دفعات تجربه کنید، تا قلق ها، و باگ هایش را بشناسید، و آنها را دور بزنید. در هر حال، شروع کار بر پایه یک تکنولوژی منسوخ شده، خیلی جالب نیست. من پیشنهاد می کنم که یا برید سراغ DataSnap 2009، یا یک فریم ورک 3rd Party مثل DataAbstract.

اما اینکه چطور باید کار انجام بشه...
روال کار به این صورت هست که Application Server شما باید یک یا چند Interface برای ارتباط کلاینت ها با آن، ایجاد کنه، و خودش هم در کلاس هایی این Interfaceها را پیاده سازی کنه. علاوه بر این، در صورتی که باید داده های بانک بصورت DataSet بین Application Server و Clientها منتقل بشه، باید از یک DataSetProvider (در DataSnap) هم استفاده بشه. DataSetProvider روی یک Remote DataModule قرار میگیره، که با اجرای سرور، Interface طراحی شده، و DatasetProviderهای موجود را برای استفاده کلاینت ها، منتشر میکنه.
در سمت کلاینت، کلاینت با استفاده از کامپوننت های مناسب نوع ارتباطی که برای سرور تعریف شده (مثل سوکت، DCOM, SOAP، و...) سعی میکنه به سرور متصل بشه، و به Interfaceهای منتشر شده دسترسی داشته باشه. با فراخوانی هر یک از متدهای تعریف شده در آن Interfaceها، سرور یکسری عملیات انجام میده، و نتیجه را به کلاینت بر میگردانه. برای دسترسی به DatasetProviderها، کلاینت باید از ClientDataset استفاده کنه؛ ClientDataset به DatasetProviderایی که از طرف سرور منتشر شده، متصل میشه، و با آن به تبادل داده می پردازه. برای کنترل داده های رد و بدل شده بین ClientDataset، و DatasetProvider، هر کدام از این دو کامپوننت تعداد زیادی Event دارند که برای امور مختلف، در مراحل مختلف انتقال داده، از آنها استفاده میشه. مثلا DatasetProvider میتونه قبل از انتقال تغییرات اعمال شده بر روی داده ها توسط ClientDataset، در آنها تغییراتی اعمال کنه، و سپس آنها را به سرور ارسال کنه. یا میشه از طریق این Eventها، علاوه بر داده های بانک، اطلاعات دیگری را هم به بسته های ارسالی ضمیمه کرد. در DataAbstract، دیتاستی که به کلاینت فرستاده میشه، میتونه کاملا متفاوت از داده ایی باشه که در بانک نگهداری میشه.

مهمترین چیزی که در این طراحی وجود داره، طراحی Interfaceها هست (البته دقت کنید که DatasetProvider هم در اینجا نقش یک Interface را بازی می کند)؛ این Interfaceها قراردادی بین کلاینت و لایه میانی هستند، و تا زمانی که تغییر داده نشند، کلاینت میتونه به لایه میانی متصل بشه. پس باید روی طراحی این Interfaceها دقت کنید. نکته بعدی این هست که عمده پردازش ها در لایه میانی انجام میشه، پس باید پردازش هایی که در سمت کلاینت انجام می دادید را با این لایه منتقل کنید، مثلا اگر تعدادی فیلد Calculated داشتید که باید مقدارشان محاسبه میشد، باید این کار در لایه میانی انجام بشه، و کلاینت فقط دیتاستش را دریافت کنه، یا اگر مثلا یک کوئری داشتید که تعداد یک قلم کالا را بر می گرداند، باید برای آن در Interface خود یک متد تعریف کنید که وقتی در لایه میانی اجرا می شود، کوئری را فراخوانی کند، و مقدار را بصورت Integer به Client ارسال کند، و تغییرات دیگه...

حمیدرضاصادقیان
شنبه 09 آذر 1387, 08:52 صبح
ممنون.توضیحات جالب و کاملی بود. پس من سعی میکنم در حال حاضر پروژه رو به دلفی 2009 منتقل کنم.چون چیز خاصی نداره که به مشکل بربخورم.بعد در مورد ادامه کار باهم بحث خواهیم کرد.

zman123456
شنبه 09 آذر 1387, 09:58 صبح
از آقای کشاورز خواهش می کنم یه تاپیک باز کنن و این مطالب را آنجا درج کرده و شروع به آموزش نمایند.برای این کار هم یک پروژه تعریف کنن تا دوستان علاقه مند هم بتونن استفاده کنن.
من خودم به شخصه چون اطلاعات پایه ای در این زمینه برنامه نویسی ندارم(درسته توضیحات آقای کشاورز کامل هست ولی فکر کنم برای کسی که اطلاعات پایه ای داشته باشه ) شاید نتونم از توضیحات ایشون استفاده کنم.
اگر امکان پذیر هست لطفا آدرس تاپیک را برای راهنمایی بیشتر در اینجا قرار دهند.
با تشکر

حمیدرضاصادقیان
شنبه 09 آذر 1387, 14:32 عصر
سلام.از Datasnap دلفی 2007 استفاده کنم چطور؟ اخه کامپوننتهایی استفاده کردم که فقط برای 2007 داره ولی برای 2009 نداره.

vcldeveloper
شنبه 09 آذر 1387, 23:59 عصر
پس من سعی میکنم در حال حاضر پروژه رو به دلفی 2009 منتقل کنم.چون چیز خاصی نداره که به مشکل بربخورم.مهاجرت به دلفی 2009 با توجه به تغییرات اساسی که در دلفی 2009 صورت گرفته، تا حدودی مشکل هست. البته اگر کسی با تغییرات انجام شده آشنا باشد، می تواند کد خود را برای دلفی 2009 تغییر دهد، اما تغییر کد کامپوننت ها، یا پیدا کردن نسخه مربوط به دلفی 2009 آنها، بسیار وقت گیر هست.
البته این مهاجرت تا حدود زیادی واجب هم هست، چون ما همیشه با استفاده از فارسی در برنامه ها (چه بانک اطلاعاتی، چه برنامه های غیر بانک اطلاعاتی)، مشکل داشتیم، پشتیبانی دلفی 2009 از یونیکد این مشکلات را برطرف میکنه.


از Datasnap دلفی 2007 استفاده کنم چطور؟ اخه کامپوننتهایی استفاده کردم که فقط برای 2007 داره ولی برای 2009 نداره.DataSnap دلفی 2007 برپایه همون DataSnap قدیمی هست، یعنی باگ هاش کمتر شده، ولی همون DataSnap هست. در حالی که DataSnap 2009 یک تکنولوژی جدید، با ساختاری نسبتا جدید هست. تکنولوژی قبلی فقط برای Backward Compatibility نگهداری میشه؛ یعنی اگر پروژه ایی از قبل دارید که با آن نوشته شده، هنوز می تونید ازش استفاده کنید، ولی اگر می خواید پروژه ایی را جدیدا به معماری چند لایه ارتقاء بدید، یا یک پروژه جدید شروع کنید، صلاح نیست از آن استفاده کنید!
پس پیشنهاد من این هست: یا از DataSnap 2009 استفاده کنید، یا از یک فریم ورک 3rd Party. در بین فریم ورک های موجود هم، براساس امکاناتی که ارائه می کنند، نه تجربیاتی که از کار باهاشون دارم، RemObjects DataAbstract (http://www.remobjects.com/da.aspx#2) یک سر و گردن از بقیه بالاتر هست. در اینجا (http://devcenter.remobjects.com/articles/?id=%7BF53F7529-D5F8-41C6-9A22-D2CB45750617%7D) هم می تونید مقالاتی که در مورد DataAbstract نوشته شده را مطالعه کنید.

zman123456
یک شنبه 10 آذر 1387, 08:29 صبح
کسی نیست که برای ما جوابی بده.خدای نکرده خواهشی داشتیم؟

حمیدرضاصادقیان
یک شنبه 10 آذر 1387, 12:03 عصر
سلام.از کجا میشه این ابزار رو دریافت کرد؟

hamid1tarkesh
یک شنبه 10 آذر 1387, 14:27 عصر
با سلام
متاسفانه من در پیاده سازی این معماری چند لایه به یک مشکل بزرگ برخوردم.
من در یک فرم از ADOTable برای خواندن داده ها از DB استفاده کردم و بعد ADOTable به یک DataSetProvider وصل کردم و اونو هم به یک ClientDataSet و اونو هم به DataSource و در آخر به یک DBGrid . تا اینجا همه چیز درسته و داده ها رو هم درست نشون میده امااااا

DBGrid رو RightToLeft کردم همه چیز خراب شد. اگه روی DBGrid یک فرم دیگه باز کنید می بینید که DBGrid خودش RePaint نمی کنه. یا اگه رکورد ها را به کمک Scroll از پایین به بالا پیمایش کنیم رکورد ها تکراری می شه.
حتی این مشکل در Delphi 2009 هم چک کردم و این مشکل وجود داشت.

یک برنامه نمونه هم گزاشتم که دوستان راحت تر بتونن این مشکل بررسی کنند و عکس مربوط به مشکل به وجود آمده هم هست.

با تشکر از دوستان گرامی

vcldeveloper
یک شنبه 10 آذر 1387, 18:53 عصر
متاسفانه من در پیاده سازی این معماری چند لایه به یک مشکل بزرگ برخوردم.
این مشکلی که مطرح کردید مربوط به یک کنترل نمایشی، مثل DBGrid میشه، و ربطی به تبدیل یک برنامه دو لایه به سه لایه، یا معماری سه لایه نداره!
لطفا مشکلتان را در یک تاپیک جدید مطرح کنید.

vcldeveloper
یک شنبه 10 آذر 1387, 18:59 عصر
کسی نیست که برای ما جوابی بده.خدای نکرده خواهشی داشتیم؟
اینها چیزهایی هست که باید خودتون درباره اش مطالعه کنید. به فرض هم که من یک تاپیک بزنم، و درش یک پروژه بزارم، اگر شما اطلاعاتی درباره معماری Client\Server یا n-tier نداشته باشید، پروژه مربوطه چندان بدردتان نمیخوره. در همین تاپیک hamid1tarkesh یک پروژه گذاشتند. در تاپیک های دیگه هم درباره DCOM و DataSnap برخی دوستان توضیحاتی در قالب انجام یک پروژه ارائه کردند، نمونه اخیرش این تاپیک (http://www.barnamenevis.org/forum/showthread.php?t=132911&page=5) هست.