PDA

نسخه کامل مشاهده نسخه کامل : طراحی Forum تحت ASP.Net



_H2_
16-04-2008, 09:19
سلام
با توجه به مباحث در جریان تاپیک ذیل
forum.p30world.com/showthread.php?t=218457
تصمیم بر آن گرفتم مقدماتی در حد دانه کوچک گندم، برای طراحی یک تالار گفتگو را در این تاپیک قرار دهم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بسته فوق شامل:

- یک پروژه پاییه ای خالی web
- یک پروژه dll برای هسته زیرین ترین لایه (معروف به DAL)
- یک دیتابیس نمونه تحت SQLServer2005

برای باز کردن برنامه لزوم VS2008 ضروری است، مخصوصاً که در دو خط از کدها از یک سینتکس جدید 2008 استفاده شده، ولی ذات پروژه تا ایجا و فعلاً تحت Framework2.0 است.
(این سینتکس چندان مهم نیست و فقط کار تایپی را کمی کم میکند.)

==========
توضیح دیتابیس نمونه

این بانک جداولی برای نگه داری داده های عادی تالارهای گفتگو دارد.

Forum_Attachs
نگه داری فایلهای آپلودی کاربران

Forum_Cultures
نگه داری برخی تنظیمات کلی چندفرهنگه و چندزبانه

Forum_Exceptions
نگه دار آمار خطاهای رخ داده در برنامه برای ارسال به گروه طراح و رفع عیوب در نسخه های اینده.

Forum_Icons
آیکونهای اپلود شده برای استفاده در نقاط مختلف سایت.

Forum_Messages
نگه دار پیغامهای خصوصی اعضا به یکدیگر

Forum_Resources
نگه داری تنظیمات که بر اساس فرهنگ و الگوی نمایش قابلیت ذخیره چندگانه هم دارد.
تنظیمات مشترک را میتوان تحت استایل و زبان صفر نگه داشت.

Forum_Sections
نگه دار نام تالارهای مختلف با قابلیت تودرتویی تالارها

Forum_SectionsManagers
مجوزهای امنیتی اعتا شده به کاربران و گروه های کاربری مدیر بریا هر تالار

Forum_Statistics
نگه داری ریز آمار دیدارهای سایت (چه صفحه ای، چه تعداد، چه مدت، ip بازدید کنند و...)

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

Forum_Thanks
نگهداری آمار تشکر از افراد از پستها

Forum_Themes
نگه داری اطلاعات کلی در مورد استایلهای مختلف سایت

Forum_TopicAnswer
نگهداری رأی کاربران به گزینه های تاپیک های نظرسنجی

Forum_Topics
نگه داری کلیه اطلاعات در خصوص تاپیک ها و پستها (به طور مشتکر) حتی ip کاربر در زمان ارسال پست و...

Forum_TopicsAnswers
نگهداری نام گزینه های مختلف تاپیکهای نظرسنجی

Forum_TopicsReadState
نگهدار آمار تاپیک های ملاحظه شده توسط اعضا.
(
آمار این جدول بسته به تنظیمات فقط شامل 7 یا 15 یا 30 روز جاری است و نه بیشتر فرض میشود تاپیک های قدیمی تر از این مدت را همه دیده اند
)


Forum_UserGroups
نگه داری مشخصات گروههای کاربری
(
حداکثر 255 گروه
در بقیه بخش های اعداد زیر 255 نشانگر گروه کاربری هستند
اعداد بالای 255 نشان گر کد PrimaryKey یک کاربر هستند
)

Forum_Users
اطلاعات اعضا

طبیعی است که جدوال ناقص هستند و با پیشرفت کار نیازهای بیشتری معلوم خواهد شد و جداول باید گسترش پیدا کنند.


-----
فیلدهایی که با آندرلاین شروع شده اند، داده های اساس نیستند، نوعی کش هستند برای سرعت بیشتر.
مثلاً آمار تعداد پستهایی و تشکر های شده، تشکر کرده و... که یک کاربر دارد.
این فیلدها همواره و بدون شک با دستورات SQL و View ها قابل تحصیل هستند ولی فیلدهایی که برای کش انتخاب کردم
- همه گی عددی و کم حجم هستند (چند بایت)
- میزان آپدید و تغییرشان (که نیاز به Refresh پیدا کنند) به نسبت خواندن و نمایش بسیار پایین است.
(یک پست جدید یک بار زده میشود ولی شاید هزاران بار دیده شود !)
- خیلی زیاد خوانده و نمایش داده میشوند.

برای یک سایت که شاید در یک لحظه هزار کاربر آنلاین داشته باشد، کش کردن این اطلاعات و عدم اجرای دستورات SQL بعضاً Join دار میتواند بازده خوبی داشته باشد.

برای Refresh هم میتوان از تریگر های خودکار SQLServer استفاده کرد.

-----
فیلدهایی که با _ID شروع میشند شاخص هستند، یعنی معمولاً این فیلدها PrimaryKey جدول دیگری هستند و اطلاعات نظیر واقعی در آن جدول قراردارد.
==========
توضیح لایه DAL
شامل یک فایل dll با نام FDBM مخفف Forum DataBase Manager
این dll شامل کلیه کدهای در ارتباط مستقیم با بانک است و شامل متدی برای هر Insert و Update و Select و Delete است.

من برای راحتی بیشتر متدها را Shared گرفته ام ولی اگر در هر مرحله یک Connection و یک وهله از کلاسس ساخته شود و بتوان با هم یک Connection اعمال مختلف را از ریسمان درخواستی جاری رو دیتاها انجام داد شاید بهتر باشد.

ولی به علت مخزن Connection های داخلی دات نت، شاید هم چندان تفاوتی در کارآیی نداشته باشد.

کد عمومی تولید Connection جدید در کل سطح سایت درست شده و
یک نمونه متد Insert و Delete برای جدول ساده Forum_Thanks هم تهیه شده


==========
توضیح پروژه سایت
خالی تر از آن است که قابل توضیح باشد،
چند Web.config برای موقعیتهای خاص تولید شده.


==================================================
متاسفانه همانطور که در تاپیک قبلی گفتم من به علت مشکلات زمانی قادر به ادامه کار روی این پروژه نیستم.
فقط توانستم بستر اولیه فوق العاده ساده ای تولید کنم.
اگر دوستان مایل بودند میتوانند روی این بستر اولیه طرح را توسعه دهند.

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

موفق باشید. :10:

Ultimator
17-04-2008, 21:25
بستر سازی که عاليه ! ميتونه پروژه خوبی باشه يعنی مطمئنم. سعيمو ميکنم که بتونم يه کارايی بکنم
البته بدون کمک شما امکان نداره . هنوز خيلی بی تجربه تر از اين حرفاييم! البته منم مشکل زمانی دارم ولی همه ی تلاشم رو ميکنم
شايد 4000 تا چيز ياد گرفتيم استاد!

_H2_
19-04-2008, 08:47
سلام
- اولاً عزیز جان والا من استاد نیستم.
- دوماً گرچه همچنان من برای این پروژه سرانجامی متصور نیستم ولی حالا که میبینم تا حدودی مورد توجه دوستان قرارگرفته،
یک کمک دیگر هم میکنم، من برای خودم کلاسس های ثبت خطا را در بهترین شرایط حاضر کرده ام، این امکان را میتوان به Refrence های پروژه اضافه کنم و مخصوص این برنامه بستش دهم.
با این امکان به سادگی میتوانید گزارشات دقیق خطا و تابع محل وقوع(سینتکس VB یا #C) را با یک خط کد در جدول مربوطه ثبت کنید و یا به سادی در محل مناسب صفحات Admin سایت، تمام گزارشات جاری را برای برسی بیشتر دانلود کنید. (یا اگر برنامه وبی نبود در فایلی ذخیره کنید)

- سوم با توجه به مباحث موازی در جریان تپیک دیگر، نسخه C#.Net را هم اضافه میکنم.

دوستان میتوانند کار را ادامه دهند، من نمونه بعدی را برای دانلود با کمی اصلاحات ریز دیگر پس فردا قرار میدهم.

H_T_O_A
20-04-2008, 02:03
خدا رو شكر كه بالاخده يه تاپيك براي آموزش ساخت اين گونه سايت ها درست شد. من كه كم كم داشتم نا اميد ميشدم خوشخالم كه اسرارهايي كه كردم به اساتيد به خصوص h2 بالاخره جواب داد
من از هر دوي شما و كليه اساتيد تشكر مي كنم و در عين حال عاجزانه تقاضا مي كنم مطالب رو جوري مطرح بشه كه ما مبتدي ها هم راحت بفهميم:42: راستش اگه بخوام متوجه بشم كه شما چي ميگيد بايد خيلي به مغزم فشار بيارم كه اون وقت مخم ميتركه. حيف از جووني من نيست:31:
به هر حال ما دوست داريم از اساتيد كسب فيض كنيم

_H2_
24-04-2008, 00:22
سلام
از کلیه دوستان شدیداً عضر خواهی میکنم...
واقعاً کار داشتم و نتوانستم یک لحظه هم به سایت سر بزنم، تا بالاخره امشب توانستم سری بزنم.
باز عضر خواهی میکنم.
نسخه جدید را از همان لینک قبلی دانلود کنید. (حجم حدود 2 مگ)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اصلی ترین تغییر این نسخه
اضافه شدن نمونه C#.Net برای دوستان #C کار است.
کلاسس ثبت خطا هم با وراثتی از کلاسس اصلی موجود در DLL به پروژه اضافه شده.
میتوانید با یک خط کد گزارش خطا را به طور کامل در دیتابیس ذخیره کنید.
امکان دانلود گزارشات هم با متد مناسبی به فرمت XML و با ساختاری سریع و غیر حجمی (غیر DataSet) وجود دارد که امکان دانلودهای حجم عظیم اطلاعات بدون نگرانی های RAM آلود DataSet را میدهد.

میتوانید نمونه ای از کد مناسب ثبت خطا را در بخش Forum_Thanks پروژه FDBM ببینید.
یک متد SELECT هم به Forum_Thanks اضافه شده که خروجی اش DataReader است و به سادگی میتوان برای تولید لیست HTML افراد تشکر کننده از یک پست با سرعت تمام استفاده اش کرد.

توجه کنید که برای کد تمیز، این مرز بندیها و جدا کردن و به اصلاح لایه بندی مهم است.
و اگر پروژه بزرگ شود، دچار سردرگمی نمیشوید و راحت تر هم میتوانید کدهای متمرکز شده را تغییر دهید.

در مورد کد جاری هرسوالی داشتید در خدمت هستم، ولی به علت مشکلات جاری خودم شاید کمی دیر سر بزنم... (شرمنده اخلاق ورزشی....) ولی سعی میکنم هر چه زودتر سربزنم.

جمیعاً میبخشید، موفق باشید و خدانگه دار. :10:

_H2_
24-04-2008, 01:37
سلام مجدد

عاجزانه تقاضا مي كنم مطالب رو جوري مطرح بشه كه ما مبتدي ها هم راحت بفهميم

به دستور شما، من جفنگیات خودم را که نوشته بودم یک بار بازخوانی کردم. :31::11:
چندین غلط تایپی املایی پیدا کردم ! (چه کشف بزرگی ... !)
ولی نکته ابهامی ندیدم...
فقط به نظرم آمد شاید برخی دوستان با تریگرهای SQLServer آشنا نباشند.
تریگرها کدهای هستند که به طور خودکار با وقوع یک رویداد در داخل هسته خود SQLServer اجرا میشوند.
مثلاً شما میتوانید یک تریگر تعریف کنید تا به محض اینکه سطری از جدول پستها اضافه یا حذف شده، با توجه به سطر، کاری انجام شود. مثلاً در مورد کار ما، شاید نیاز باشد فیلدهای آندرلاین دار گفته شده یک فرد که شامل تعداد پستها است از نو Refresh شود.

بجز این مبحث دیگر جایی برای ابهام نمی بینم.
بالاخره شمایید که باید بگویید با چه جمله ای یا کدی مشکل دارید و متوجه نمیشوید یا به نظرتان افتضاح است و راه بهتری دارد و.... تا من و بقیه دوستان بتوانیم جوابی دهیم و گرنه من تا چند روز پیش یک کلاسس ماژول علم لدونی داشتم، که متاسفانه در بقالی سر کوچه گمش کردم ! :31::46::10:

H_T_O_A
24-04-2008, 03:19
استاد تو اين دو تا پست خيلي شاد بوديدا. نكنه خبريه؟ آخه خودتونم ميگيد چند روز نميام يه كم مشكوكه...
والله روند كاري من از درس دادن شما خيلي كند تره چون سرم شلوغه و كم وقت ميكنم روي پروژه شما تمرين كنم پس حداقل از طرف من خاطر جمع باشيد
اما سعي مي كنم وقتمو آزاد كنم(واس من خبري نيستا فكر بد نكنيدا) پي كار و يك سري مشكلات شخصي كه تمام وقتمو گرفته چند روزي درگيرم
بنده به خودم اجازه نميدم به شما و اساتيد ديگه دستور بدم(ما جايگاه استاد و شاگردي حاليمونه)
مطمئين باشيد سوالات زيادي دارم كه از محضرتو بپرسم
يا هو

_H2_
28-04-2008, 23:58
سلام
اولاً هر موقع استاد شدم، مطمئن باشید خبرتون میکنم.

خيلي شاد بوديدا. نكنه خبريه؟
خبری جز بدبختی و بیچارگی و زندگی شهری نیست. خیالتان جمع جمع.
چیه؟ میخواهید از آیکون های دپرس استفاده کنم تا همه مثل خودم بشن؟؟؟!!!!
این هم چند آیکون جدید.... !!!
:2::18::41::19::37::45::24::32::wac:





مطمئين باشيد سوالات زيادي دارم
در خدمت هستیم. :11::10:

_H2_
12-05-2008, 23:00
سلام
با توجه به یک سری گفتگوها در سطح pm (با یکی از دوستان)، نتیجه بر آن شده که یک نمونه کد فوق العاده ساده جهت ثبت آمار بازدیدها از تاپیک ها ایجاد شود.
در همین راستا متد فوق العاده ساده CounterValue_Increment در کتابخانه FDBM اضافه کردم.
که StoredProcedure ای با نام Forum_Topics_CounterValue_Increment را صدا میزند.
گرچه هم خودش و هم دستور SQL ظاهر ساده ای دارد ولی هیچ مشکلی با چند ریسمانی و اجرای همزمان از ریسمان های متعدد ندارد.
(SQLServer صحت داده ها را در زمان دستور UPDATE با کمک قفلهای درونی تضمین میکند)

امثال این متدها جای کار دارد، ولی نمونه جاری ساده و قابل فهم است،
مثلاً برای یک سایت پرحجم و پربازدید...
- میتوان شمارنده ای محلی در RAM داشت که اتصالات به SQLServer را کاهش دهد و هر 1 یا 2 یا 5 دقیقه یک بار و با یک تک دستور SQL گروهی عمل آپدید شمارنده های سرور را در یک واحد اجرا، انجام داد.
- یا امکان استفاده از سرویس صف و زمانبندی بروکر هم وجود داشت.
...
ولی همین روش جاری هم خیلی خوب است و با توجه به استفاده از StoredProcedure و نیز دستور ساده SQL ، نتیجتاً سرعت و بازده بالایی دارد.




یک متد نمونه جهت تولید html برای لیست تشکرها در زیر پست افراد هم، نوشتم.
این متد با نام HtmlRender در کلاسس Forum_Thanks در FEng تعریف شده. (Forum Engine)
در اصل به همین بهانه بحث لایه بندی را تکمیل تر کردم و FEng را هم اضافه کردم.
این dll جدید شامل تمام کدهای میانی بین لایه دیتای FDBM و لایه نمایشی FUI است.
میتوان گفت تمام کلاسسهای اصلی برنامه در این لایه جدید قرار خواهند گرفت که این لایه با کمک ارتباط با لایه دیتابیسی FDBM و لایه نمایشی FUI جریان اطلاعات را هدایت و بعضاً تبدیل میکند.
مثل همین متد HtmlRender که شاید بتوان گفت نوعی تبدیل است، که DataReader مطلوب لایه FDBM را به TextWriter مطلوب لایه FUI میریزد یا تبدیل میکند.





یک ایراد هم در دیتابیس رفع شد.
فیلد ID_Culture از جدول Forum_Cultures و LCID از جدول Forum_Users را برای یک کار در نظر گرفته بودم که متاسفانه به علت عجله نامشان یکسان نبود.
در نهایت با توجه به معنی واضح تر، فیلد ID_Culture جدول Forum_Cultures به نام جدید LCID تغییر پیدا کرد.




باید بگم از این روند متدهای static) Shared در C#.Net) هم چندان راضی نیستم، به نظرم برای روند کلی و احترام بیشتر و موٍثر تر به ذات OOP باید استفاده از این متدها به حداقل ممکن و فقط برای مواقع منطقی تر معطوف کرد، تا بتوان از مزایای بی مثال وراثت و چندریختگی استفاده کرد.
این روش جاری راحت است ولی خیلی میبخشید نوعی ماست مالی کردن کار است.
دلم نمیخواهد با این پروژه ناچیز مروج دشمنی با OOP پرچیز باشم. (این OOP نفس من بید!!!)
ولی بحثی که وجود دارد سادگی کدهای فعلی (با Shared) و قابل فهم راحت تر بودن آنها است.
سعی میکنم در وقت آزادی (اگر پیدا کردم !) پروژه را به یک طرح ساده و قابل فهم آسان و با تطابق بیشتری با OOP پیاده سازی کنم.
گرچه چندان پروزه مهمی نیست ولی چند مطلب ریز دیگر هم وجود دارد، که با وضع جاری چندان خوشم نمی آید، و به نظرم باید اصلاح شوند.
(انشا... یک آپلود دیگر هم خواهیم داشت.)




اگر بتوان لینکی از این تاپیک در تالار Framework هم قرار بگیرد شاید بد نباشد، احتمالاً، شاید، ممکن، چند نفر از دوستان وقت داشته باشند و از تاپیک های اینچنینی هم بدشان نیاید.
(شاید هم دفعه بعد خودم انجام دهم.)



در آخر به عنوان یک هشدار مهم یادآوری میکنم از اشیای پر حجمی مثل DataTable و DataSet به هیج وجه در طراحی های سایت استفاده نکنید.

نمونه جدید را میتوانید از همان لینک اخری دانلود کنید.

Ultimator
13-05-2008, 00:54
سلام
خیلی ممنون که هنوز یادتون نرفته به زودی من کمی وقت پیدا میکنم و یکارایی میکنم ! پروژه رو هنوز ندیدم ولی توضیحاتتون واضح بود .
یه چیزی !

باید بگم از این روند متدهای static) Shared در C#.Net) هم چندان راضی نیستم، به نظرم برای روند کلی و احترام بیشتر و موٍثر تر به ذات OOP باید استفاده از این متدها به حداقل ممکن و فقط برای مواقع منطقی تر معطوف کرد، تا بتوان از مزایای بی مثال وراثت و چندریختگی استفاده کرد.
این یعنی shared تعریف کردن متدها بده ؟ من تا حالا همیشه متد ها رو shared تعریف میکردم ! تا اینجایی که سوات من قد میده میدونم که برای استفاده از متد shared نیازی به ایجاد یک instance از کلاس نیست .
خوب بازم 4 تا چیز یاد گرفتیم
مرسی .

Ultimator
13-05-2008, 01:07
ضمنا برای سیستم عضویت میتونیم از کلاس membership استفاده کنیم یا یاید همش رو خودمون بنویسیم ؟
فکر نکنم مشکلی باشه ..

_H2_
19-05-2008, 00:52
سلام و خسته نباشید
استفاده از متدهای Shared در زمان نیاز بسیار کارآمد است، ولی اینکه تمام برنامه را با این متدها بنویسید شما را یاد چه می اندازد؟؟؟؟؟
ولی من را که شدیداً یاد DOS و Assembly و QBasic می اندازد.

تمام متدها موجودیت واحد داشتند و نیازی به New سازی هم نبود.
این یعنی برنامه نویسی غیر شی گرا و رویداد گرا و ناقض تمام مفاهیم جدید.
یعنی دور انداختن تمام مباحث OOP و پلی مورفیزم و تمام دست آوردهای ناشی از تجربه سالیان سال برنامه نویسی گذشتگان.
یعنی بازگشت به عصر هجر برنامه نویسی.


فکر کردید اگر همه چیز Shared بود چه میشد؟؟؟؟؟؟؟؟؟؟
با عوض کردن رنگ یک دکمه، کل دکمه های برنامه عوض میشدند!
با تغییر مکان یک دکمه کل دکمه ها جابه جا میشدند!
اصلاً بحث چند دکمه و چند پنجره و چند... نبود، بحث یک دکمه، یک پنجره، یک....
شرکت سازنده (مثلاً مایکروسافت) باید در زمان تولید برای پشتیبانی از هر کنترلر TextBox و Button و... باید کاملاً کدهای جدا میگذاشت با ساختارهای Select Case صد عضوی.....

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

مجدداً تاکید میکنم که استفاده به جا و صحیح سر جای خودش است،
مثلاً در همین کد جدید همچنان دستور ساخت Connection جدید Shared است.
==================================================
در مورد بحث امنیت و عضویت به نظر شخصی من بهتر است از تلفیق روشها استفاده شود.
یعنی قسمت کنترلر کاربران در داخل محیط ASP.Net به کلاسسهای مخصوص membership گذاشته شود و بحث دیتابیس را خودمان مدیریت کنیم.

بدین ترتیب بحث کد نویسی داخلی هم راحت میشود و هم کاملاً در سلطه خودمان قرار خواهد گرفت،
تک تک فیلدها دست خودتان است، راحت هستید، میتوانید فیلدها را کم یا زیاد کنید،
من دوست دارم ساختار کل دیتابیس و جداول صد در صد در کنترل خودم باشد ولی شاید شما... ؟؟!!

_H2_
19-05-2008, 00:53
سلام
نمونه جدید که منطبق با اصول OOP است و قولش را داده بودم، حاضر است. (البته کمی با عجله سرهمش کردم که انشا ا... مشکلی ندارد)
در این نمونه دیگر خبری اصول کلی متدهای Shared نیست.

در این الگوی جدید، باید از کلاسسها قبل از استفاده با کمک دستور New نمونه جدید ساخته شود و از آن مهمتر برای بستن ارتباطات و آزاد سازی RAM حتماً باید در پایان استفاده و نیاز به کلاسس متد Dispose صدا زده شود، بهتر است به جای تعریف متغییر عادی، از کلمه کلیدی Using استفاده شود که تضمین میکند با خروج از حوزه، متغییر را نابود کند.
اگر در این امر دقت نشود، منابع به سیستم عامل باز نمیگردد و Connection های باز شده بسته نمیشوند.
در اصل برای بالا بردن بازده و سرعت Connection در حوزه مورد نظر یکبار برای اولین بار باز میشود و برای اجرای متدهای بعدی باز میماند و فقط در متد Dispose اقدام به بستن و نابودی آن میشود، در عوض این بالا بردن بازده، کد استفاده کننده باید اجرای متد Dispose را در پایان استفاده تضمین کند.
(به مثال موجود در فایل Default.aspx دقت کنید.)

در صورت نیاز میتوانید توضیح کلمه کلیدی Using
(که البته دوستان فعال در تالار فریم ورک حتماً این تاپیک فوق قدیمی را دیده اند)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



نکته بعد آنکه باید توجه داشته باشید هر نمونه Connection در هر لحظه میتواند فقط یک دستور را در سرور اجرا کند، و اجرای دستورات موازی و چند ریسمانی موجب بروز خطا میشود، البته همه دوستان این مطلب را میدانند ولی این را گفتم تا یک دفعه کسی فراموش نکند و مثلاً بیاید برای صرفه جویی نمونه ای از کلاسس FDBM.Tables.Forum_Thanks را بسازد و در شی Application نگاه دارد تا هر بار نیازی به New کردن نباشد !!!!!!! (این کار موجب خطا میشود.)
میتوان نمونه ای از FDBM.Tables.Forum_Thanks را ساخت و متدهایش را به هر تعداد در یک ریسمان اجرا کرد و در آخر نابود کرد ولی نباید اینها را کش کنید.
(به مثال موجود در فایل Default.aspx دقت کنید.)


از این بحث ها که بگذریم، فکر کنم بد نباشد دوستانی که مایلند برای آشنایی بیشتر با زبان دیگر (VB.Net <---> C#.Net) کدهای نمونه هر دو زبان را با هم مقایسه کنند...
واقعاً شباهتشات حیرت آور و زیبا است، مطمئن هستم کسی که تا حالا اصلاً زبان دیگر را ندیده، اگر هر دو کد را ببیند به راحتی متوجه اصول کلی در این شباحت نوشتاری میشود.
در اصل فقط تفاوت های کوچک تایپی وجود دارد و نه تفاوت بنیادین....
در همین نمونه جاری میتوانید ببینید که کد هر دو زبان به چه شفافیت و شباهت و در کنار هم و به طور موازی قابل پیگیری و تایپ و گسترش است.

نمیدانم برخی افراد که میخواهند بگویند پروفسور هستند و با قویترین زبان کار میکنند و کلاس بگذارند و پز دهند، تا کی میخواهند (برخلاف نصر صریح خود مایکروسافت دال بر برابری) از روی غرض و مرض، VB.Net کارها و C#.Net کارها را تو جون هم بیاندازند. !؟!؟!؟ این را هنوز نفهمیدم، انگار پز دهی فرزند آدمیزاد تمامی ندارد.
که البته خوشبختانه در جمع دوستان در این سایت از اینجور افراد نداریم. (برای همین به شخصه از این سایت خوشم می آید.)

دوستان جمیعاً موفق باشید.

Ultimator
19-05-2008, 02:12
استفاده از متدهای Shared در زمان نیاز بسیار کارآمد است، ولی اینکه تمام برنامه را با این متدها بنویسید شما را یاد چه می اندازد؟؟؟؟؟
ولی من را که شدیداً یاد DOS و Assembly و QBasic می اندازد.

تمام متدها موجودیت واحد داشتند و نیازی به New سازی هم نبود.
این یعنی برنامه نویسی غیر شی گرا و رویداد گرا و ناقض تمام مفاهیم جدید.
یعنی دور انداختن تمام مباحث OOP و پلی مورفیزم و تمام دست آوردهای ناشی از تجربه سالیان سال برنامه نویسی گذشتگان.
یعنی بازگشت به عصر هجر برنامه نویسی.

فکر کردید اگر همه چیز Shared بود چه میشد؟؟؟؟؟؟؟؟؟؟
با عوض کردن رنگ یک دکمه، کل دکمه های برنامه عوض میشدند!
با تغییر مکان یک دکمه کل دکمه ها جابه جا میشدند!
اصلاً بحث چند دکمه و چند پنجره و چند... نبود، بحث یک دکمه، یک پنجره، یک....
شرکت سازنده (مثلاً مایکروسافت) باید در زمان تولید برای پشتیبانی از هر کنترلر TextBox و Button و... باید کاملاً کدهای جدا میگذاشت با ساختارهای Select Case صد عضوی.....ٌWow ! ببخشید [ویرایش: ] کاملا به اشتباهم پی بردم !! فهمیدیــــــــم !
آخه تقصیر منم نیست تقصیر این کتابهاست با این آموزش های سطحیشون ، کمتر مرجعی رو میشه پیدا کرد تا درست دست آدم رو بگیره ( مگر خود مایکروسافت ) مثلا تو این چیز میزای آموزشی میبینیم که تو یه صفحه 5 تا دیتاست داریم هر کدوم هم 3 بار از یه بانک سنگین fill از میشه !! تازه همه ی اطلاعات لود میشه بعد اضافه هاش رو میریزن دور تا 10 تا رو نشون بدن که مثلا صفحه بندی انجام شده !! همچین چیز وحشتناکی رو من دیدم !




انم برخی افراد که میخواهند بگویند پروفسور هستند و با قویترین زبان کار میکنند و کلاس بگذارند و پز دهند، تا کی میخواهند (برخلاف نصر صریح خود مایکروسافت دال بر برابری) از روی غرض و مرض، VB.Net کارها و C#.Net کارها را تو جون هم بیاندازند. !؟!؟!؟ این را هنوز نفهمیدم، انگار پز دهی فرزند آدمیزاد تمامی ندارد.
که البته خوشبختانه در جمع دوستان در این سایت از اینجور افراد نداریم. (برای همین به شخصه از این سایت خوشم می آید.)دقیقا اصلا این دوتا زبان خیلی جاها تفاوتشون فقط ; آخر سی شارپه ! نهایتا سینتکس های جزئی .
ضمنا شما لطف داری ! اگه کسی هم باشه به شخصه کارش دارم !

dogtag
19-05-2008, 08:56
شرمنده که به انحراف می کشم:
سلام استاد _h2_
چقدر جات خالی بود
کار خوبی کردی که برگشتی. کاش شالینه هم بر می گشت!

_H2_
24-05-2008, 00:33
سلام بر دوستان
جناب ultimator، نصر خط اول جوابتان زیاد جالب نبود.
ما مخلص تمام دوستان و سروران این سایت هستیم، این جور که شما جواب میدهید شاید کسی بد برداشت کند، من به هیچ وجحه و در هیچ جا در کوچکترین منطقه حافظه ام هم نیت جسارت و توهینی به هیچ یک از دوستان ندارشته و نخواهم داشت.
قصد فقط انتقال تجربیات است، یک چیز دوستان میگوییند و یادآوری می کنند و من یاد میگیرم و یک مزخرفاتی هم من میگویم تا برای دوستان یادآوری و تکرار مکررات شود.



... تو یه صفحه 5 تا دیتاست داریم هر کدوم هم 3 بار از یه بانک سنگین fill از میشه !! تازه همه ی اطلاعات لود میشه بعد اضافه هاش رو میریزن دور تا 10 تا رو نشون بدن که مثلا صفحه بندی انجام شده !! همچین چیز وحشتناکی رو من دیدم !

تأسف برانگیزه...

Ultimator
24-05-2008, 02:12
سلام بر دوستان
جناب ultimator، نصر خط اول جوابتان زیاد جالب نبود.
ما مخلص تمام دوستان و سروران این سایت هستیم، این جور که شما جواب میدهید شاید کسی بد برداشت کند، من به هیچ وجحه و در هیچ جا در کوچکترین منطقه حافظه ام هم نیت جسارت و توهینی به هیچ یک از دوستان ندارشته و نخواهم داشت.
قصد فقط انتقال تجربیات است، یک چیز دوستان میگوییند و یادآوری می کنند و من یاد میگیرم و یک مزخرفاتی هم من میگویم تا برای دوستان یادآوری و تکرار مکررات شود.
:20: شرمنده من قصدم شوخی بود ! کسی بد برداشت نمیکنه !
شما همیشه لطف داشتید . من هم فقط قصدم همینه که از تجربه ی شما استفاده مفید کنم که تا اینجا خیلی برای من مفید بود .
امیدوارم همیشه سلامت باشید تا ما بیشتر از تجربیاتتون بهره ببریم .