PDA

View Full Version : سوال: راهنمایی در خصوص ذخیره فایل در بانک SQL



JaVa
چهارشنبه 11 مرداد 1391, 15:03 عصر
با سلام و خسته نباشید ...

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

من دارم یه برنامه می نویسم که هم باید تصویر کاربر رو ذخیره کنه هم باید فایل هایی با پسوند *.PDF رو ذخیره کنه. حالا من موندم که خود فایل (عکس و فایل PDF) رو در بانک ذخیره کنه یا آدرس فایل در هارد وجود داره ذخیره کنه ؟؟

در ضمن برنامه تحت شبکه و تحت وب هم هست...

لطفا دوستان راهنمایی کنید با تشکر.*

M.KH-SH
چهارشنبه 11 مرداد 1391, 15:32 عصر
دوست عزیز شما هر 2 راه رو میتونی انجام بدی و به این نکته توجه کن که اگر میخوای تحت وب کار کنی باید آدرس عکس رو وارد کنی و از طریق اون آدرس عکس رو لود کنی حالا اگه شما میخوای فقط برنامه رو از طریق نرم افزار بارگذاری کنی تمام فایل ها رو تو بانک ذخیره کن ولی اینم هست که حجم بانک به شدت افزایش پیدا میکنه
فایل pdf هم همینطور از هر 2 طریق میتونی ذخیره کنی و بارگذاری برنامه چوت تحت وب هست پیشنهاد من اینه که با آدرس کار کنی نه با خود فایل

اگر برنامه از طریق socket نویسی هستش که اونم میتونی از هر 2 طریق استفاده کنی چون برای ارسال حتما باید تبدیل به بایت بشه و این نکته هم بگم که سایز بافر رو متغییر تعریف کن که بتونی با همون بافر فایل 1کیلوبایتی هم بفرستی و فایل 100گیگابایتی هم ارسال کنی و علاوه بر همه اینا متن هم ارسال کنی اگه که از خود sql به صورت مستقیم استفاده کن

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

سئوالی بود در خدمت هستم

JaVa
چهارشنبه 11 مرداد 1391, 15:43 عصر
ممنون از پاسخ خیلی خوبتون.


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

اینو خوب متوجه نشدم ؟

M.KH-SH
چهارشنبه 11 مرداد 1391, 16:06 عصر
خوب منظور من اینه که اگه شما فقط و تنها میخوای کاربران از طریق نرم افزار تحت ویندوز به برنامه شما اتصال برقرار کنن میتونی همه فایل ها رو در بانک ذخیره کنی که برای این امر هم میتونی از بانک mysql و یا ms sql استفاده کنی هر 2 جواب گویی بسیار خوبی دارن
البته اگه نخوای همه رو با هم نمایش بدی منظور من این هست ::: select * from tb_1111
همیشه برای اینکه سرعت خوبی برای انتقال اطلاعات داشته باشی باید از where استفاده کنی تا اطلاعات دقیقی برات نمایش پیدا کنه مثل نرم افزار های بیمه که یک زمان افت سرعت پیدا نکنی و حجم اطلاعات ارسالی زیاد نشه

hakim22
چهارشنبه 11 مرداد 1391, 17:12 عصر
در SQL server 2008 نسخه ی کامل گزینه ای وجود داره که شما می توانید فیلدهایی تعریف کنید که از قابلیت filesystem پشتیبانی می کنه. به معنی که به SQL می فهمانید که این فیلد قرار است اطلاعات با حجم بالا ذخیره کند. SQL تا 8 مگابایت برای هر فایل را کاملا بهینه می داند. برای حجم های بین 8 مگابایت تا 2 گیگابایت را هم بدون کد نویسی خاصی و فقط با تغییر اندازه فیلد پشتیابانی می کند. هم چنین قابلیت ذخیره فایلهای با حجم بیشتر هم دارد.
و بعد در جستجو از الگوریتم هایی استفاده می کند که سرعت بازخوانی بهینه باشد.
در صورتی که حجم فایلهای شما ممکنه از 2 گیگابایت تجاوز کنه به سراغ FileSystem بروید . در غیر این صورت varbinaryMax برای شما کفایت می کند ( پیشنهاد من این است که بجای مکس یک مقدار مشخصی قرار دهید)
تجربه ی من در مورد یک نرم افزار با همین شیوه کاملا موفق بود و عملا هیچ مشکل خاصی در باز خوانی وجود ندارد.
فقط این که ما محتوای فایلهای را در یک جدول مجزا نرمال می کنیم. یعنی سعی کنید جدولی که محتوای فایلها را در خودش نگاه می دارد . یک ستون ID برای خودش و یک ستون ID برای رکورد اصلی و یک ستون هم برای محتوایش داشته باشد.
جستجو همیشه از رکورد اصلی انجام می شود. و وقتی مطمئن شدید کاربر قصد نمایش محتوای یک فایل خاص درون یک رکورد اصلی را دارد آن یک مورد را از جدول محتوای فایل دانلود کرده و نمایش دهید.
در برنامه ی من فایلهایی با حجم 40 تا 50 مگابایت هم در زمان بین 3 تا 5 ثانیه در رایانه ی کاربر مشاهده میشد. (اون هم یک سیستم با رم یک گیگابایت و پردازنده 3400 Hz قدیمی)

vahid1400
دوشنبه 16 مرداد 1391, 16:14 عصر
دوست عزیز اگر امکان داره طریقه کد نویسی قرار دادن یک فایل مثلا pdf رو داخل دیتابیس توضیح بدید
آیا بوسیله دستور insert هست؟
اگر امکان داره خواندن و نوشتن یه فایل در دیتابیس رو توضیح بدید
ممنون

alimah
دوشنبه 16 مرداد 1391, 20:48 عصر
سلام
زمانی کد زیر را می نویسم sqlconnaction را نمی شناسد در صورتی پایگاه داده ما در خود ای اس پی ساخته شده و جدول مورد نیاز هم به وجود آمده است.

alimah
دوشنبه 16 مرداد 1391, 20:50 عصر
برای ذخیره عکس در پایگاه داده از طریق ای اس پی باید چکار کنم؟ ممنون

alimah
دوشنبه 16 مرداد 1391, 20:53 عصر
ضمناً کد زیر را نوشتم فقط sqlconnaction ا نمی شناسد.SqlConnection connection = null;

M.KH-SH
سه شنبه 17 مرداد 1391, 00:00 صبح
دوست عزیز خوب کانکشن استرینگ اشتباه هستش که نمیشناسه وگرنه که دروغ نمیگه

tooraj_azizi_1035
چهارشنبه 18 مرداد 1391, 12:57 عصر
از این لینک استفاده کن: http://msdn.microsoft.com/en-us/library/cc716724.aspx

JaVa
چهارشنبه 04 بهمن 1391, 23:31 عصر
در SQL server 2008 نسخه ی کامل گزینه ای وجود داره که شما می توانید فیلدهایی تعریف کنید که از قابلیت filesystem پشتیبانی می کنه. به معنی که به SQL می فهمانید که این فیلد قرار است اطلاعات با حجم بالا ذخیره کند. SQL تا 8 مگابایت برای هر فایل را کاملا بهینه می داند. برای حجم های بین 8 مگابایت تا 2 گیگابایت را هم بدون کد نویسی خاصی و فقط با تغییر اندازه فیلد پشتیابانی می کند. هم چنین قابلیت ذخیره فایلهای با حجم بیشتر هم دارد.
و بعد در جستجو از الگوریتم هایی استفاده می کند که سرعت بازخوانی بهینه باشد.
در صورتی که حجم فایلهای شما ممکنه از 2 گیگابایت تجاوز کنه به سراغ FileSystem بروید . در غیر این صورت varbinaryMax برای شما کفایت می کند ( پیشنهاد من این است که بجای مکس یک مقدار مشخصی قرار دهید)
تجربه ی من در مورد یک نرم افزار با همین شیوه کاملا موفق بود و عملا هیچ مشکل خاصی در باز خوانی وجود ندارد.
فقط این که ما محتوای فایلهای را در یک جدول مجزا نرمال می کنیم. یعنی سعی کنید جدولی که محتوای فایلها را در خودش نگاه می دارد . یک ستون ID برای خودش و یک ستون ID برای رکورد اصلی و یک ستون هم برای محتوایش داشته باشد.
جستجو همیشه از رکورد اصلی انجام می شود. و وقتی مطمئن شدید کاربر قصد نمایش محتوای یک فایل خاص درون یک رکورد اصلی را دارد آن یک مورد را از جدول محتوای فایل دانلود کرده و نمایش دهید.
در برنامه ی من فایلهایی با حجم 40 تا 50 مگابایت هم در زمان بین 3 تا 5 ثانیه در رایانه ی کاربر مشاهده میشد. (اون هم یک سیستم با رم یک گیگابایت و پردازنده 3400 Hz قدیمی)

دوست گرامی میشه لطفا یه نمونه مثال از این که میگید (("شما می توانید فیلدهایی تعریف کنید که از قابلیت filesystem پشتیبانی می کنه. به معنی که به SQL می فهمانید که این فیلد قرار است اطلاعات با حجم بالا ذخیره کند. SQL تا 8 مگابایت برای هر فایل را کاملا بهینه می داند. ")) برامون بزنید. ویه خورده بیشتر توضیح بدید.


با تشکر.

JaVa
جمعه 06 بهمن 1391, 10:36 صبح
کسی نیست یه راهنمایی در خصوص این موضوعی که بالا گفتم بگه ؟

فرید نجفلو
جمعه 06 بهمن 1391, 13:09 عصر
سلام
اصطلاح اصلی این تکنولوژی FileStream هست
در این نوع ذخیره سازی شما یعد از فعال سازی اون در سرور (و همچنین دیتابیس ) وقتی دارید یک جدول رو می سازید که قرار فایلی رو ذخیره کنه برای اطلاعات فایل یک فیلد از نوع (VarBinary(Max میسازید با این تفوات که FileStream رو برای اون فیلد خاص فعال می کنید
تو این حالت اطلاعات فیلد به جای دیتابیس در داخل تعداد فایل (که قبلا مسیر اون رو مشخص کردید) ذخیره میشه
برای ذخیره و بازیابی این نوع فیلد ها دو روش وجود داره
روش TSQL: این همون روش معمول کار با پایگاه داده ست و با دستور Insert و Update کار می کنه اما میشه گفت در مورد سرعت چیزی نصیب شما نمی کنه و تقریبا سرعتی برابر روش غیر از فایل استریم داره
روش Stream: این روش همون چیزیه که FileStream رو متمایز می کنه تو این حالت برای مثال برای Insert کردن ، شما یک تراکنش شروع می کنید رکورد رو ایجاد و فیلد مورد نظر رو NULL قرار میدید بعد در همون تراکنش یه درخواست Update خاص برای همون فیلد جدید میدید این بار سرور به شما یک هندل یا شیئ FileStream باز پس می ده حالا شما با روش هایی که برای نوشتن تو فایل (System.IO) استفاده می کنید می تونید داخل این فیلد بنویسید (با سرعتی بالا) . برای خوندن هم به همین صورته!
یه نتیجه کلی که می شه گرفت اینه که این رو سریعتره و بهینه تر اما طبق تجربه بهتون پیشنهاد می کنم اگه میشه با روش عادی کارتون رو راه بیوفته از همون استفاده کنید چون روش FileStream علاوه بر اینکه پیچیده تر هست دردسر های خاص خودش رو هم داره
در ضمن نصب اتوماتیک (بدون حضور شما) برای روش FileStream سخت تر و گاها برای یه کاربر غیر ممکن میشه

در هر دو روش هم حرف دوستمون رو تصدیق و توصیه می کنم:

فقط این که ما محتوای فایلهای را در یک جدول مجزا نرمال می کنیم

JaVa
جمعه 06 بهمن 1391, 16:47 عصر
می تونیم به فایل های pdf به عنوان یک موجودیت تازه نگاه کنیم و یک جدول مجزا هم براش در نظر بگیریم و به هر رکورد یک شماره بدیم و به عنوان کلید خارجی جدول کتاب های الکترونیکی معرفیش کنیم.

در ضمن اگه من بخوام فایل های pdf رو در کامپیوتر سرور قرار بدم چطور می تونم فایل pdf رو از کامپیوتر سرور به کامپیوتر کلاینت ببرم ؟؟

با تشکر.

M.KH-SH
جمعه 06 بهمن 1391, 17:02 عصر
بله میشه

دوست عزیز شما فایل رو در سرور بدون binary کردن می تونین یک آدرس قرار بدین در دیتابیس به فرض یک ایپی و فولدر قرار گرفتن فایل و بعد در سیستم کلاینت آدرس لود میشه و فایل خونده میشه

ولی چون شما دارین از win app استفاده میکنین بهتر هستش از قوانین win app استفاده کنین نه از قوانین web app .

JaVa
جمعه 06 بهمن 1391, 17:14 عصر
بله میشه

دوست عزیز شما فایل رو در سرور بدون binary کردن می تونین یک آدرس قرار بدین در دیتابیس به فرض یک ایپی و فولدر قرار گرفتن فایل و بعد در سیستم کلاینت آدرس لود میشه و فایل خونده میشه

ولی چون شما دارین از win app استفاده میکنین بهتر هستش از قوانین win app استفاده کنین نه از قوانین web app .


خوب پس میشه بدون ذخیره کردن خود فایل در دیتا بیس اون رو توی سیستم کلاینت هم فراخوانی کرد.

حالا که آدرس فایل (در سمت کلاینت) رو توی دیتابیس ذخیره کردیم چطور باید در سیستم کلاینت این آدرس که فایل PDF هم داخلشه رو آورد توی سیستم کلاینت ؟


با تشکر.

فرید نجفلو
جمعه 06 بهمن 1391, 17:33 عصر
خوب پس میشه بدون ذخیره کردن خود فایل در دیتا بیس اون رو توی سیستم کلاینت هم فراخوانی کرد.

حالا که آدرس فایل (در سمت کلاینت) رو توی دیتابیس ذخیره کردیم چطور باید در سیستم کلاینت این آدرس که فایل PDF هم داخلشه رو آورد توی سیستم کلاینت ؟

به شرطی که تو شبکه محلی شما ، پوشه ای که قراره فایل ها رو تو اون قرار بدید Share شده باشه امکان داره و گرنه نمیشه
روش Share کردن هم که امنیتش زیر صفره ولی یه مزیت خیلی بزرگ داره اونم دسترسی مستقیم به فایله و دیگه نیازی با دانلود شد توی سیستم کلاینت نداره
شاید هم بخواید از FTP استفاده کنید (مثلا FileZilla) که اینم دردسرش زیاده

M.KH-SH
جمعه 06 بهمن 1391, 17:38 عصر
تنها برای شبکه محلی نیست شما اگه بخواین با نصب iis به راحتی میتونین به فولدری که نیاز دارین دست رسی پیدا کنین حالا از هرجا توی دنیا شما اول باید ببینین نرم افزار رو برای یک شرکت ، یک ساختمان ، یک شهر یا یک کشور یا یک دنیا میخواین بعد به فکر بقیه چیزاش باشین.

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

JaVa
جمعه 06 بهمن 1391, 17:46 عصر
تنها برای شبکه محلی نیست شما اگه بخواین با نصب iis به راحتی میتونین به فولدری که نیاز دارین دست رسی پیدا کنین حالا از هرجا توی دنیا شما اول باید ببینین نرم افزار رو برای یک شرکت ، یک ساختمان ، یک شهر یا یک کشور یا یک دنیا میخواین بعد به فکر بقیه چیزاش باشین.

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


به شرطی که تو شبکه محلی شما ، پوشه ای که قراره فایل ها رو تو اون قرار بدید Share شده باشه امکان داره و گرنه نمیشه
روش Share کردن هم که امنیتش زیر صفره ولی یه مزیت خیلی بزرگ داره اونم دسترسی مستقیم به فایله و دیگه نیازی با دانلود شد توی سیستم کلاینت نداره
شاید هم بخواید از FTP استفاده کنید (مثلا FileZilla) که اینم دردسرش زیاده

برنامه برای کتابخانه دانشگاه هست. حداکثر هم برای 10 کلاینت وجود داره.

لطفا اگه امکانش هست هم یه توضیحی در خصوص share کردن و هم استفاده از IIS رو بدید. تا ببینم چطور میشه.

با تشکر از شما که دارید کمک می کنید.

maryam vadikheil
جمعه 06 بهمن 1391, 17:59 عصر
اگر آدرس را در بانک ثبت کنید خیلی بهتر است.

فرید نجفلو
جمعه 06 بهمن 1391, 18:01 عصر
اگه واسه دانشگاهه و خارج از اون نیست و احتمالا دسترسی به PDF ها هم مشکلی نداره
از Sharing استفاده کنید
به این صورت که شما یه پوشه رو Share می کنید (راست کلیک - Prperties و برگه Share)
وقتی دارید فایل ها رو ذخیره می کنید خود فایل رو تو اون پوشه یا زیر شخه هاش ذخیره (کپی) می کنید
تو دیتابیس هم مسیر اون فایل رو البته به فرمت شبکه ای باشه یعنی آدر با آی پی یا اسم سیستم سرور شرع میشه
حالا تو برنامه کلاینت آدرس رو از دیتابیس می گیرد و اون رو نمایش و یا برای کاربر یه نسخه می دید

M.KH-SH
جمعه 06 بهمن 1391, 18:57 عصر
خوب اگه واسه دانشگاه هستش که بیخیال iis فقط بدی share اینه که دیگه نیازی به برنامه شما نیست ;)
کاربر با یکم ور رفتن به بخش my network سیستم به راحتی کل پوشه شما رو پیدا میکنه و اگه هم شما جواز edit داده باشی یکی که مشکل هم داشته باشه با یک shift + delete کل برنامه رو میریزه به هم

پس کلا بیخیال share باش چون آب تو هاون کوبیدن میشه کارت ولی برای این من پیشنهادم اینه از filestream استفاده کنی هم زیبا تر میشه هم امنیت میره بالا ولی دیگه خیلی بخوای کار رو در آینده ببری بالاتر از web service ها استفاده کن و یک وب سرویس طراحی کن.

تا جایی که میتونی share رو بیخیال باش که خیلی راحت میشه هک کرد سیستم رو و دیتا رو پروند.

JaVa
جمعه 06 بهمن 1391, 19:15 عصر
خوب اگه واسه دانشگاه هستش که بیخیال iis فقط بدی share اینه که دیگه نیازی به برنامه شما نیست ;)
کاربر با یکم ور رفتن به بخش my network سیستم به راحتی کل پوشه شما رو پیدا میکنه و اگه هم شما جواز edit داده باشی یکی که مشکل هم داشته باشه با یک shift + delete کل برنامه رو میریزه به هم

پس کلا بیخیال share باش چون آب تو هاون کوبیدن میشه کارت ولی برای این من پیشنهادم اینه از filestream استفاده کنی هم زیبا تر میشه هم امنیت میره بالا ولی دیگه خیلی بخوای کار رو در آینده ببری بالاتر از web service ها استفاده کن و یک وب سرویس طراحی کن.

تا جایی که میتونی share رو بیخیال باش که خیلی راحت میشه هک کرد سیستم رو و دیتا رو پروند.

توی این قسمت امنیت رو بیخیال:چشمک:

هم بقول شما می تونم جواز edit رو بردارم.

هم اینکه سیستم های خود دانشگاه برنامه Freeze روشون نصبه و دسترسی به قسمت های سیستم رو میشه کنترل کرد.:لبخند:

باز ممنون.

M.KH-SH
جمعه 06 بهمن 1391, 22:27 عصر
دوست عزیز امنیت خیلی مهم هستش اگه که مهم نیست پس یک iis بریز و با استفاده از find file به راحتی با استفاده از asp فایل ها رو نمایش بده و فایل asp رو هم بکگراند سیستم های دیگه بزار.

کدوم دانشگاهی یک سر بیام :):قهقهه:

فرید نجفلو
جمعه 06 بهمن 1391, 23:18 عصر
دوست عزیز امنیت خیلی مهم هستش اگه که مهم نیست پس یک iis بریز و با استفاده از find file به راحتی با استفاده از asp فایل ها رو نمایش بده و فایل asp رو هم بکگراند سیستم های دیگه بزار.

کدوم دانشگاهی یک سر بیام :):قهقهه:
به احتمال زیاد و به استنباط من ، اینکه میگن امنیت مهم نیست منظورشون فقط در این مورده
اگه شما بخواید یک سری کتاب الکترونیک رو تو دانشکاه رو سیستم های رایانه ای و شبکه داخلی اون بیسن دانشجویان به اشتراک بذارید مهم نیست اون ها از چه طریقی به اون فایل ها دسترسی دارن فقط ممکنه مجوز حذف و ویرایش نداشته باشن
و حالا ایشون می خوان برای این کتاب های دیجیتالی یه سیستمی هم طراحی کنن (مثلا بخشی از یه برنامه بزرگتر دیگه هست)
اگه یکم فکر کنیم این که دانشجو فایل رو باسیستم ما بگیره یا از MyComputer بره و خودش یه دور تو فایل بزنه مسئله ای نداره چون هدف دادن کتاب به دانشجو هست و کتاب ، فیزیکی هم نیست که بگیم میزنه زیر بغلش میبره
شما هم که روی IIS یا WCF و ... تاکید دارید ، همون طور که گفتم اون ها یک مشکل اساسی دارن اونم عدم دسترسی مستقیمه
فرض کنید دانشجو یه کتاب رو دیده می خواد قبل از زدن اون توی فلش باز کن و ببینه همون چیزی هست که می خواد یا نه . تو روش هایی که شما گفتید باید اول کل فایل بیاد رو سیستم کلاین (که ممکنه یه کتاب حجیم باشه) بعد دانشجو بتونه بازش کنه! اما تو Sharing نیازی به این دانلود نیست و میشه از همون مسیر بازش کرد
من این نوع دسترسی ها را با WCF,Web Service ,FTP تست کردم و همشون همین مشکل رو دارن

M.KH-SH
شنبه 07 بهمن 1391, 07:26 صبح
شما هم که روی IIS یا WCF و ... تاکید دارید ، همون طور که گفتم اون ها یک مشکل اساسی دارن اونم عدم دسترسی مستقیمه
فرض کنید دانشجو یه کتاب رو دیده می خواد قبل از زدن اون توی فلش باز کن و ببینه همون چیزی هست که می خواد یا نه . تو روش هایی که شما گفتید باید اول کل فایل بیاد رو سیستم کلاین (که ممکنه یه کتاب حجیم باشه) بعد دانشجو بتونه بازش کنه! اما تو Sharing نیازی به این دانلود نیست و میشه از همون مسیر بازش کرد
من این نوع دسترسی ها را با WCF,Web Service ,FTP تست کردم و همشون همین مشکل رو دارن

مشکل من اینه که آدم چرا باید کار بیهوده انجام بده وقتی میخواد از فولدر شیر استفاده کنه دیگه چرا میخواد یک نرم افزار براش بنویسه؟
این سیستم رو به فرض ما بگیم بدون اشکال (خودم به شخصه این سیستم رو با چند نرم افزار از کار میندازم) ولی بازم نرم افزار نویسی برای این کار بیهوده هستش به هر حال یک بار نیاز به دانلود کردن نرم افزار روی فلش داره پس بهتره که تنها یک بار دانلود کنه و اونم روی فلش دانشجو یعنی به صورت مستقیم زمانی که pdf رو پیدا کرد دانشجو روی دکمه دانلود کلید کنه و برنامه بیاد پورت های usb رو چک کنه و پورت مورد نظر رو به دانشجو نشون بده (داریو فلش) بعد از نمایش دادن برنامه بیاد یک فولدر با اسم برنامه بسازه و فایل رو در اون دانلود کنه.

خوب از نظر بصری میگن این یک نرم افزار ولی فایل شیر رو هم یک کودک اول دبستانی هم بلده (به چشم دیدم دارم میگم).

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

web service ها بهترین گزینه ها برای نوشتن برنامه های تحت شبکه هستن چون دیگه نیاز به نصب sql نیست روی سیستم ها با هر خطا بانک نیازی نیست کلاینت ها رو دچار مشکل کنی به راحتی روی یک سیستم کار رو انجام میدی ، هیچ مشکلی هم نیست بهتره که از شیرینگ استفاده نکنی دوست من.

JaVa
شنبه 07 بهمن 1391, 10:34 صبح
به احتمال زیاد و به استنباط من ، اینکه میگن امنیت مهم نیست منظورشون فقط در این مورده
اگه شما بخواید یک سری کتاب الکترونیک رو تو دانشکاه رو سیستم های رایانه ای و شبکه داخلی اون بیسن دانشجویان به اشتراک بذارید مهم نیست اون ها از چه طریقی به اون فایل ها دسترسی دارن فقط ممکنه مجوز حذف و ویرایش نداشته باشن
و حالا ایشون می خوان برای این کتاب های دیجیتالی یه سیستمی هم طراحی کنن (مثلا بخشی از یه برنامه بزرگتر دیگه هست)
اگه یکم فکر کنیم این که دانشجو فایل رو باسیستم ما بگیره یا از MyComputer بره و خودش یه دور تو فایل بزنه مسئله ای نداره چون هدف دادن کتاب به دانشجو هست و کتاب ، فیزیکی هم نیست که بگیم میزنه زیر بغلش میبره



مشکل من اینه که آدم چرا باید کار بیهوده انجام بده وقتی میخواد از فولدر شیر استفاده کنه دیگه چرا میخواد یک نرم افزار براش بنویسه؟
این سیستم رو به فرض ما بگیم بدون اشکال (خودم به شخصه این سیستم رو با چند نرم افزار از کار میندازم) ولی بازم نرم افزار نویسی برای این کار بیهوده هستش به هر حال یک بار نیاز به دانلود کردن نرم افزار روی فلش داره پس بهتره که تنها یک بار دانلود کنه و اونم روی فلش دانشجو یعنی به صورت مستقیم زمانی که pdf رو پیدا کرد دانشجو روی دکمه دانلود کلید کنه و برنامه بیاد پورت های usb رو چک کنه و پورت مورد نظر رو به دانشجو نشون بده (داریو فلش) بعد از نمایش دادن برنامه بیاد یک فولدر با اسم برنامه بسازه و فایل رو در اون دانلود کنه.

خوب از نظر بصری میگن این یک نرم افزار ولی فایل شیر رو هم یک کودک اول دبستانی هم بلده (به چشم دیدم دارم میگم).

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

web service ها بهترین گزینه ها برای نوشتن برنامه های تحت شبکه هستن چون دیگه نیاز به نصب sql نیست روی سیستم ها با هر خطا بانک نیازی نیست کلاینت ها رو دچار مشکل کنی به راحتی روی یک سیستم کار رو انجام میدی ، هیچ مشکلی هم نیست بهتره که از شیرینگ استفاده نکنی دوست من.



دوست عزیز : M.KH-SH (http://barnamenevis.org/member.php?220554-M.KH-SH) همونجور که آقای نجفلو گفتند این یه قسمت خیلی کوچیک از برنامه ای کتابخانه هست که من دارم می نویسم.

و اگه شما هم امکانش هست یه پروژه به عنوان Sample بذار ببینیم این web service که میگید چطوره؟:چشمک:

M.KH-SH
شنبه 07 بهمن 1391, 14:24 عصر
دوست عزیز : M.KH-SH (http://barnamenevis.org/member.php?220554-M.KH-SH) همونجور که آقای نجفلو گفتند این یه قسمت خیلی کوچیک از برنامه ای کتابخانه هست که من دارم می نویسم.

و اگه شما هم امکانش هست یه پروژه به عنوان Sample بذار ببینیم این web service که میگید چطوره؟

به هر حال از من گفتن بود دوست عزیزم.

برای وب سرویس هم شما وارد visual studio شو و در قسمت web بر روی web service کلیک کن و یک پروژه بساز
شما شروع کن شئوالی بود درخدمت هستم.

lilyum2
شنبه 30 آذر 1392, 16:12 عصر
سلام
اصطلاح اصلی این تکنولوژی FileStream هست
در این نوع ذخیره سازی شما یعد از فعال سازی اون در سرور (و همچنین دیتابیس ) وقتی دارید یک جدول رو می سازید که قرار فایلی رو ذخیره کنه برای اطلاعات فایل یک فیلد از نوع (VarBinary(Max میسازید با این تفوات که FileStream رو برای اون فیلد خاص فعال می کنید
تو این حالت اطلاعات فیلد به جای دیتابیس در داخل تعداد فایل (که قبلا مسیر اون رو مشخص کردید) ذخیره میشه
برای ذخیره و بازیابی این نوع فیلد ها دو روش وجود داره
روش TSQL: این همون روش معمول کار با پایگاه داده ست و با دستور Insert و Update کار می کنه اما میشه گفت در مورد سرعت چیزی نصیب شما نمی کنه و تقریبا سرعتی برابر روش غیر از فایل استریم داره
روش Stream: این روش همون چیزیه که FileStream رو متمایز می کنه تو این حالت برای مثال برای Insert کردن ، شما یک تراکنش شروع می کنید رکورد رو ایجاد و فیلد مورد نظر رو NULL قرار میدید بعد در همون تراکنش یه درخواست Update خاص برای همون فیلد جدید میدید این بار سرور به شما یک هندل یا شیئ FileStream باز پس می ده حالا شما با روش هایی که برای نوشتن تو فایل (System.IO) استفاده می کنید می تونید داخل این فیلد بنویسید (با سرعتی بالا) . برای خوندن هم به همین صورته!
یه نتیجه کلی که می شه گرفت اینه که این رو سریعتره و بهینه تر اما طبق تجربه بهتون پیشنهاد می کنم اگه میشه با روش عادی کارتون رو راه بیوفته از همون استفاده کنید چون روش FileStream علاوه بر اینکه پیچیده تر هست دردسر های خاص خودش رو هم داره
در ضمن نصب اتوماتیک (بدون حضور شما) برای روش FileStream سخت تر و گاها برای یه کاربر غیر ممکن میشه

در هر دو روش هم حرف دوستمون رو تصدیق و توصیه می کنم:

سلام دوست عزیز

ممنون از توضیحاتتون
به هر سایتی مراجعه کردم تقریبا به همین توضیحات برخوردم. اگه توضیحات همراه با مثال باشه خیلی بهتره.
من نیاز به ذخیره حدود 2GB دارم که با ید از روش fileStream استفاده کنم. تنظیماتش رو انجام دادم. می خواستم بپرسم نیاز هست که کدنویسی هم تغییر پیدا کنه یا نه؟