PDA

View Full Version : برنامه های تحت شبکه



gomnam
جمعه 05 مرداد 1386, 18:21 عصر
سلام دوستان
شاید اکثر ماها تجربه نوشتن برنامه های local را داشتیم ، اما خیلی ها من جمله خود بنده خیلی توی زمینه برنامه هایی که تحت یک شبکه lan‌و با تعدادی کلاینت کار کنه را نداشتیم
این تاپیک را ایجاد کردم تا در اون هرگونه مسئله ای که راجع به برنامه های تحت شبکه هست را در اینجا به بحث بذاریم
پس از تمامی دوستان خواهش مند هستم که مطالبی را که خارج از این بحث هستند را اینجا ننویسند تا موضوع از بحث اصلی خودش خارج نشه

به عنوان شروع هم خودم اولین موضوع را مطرح میکنم

توی برنامه هایی که تحت شبکه کار میکنه چطور میشه دستر سی ای همزمان به داده ها را کنترل کرد؟
مثلا یکی داره اطلاعات یه جدول را پاک میکنه و یکی دیگه در حال خواندن داده های همان جدول هست
اینجور موارد را چگونه میشه کنترل کرد؟
آیا با transaction ها ؟
آیا میشه جداول را در هنگام استفاده قفل کرد تا کاربران دیگه نتونن همزمان از جدول استفاده کنن؟ آیا این کار اصلا صحیح هست ؟به لحاظ performance ؟

ممنون از لطف همگی

hdv212
جمعه 05 مرداد 1386, 19:32 عصر
gomnam جان سوال شما بیشتر به دیتابیس نزدیکتره تا شبکه، به هر صورت باید در امکانات دیتابیست این موضوع رو جستجو کنی، در جواب شما باید بگم که بله، راههای وجود داره که مشخص کنی رکوردی که در حال ویرایش هست چطوری در دسترس کاربران دیگه قرار بگیره، آیا اطلاعات قدیمی قرار بگیره، صبر کنه تا اطلاعات بروز بشن و بعد به کاربر نشون بده، یا ..... . به نظرم اگه توی تاپیک sql server سوالتو مطرح کنی، بهتر و سریعتر به جواب میرسی.

gomnam
جمعه 05 مرداد 1386, 22:07 عصر
gomnam جان سوال شما بیشتر به دیتابیس نزدیکتره تا شبکه، به هر صورت باید در امکانات دیتابیست این موضوع رو جستجو کنی، در جواب شما باید بگم که بله، راههای وجود داره که مشخص کنی رکوردی که در حال ویرایش هست چطوری در دسترس کاربران دیگه قرار بگیره، آیا اطلاعات قدیمی قرار بگیره، صبر کنه تا اطلاعات بروز بشن و بعد به کاربر نشون بده، یا ..... . به نظرم اگه توی تاپیک sql server سوالتو مطرح کنی، بهتر و سریعتر به جواب میرسی.

hdv212 عزیز ممنون از جواب نه چندان کاملی که دادی و توجهت
هدف من از مطرح کردن این تاپیک و این سوال بحث در مورد هر مسئله ای که مربوط به برنامه های تحت شبکه ای که روی یک lan اجرا میشن هست
درسته که سوال من بیشتر مربوط به دیتابیس هست ولی اگر عمقی به سوال نگاه کنی متوجه میشی که این مشکل ممکن است در برنامه هایی که با چند تا client کار میکنند یعنی همون شبکه به وجود بیاد چون برنامه ای که تک کاربره هست یا بهتره بگم در هر لحظه فقط یک کاربر با برنامه کار میکنه مشکل فوق پیش نمیاد

ممنون میشم اگه توی این زمینه تجربه داری بیان کنی
همچنین از بقیه کاربران هم دعوت میکنم که هم مشکلاتشون و هم تجربیاتشون را در اختیار بقیه قرار دهند البته همونطور که گفتم فقط مربوط به برنامه های تحت شبکه باشه
باز هم ممنون




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


میشه در اینمورد کاربردی تر و بیشتر توضیح بدین ؟

hdv212
شنبه 06 مرداد 1386, 00:28 صبح
gomnam جان همانطور که گفتم این مبحث بیشتر مربوط به دیتابیس میشه تا شبکه، در دیتابیس Sql server 2005 مبحثی تقریبا پیچیده وجود داره به نام User Concurrency یا همزمانی کاربران که میتونی نحوه ی ارسال نتایج درخواست های کاربران مختلف رو مدیریت کنی، این دقیقا همون چیزی هست که میخوای، البته در کنار مبحث فوق، مبحث دیگه ای هست به نام Transaction Isolation Level که روشهای مختلف ارسال نتایج query های کاربران رو در اختیارتون قرار میده، برای اطلاعات بیشتر به بخش sql server مراجعه کنید و در مورد مباحثی که گفتم ابتدا جستجو کن و اگه به نتیجه نرسیدی سوالتو مطرح کن.
موفق باشید.

mohsen.net
شنبه 06 مرداد 1386, 00:59 صبح
سلام .
لزومی ندارد که حتما بحث روی Sql باشد فرض کنید مثلا بخواهیم یک خانه حافظه(متغییر i) را عوض کنیم آن وقت بحث از حالت پایگاه داده خارج می شود
این جزو بحث های همروند هست که مثلا در سیستم عامل با سمافور ها مشکل را حل می کردیم اما اینجا روی معماری مالتی کامپیوتر هست قضیه
من فکر می کنم روش counting variable روش بدی نباشه