سلام
با توجه به مباحث در جریان تاپیک ذیل
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 برای موقعیتهای خاص تولید شده.
==================================================
متاسفانه همانطور که در تاپیک قبلی گفتم من به علت مشکلات زمانی قادر به ادامه کار روی این پروژه نیستم.
فقط توانستم بستر اولیه فوق العاده ساده ای تولید کنم.
اگر دوستان مایل بودند میتوانند روی این بستر اولیه طرح را توسعه دهند.
در صورتی که سوال و یا مشکلی وجود داشته باشد، در همین تاپیک حتماً اگر بلد باشم و بتوانم جواب خواهم داد.
موفق باشید.![]()