مشاهده نسخه کامل
: برنامه نویسی لایه ای
M.Hashemi
12-08-2011, 14:49
با سلام
من همیشه سعی می کنم استاندارد ها را رعایت کنم.
مثلا من سعی می کنم در یک فرم یک کلاس برای database و یکسری فانکشن برای کنترل داده های ui و یک کلاس برای تبدیل تاریخ و ... بسازم تا اصل لایه بندی را رعایت کرده باشم.
حالا برام یک شوال پیش امده :
برای فرم های که نیاز به report دارند چگونه می توانم این اصل را رعایت کنم؟
یعنی اگر crystal report view را در یک new form قرار بدم مشکلی به وجود نمیاد؟
یا این که اصلا باید یک report application بسازم؟(اگر این روش صحیح است در این مورد توضیح دهید که چگونه باید این کار را انجام دهم)
با تشکر
M.Hashemi
14-08-2011, 23:06
با سلام
اگر کسی در این مورد اطلاعی دارد لطفا بنویسد تا من و افراد مثل من استفاده کنند.
با تشکر
سلام.
من اصلاً تا حالا با کریستال کار نکردم.
فقط برنامه نویسیم با کد بوده و از design کاری اصلاً خوشم نمیاد.
اگه مشکل کد دارید بگید.
با تشکر.
narcissnarciss
21-08-2011, 12:16
سلام من مشتاق نوشتن یک پروژه اساسی با asp.net با رعایت معماری چند لایه هستم ولی نمی دانم از کجا شروع کنم .من تازه کلاس asp.net را تمام کردم ولی هنوز خیلی مشکل دارم.لطفا دوستانی که مقالات یا سایتهایی دارند که می توانند برای شروع به من کمک کنند به ایمیل n_azodi@yahoo.com مقالات را برایم ایمیل کنند.
سلام
برای فرم های که نیاز به report دارند چگونه می توانم این اصل را رعایت کنم؟
یعنی اگر crystal report view را در یک new form قرار بدم مشکلی به وجود نمیاد؟
یا این که اصلا باید یک report application بسازم؟
کاری که ما خودمان در شرکت انجام دادیم (بعد از کلی بحث و کتک کاری :31:!) این بود که هر گزارش چاپی (البته کریستال نیست ولی فرقی هم ندارد) خودش یک فایل مستقل dll است.
یک Interface (به معنی برنامه نویسی دات نت اش) یکسان برای تمام گزارش ها وجود دارد که مثلاً شامل نام جدولی که گزارش میتواند روی آن عمل کند و فهرست PrimaryKey هایی که باید چاپ کند میشود.
اینطوری به راحتی با سفارش مشتری میتوان گزارش جدید مدنظر او را ساخت و فقط کافی است در قالب یک فایل ساده در پوشه مورد نظر برنامه کپی شود.
برنامه زمان بالا آمدن از پوشه ای خاص تمام این dll را در آورده و یک Collection ثابت تشکیل میدهد.
اجازه دهید با مثالی توضیح دهم.
مثلاً PersonalReport.Dll در Interface اعلام کرده که روی جدول Personals میتواند گزارش بدهد و درنتیجه آن انتظار PrimaryKey های جدول Personals را در ورودی اش دارد.
در برنامه یک فرم باز میشود که مربوط به نمایش (گراید و تکی و...) جدول Personals میشود.
هسته اصلی از Collection موجود پلاگین های پرینتی که توایی کار روی جدول مذکور را دارند بیرون کشید و به دکمه Print مربوطه در برنامه متصل میکند.
با فرمان کاربر PrimaryKey هایی که فرم باز شده در حال نمایش آن است به Interface رابط DLL پاس داده میشود.
(
یعنی با این روش DLL روی همان DataTable یا مجموعه سطرهای همان فرم کار نمیکند و فقط PrimaryKey ها میگیرد و خودش SELECT دلخواه خودش را اجرا میکند.
ایراد این روش آن است که اطلاعاتی که یکبار در فرم بارگذاری شده بودند مجدد در DLL چاپ هم از دیتابیس خوانده میشوند که میتواند سرعت و بازدهی را کاهش دهد.
مزیت این روش این است کد چاپ از کد فرم مستقل میشود و هر کدام میتوانند SELECT خودشان را داشته باشند، فرم میتواند یکسری فیلد دلخواه خودش را SELECT کند و چاپ میتواند SELECT دلخواه خودش راداشته باشد در نتیجه میتوان فرم های متعدد با چاپ های متعددد داشت که همه با هم به خوبی کار میکنند و بعداً در آینده هم برای گسترش تردید پیش نمی آید که فلان فیلد SELECT بوده یا نه و...
)
مزیت دیگر هم میتوان ان باشد که هر پلاگین را یک برنامه نویس میتواند بنویسید که جلسات طولانی برای هماهنگی کد افراد مختلف را کاهش میدهد، ضمن اینکه هر برنامه نویس میتواند به دلخواه از زبان دات نتی که در ان تجربه و تبهر دارد کار کند و مشکلی هم پیش نخواهد آمد.
حتی (گرچه ما اینکار را نکرده ایم) هر یک از گزارش های چاپی میتواند با ابزاری متفاوت تهیه شده باشد مثلاً با Crystall و Active و Stimul و... و...
=====
در خصوص بارگذاری پویا DLL ها و پیاده سازی سیستم پلاگینی قبلاً بحث شده که نتیجه ان سمپل بسیار ساده زیر است:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگر در پوشه EXE دقت کنید متوجه میشود که DLL ها Reference نشدند و با حذف انها مشکلی پیش نخواهد آمد.
برنامه خودکار موقع بالا آمدن آنها را پیدا کرده و به آنها وصل میشود و با دبل کلیک ListBox دوم کدی در انها را اجرا میکند.
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.