PDA

View Full Version : نظر در خصوص نحوه اتصال به بانک در برنامه های تحت شبکه



aghayex
دوشنبه 02 اردیبهشت 1392, 08:55 صبح
با سلام
دوستان من در حال ساخت یه برنامه تحت شبکه هستم که کارش انتقال داده ها از کلاینت به دیتابیس ( sql server ) موجود در سرور هست یه کار دیگه که انجام می ده ذخیره یه فایل ( هر نوع فایلی ) از سمت کلاینت در پوشه ای مشخص در سرور و واکشی اون فایلها در زمان نیاز
حالا چند راه در ذهنم هست که می خوام اصولی ترین راه رو انتخاب و اجرا کنم.
1 - برا اتصال به دیتابیس بیام ای پی سرور رو در کانکشن استرینگ ست کنم و برا انتقال فایل ها بیام در سمت کلاینت به کاربر بگم که فلان پوشه سمت سرور رو مپ کن
2 - برای اتصال به سرور بیام از wcf استفاده کنم که در اینجا یه سوال برام پیش میاد :
چون تعداد درخواستهام از دیتابیس زیاد هست و اینکه wcf هم سمت سرور اجرا میشه آیا سرعت نقل و انتقال داده ها بهنسبت روش بالا کم نمیشه ؟ و همین سوال رو هم در نقل وانتقال فایل ها دارم که به نسبت مپ کردن سرعتش کم نمیشه .

littledemon
دوشنبه 02 اردیبهشت 1392, 10:16 صبح
خوب در مورد استفاده از wcf نظر میدهیم :لبخند:
شما اول بگو نسبت استفاده از شبکه چقدره ؟ مشخصه ؟ چقدر یوزر ها send/receive دارند ؟ منظورم تعداد در زمان مشخصی هست .

من به شخصه پیشنهاد میکنم اگه نیاز به تامین امنیت خاص از سمت برنامه ات ،تو شبکه نداری نیازی به استفاده از wcf نیست . چرا که این سناریویی که شما داری نیاز نداره به wcf و با یه برنامه نویسی socket حل شدنیه .
تعداد کل کاربران این شبکه رو اگه بگی حدودی بهتر میشه صحبت کرد .

در مورد دیتابیس هم همون راه خودت درسته فقط میمونه ریزه کاری های بحث واکشی و ثبت در دیتابیس رو حل کنی که کاربران یه وقت درخواست هاشون با هم مخالف نباشه . اگر کسی حذف کرد دیگری هم متوجه بشه که این حذف کرده و دیگه fetch نکنه و از این دست موارد . . .

aghayex
دوشنبه 02 اردیبهشت 1392, 11:57 صبح
در خصوص تعداد کاربر حداکثر 40 تا اما به طور میانگین 10 کاربر هست
برنامه نویسی socket یه کم قدیمی شده ( البته برا این موارد ) در روش سنتی که باید یه درایو مپ درست کنی امنیت یه کم پایین میاد مثلا من برا کاربران سطح دسترسی قرار دادم و گفتم به فلان فایل دسترسی نداشته باشه اما وقتی در سیستمش میام درایو مپ ایجاد می کنم تمام فایل ها در دسترسش هستن
در خصوص کارکردن همزان دو کاربر به یه رکورد هم با برنامه نویسی socket یه پراکندگی زیادی هست اگه بخوام مثال بزنم مثل ado.net با ef

aghayex
سه شنبه 03 اردیبهشت 1392, 06:41 صبح
نظری نیست:متفکر:

ASKaffash
سه شنبه 03 اردیبهشت 1392, 07:10 صبح
سلام
از WCF برای اینکار استفاده نکنید چون محدودیت حجم Packet دارید این موضوع برای من برای انتقال یک DataTable با WCF اتفاق افتاد پیشنهاد من این است که فایل را به درون بانک اطلاعاتی ببرید چند مزیت دارد :
- امنیت بالاتر است
- دسترسی Client ها از طریق نرم افزار شما خیلی آسان است
- سرعت انتقال به گردن SQLServer است
ولی عیب :
- افزایش حجم بانک اطلاعاتی است

aghayex
سه شنبه 03 اردیبهشت 1392, 08:35 صبح
ولی عیب :
- افزایش حجم بانک اطلاعاتی است

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

linux
سه شنبه 03 اردیبهشت 1392, 10:19 صبح
تشکر تعداد فایل ها خیلی زیاد هست و اصلا فکر اینکه بخوام در دیتابیس ذخیرشون کنم نیست
در خصوص محدودست حجم انتقال با تنظیماتی میشه تا حدودی مرتفعش کرد .
دوستان اگر نظر دیگه ای به غیر از پیشنهادهایی که من دادم و دوستان بررسی کردن دارن بگن ممنون میشم

من اگر بودم حتما فایلها را در sqlserver ذخیره میکردم.اصلا هم اینجوری فکر نکنید که برای sqlserver سخت هست، اگر تعداد فایلها زیاد باشد زمان خواندن مستقیم آنها از هارد به نظرم بیشتر از زمان خواندن آنها از دیتابیس هست. از نسخه ۲۰۰۵ به بعد امکانات خوبی برای این موضوع در نظر گرفته شده است.
این که کاربر شما مستقیم در sqlserver بتواند دیتابنویسد با همون کلاینت شما باز به نظر من کار خوبی نیست. به مشکل خواهد خورد مخصوصا اکثر شبکه شما بزرگ باشد و احیانا WAN باشد.
باز اگر من این برنامه را می‌خواستم بنویسم حتما از WCF استفاده می‌کردم.

aghayex
سه شنبه 03 اردیبهشت 1392, 19:18 عصر
باز اگر من این برنامه را می‌خواستم بنویسم حتما از WCF استفاده می‌کردم.

تشکر دوست عزیز
آیا شما تا به حال یه تراکنش سنگین رو هم با wcf و هم به صورت عادی مقایسه کردید ؟

aghayex
شنبه 07 اردیبهشت 1392, 16:29 عصر
نظری نیست !