PDA

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



bzdesign
جمعه 11 اسفند 1391, 09:47 صبح
با سلام خدمت اساتید و دوستان محترم. ببخشید بنده برنامه ای نوشتم که از دیدگاه کارفرمای بنده اونقدر کامله که حیف است تو شرکت فقط روی یک سیستم نصب بشه و ایشون امر فرمودن برنامه رو تحت شبکش بکنم که روی 4 تا سیستم نصب بشه و بشه کارها رو راحتتر انجام داد.
حالا سوالی که مطرح شده برام اینه چطوری باید برنامه رو برای استفاده 4 کاربر مختلف توی شبکه داخلی آماده کنم و چطوری میتونیم توی برنامم بخش سطوح دسترسی برای کاربران رو قرار بدم.
دست تمام اساتید و دوستان با تجربه رو به گرمی میفشارم که به بنده حقیر عنایت بفرمایند.
اگر حتی فرصت توضیح ندارید ،حتی اگر سوسی در این زمینه داشته باشید و برای دانلود قرار بدید ممنون میشم. بخصوص سورس در مورد نحوه ساختن بخش سطوح دسترسی برای کاربران.
خداوند پشت و پناهتون
یا علی

ali reza mansoori 2
جمعه 11 اسفند 1391, 21:39 عصر
از چه بانکی استفاده میکنید

bzdesign
جمعه 11 اسفند 1391, 22:34 عصر
SQL 2008 دوست عزیز

فرید نجفلو
شنبه 12 اسفند 1391, 02:26 صبح
سلام
راحتترین روشی که می تونید استفاده کنید روش Connection String هست
فقط کافیه رشته اتصال رو تغییر بدید و برنامه شما تحت شبکه بشه (البته کمی هم تغییر در SQL Server و فایروال)
تو این تاپیک (http://barnamenevis.org/showthread.php?333713) بخش های مربوط به رشته اتصال رو بخونید (تو صفحه اول از فهرست می تونید سریعتر پیدا کنید)

bzdesign
دوشنبه 14 اسفند 1391, 01:28 صبح
سلام دوست عزیز. ممنون از پاسختون
بنده به موردی که فرمودید اشراف دارم ولی مشکل بنده این نیست.
اگر در این سیستمی که بنده نوشتم، در آن واحد، یک کاربر در حال بروز رسانی یک فیلد باشه و کاربر دیگه در حال حذف یا قرائت مقدار اون فیلد ،اونوقت چه فاجعه ای پیش میاد ؟
ضمن اینکه بنده برای هر تراکنش T-sql یکبار کانکشن رو open میکنم و پس از اتمام دستور ،کانکشن رو close میکنم. آیا این کار صحیح است ؟
اگر همزمان فرضا 5 کاربر از 5 سیستم مختلف دستور کانکشن open رو صادر کنن، هیچ مشکلی برای sql server پیش نمیاد ؟؟ یعنی منظورم اینه که sql با کانکشن های همزمان به یک بانک مشکلی نداره ؟

barnamenevisforme
دوشنبه 14 اسفند 1391, 01:42 صبح
نظورم اینه که sql با کانکشن های همزمان به یک بانک مشکلی نداره ؟با سلام خدمت آقا فرید بعد از مدت ها.
با اجازه شما.
نه مشکلی نداره و تقریبا خودش چنین مواردی رو مدیریت میکنه.
اگه خیلی کار حساس هست از transaction که جزء امکانات sql server هست استفاده کنید.

فرید نجفلو
دوشنبه 14 اسفند 1391, 02:17 صبح
با سلام خدمت آقا فرید بعد از مدت ها.
سلام خدمت شما (بعد از مدت ها !!! من که تقریبا زیاد میام :قهقهه:)
راستی اون عکس خودته؟:چشمک:


ضمن اینکه بنده برای هر تراکنش T-sql یکبار کانکشن رو open میکنم و پس از اتمام دستور ،کانکشن رو close میکنم. آیا این کار صحیح است ؟
اگر همزمان فرضا 5 کاربر از 5 سیستم مختلف دستور کانکشن open رو صادر کنن، هیچ مشکلی برای sql server پیش نمیاد ؟؟ یعنی منظورم اینه که sql با کانکشن های همزمان به یک بانک مشکلی نداره ؟
از نظر SQL Server اگه حساب کنیم نه مشکلی نداره
اما اگه تعداد کاربر های شما خیلی زیاد بشه یا اطلاعاتی که قراره رد دو بدل بشه (مثل دریافت کل رکورد ها) یا سرعت شبکه کم باشه تو کارای همزمان ممکنه تو دردسر بیوفتین
پس بهتره فقط در موارد حساس اتصالی رو که تراکنش داره باز بمونه
و مهمتر اینکه نوع تراکنش هم باید درست انتخاب بشه تا برای سایر کاربر ها مشکل پیش نیاد

bzdesign
دوشنبه 14 اسفند 1391, 15:51 عصر
بله بسیار جابهای شما 2 دوست قدیمی و عزیز کامل و عالی بود و مراتب قدردانی رو ازتون به جا میارم:قلب:
پس اگر کاربرای ما در شبکه حداکثر 5 نفر باشن ،قاعدتا مشکلی پیش نخواهد آمد ؟ و با transaction ها کاری نخواهیم داشت؟

حال این سوال مطرح میشه که مسئله تعریف کاربر و تعریف سطوح دسترسی برای کاربران رو باید چگونه در برنامه پیاده سازی کنیم ؟ منظورم این هست که آیا توی همون 1 نسخه برنامه ای که مینویسیم ،باید همچین سیستمی رو قرار بدیم و وقتی همین برنامه رو روی سرور نصبش میکنیم ، یک نسخه از shortcut برنامه رو، روی دسکتاپ کاربرامون توی شبکه بزاریم ؟:متفکر:
یعنی در اصل برنامه ما فقط روی سرور نصب میشه ،و 5 user مختلف موجود در شبکه ی ما، در آن واحد توسط shortcut هایی که از برنامه اصلی روی دسکتاپشون هست ،همون یک نسخه برنامه رو، از روی سرور، همزمان 5 بار باز میکنن ؟؟:متفکر:
اگر اینگونه هست آیا شما سورسی دارید که توش مسئله تعریف کاربر و سطوح دسترسی وجود داشته باشه که بنده و سایر دوستان بتونن ازش بهره مند بشن ؟:خجالت:

barnamenevisforme
سه شنبه 15 اسفند 1391, 00:36 صبح
سلام خواهش میکنم دوست عزیز
نه در واقع اینطور نیست.
شما باید برنامه application رو بر روی هر client نصب کنید.و sql server رو روی همون server.
بعد همون طور که دوستمون آقا فرید فرمودن،connection string رو براشون با توجه به نام کامپیوتر سرور یا ip اون و همچنین مشخصات sql server تنظیم میکنید.
برای اینکه کدوم یک از کاربران چه دسترسی هایی داشته باشن،توی جدول databaseتون یه جدول به نام user rights تعریف کنید و متناسب هر کدام از گزینه منوها و کلید ها و ... یه فیلد تعریف کنید و میتونید نوع اونو binary در نظر بگیرید.
موقعی که برنامه شما شروع به کار میکنه،بر اساس اینکه فرد با کدوم نام کاربری وارد شده،مقادیر مربوط به دسترسی اون رو براش از database بارگذاری میکنه و برای خصوصیات visible یا enabled هر کدوم از کلیدها و یا گزینه های منو اعمال میکنه.
کد اون رو دارم ولی اگه توی همین سایت جستجو بفرمایید نمونه کد هست و روش های پیاده سازی بهتر.
اگر به نتیجه نرسیدید،بنده در فرصت مناسب در خدمتتون هستم.
شب شما به خیر