PDA

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



amir_3d_mad
جمعه 20 اردیبهشت 1392, 11:57 صبح
با سلام خدمت دوستان و اساتید گرامی.

احتمالاً سوالم رو در عنوان تاپیک نتونستم کامل بیان کنم.

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

با این تفاوت که در سطح وسیعی نیست و در یک شبکه workgroup خیلی کوچک با امکان دسترسی 3 یا 4 نفر هست.

الان موندم دیتابیسم رو sql انتخاب کنم یا Access ؟

البته خودم بی نهایت دوست دارم sql باشه چون من asp.net خیلی کار کردم و با sql آشنایی کامل دارم و مزیتهای اونو میدونم...

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

یعنی نمیخوام sql server نصب کنم ... چون اصلاً تنظیمات و نحوه نگهداری اونرو بلد نیستم و نمیخوام هر موقع مشکلی براش پیش اومد منو بکشونن به اون اداره جهت رفع مشکل...

خلاصه میخوام یک کار بی دردسر انجام بدم...

لطفاً راهنمایی بفرمائید.

SHD.NET
جمعه 20 اردیبهشت 1392, 17:43 عصر
سلام. اگه میخواین از sql استفاده نکنین، میتونید از سوکت استفاده کنید، (برای شبکه کردن)

آموزش هاش هم فراوونه، ولی به نظرم بهترین راه و معقول ترین راه همون SQL هستش،
اگه میخواین دردرسرهای sql رو نداشته باشین، میتونید از MySql استفاده کنید، که هم سریع نصب میشه، هم عملکردش خوبه (سرعت و مولتی کانکت و ...)، شبکه هم میشه

موفق باشید

h_a_m_i_d
شنبه 21 اردیبهشت 1392, 00:28 صبح
با سلام
ببین دوست عزیز
نوشتن برنامه بر اساس معیارهای محیطی بررسی میشه
شما سیستمی رو که داری مینویسی مثلا یک سیستم انبارداری
در کجا باید اجرا بشه
باید با توجه به امکانات اون مکان نوشته بشه
اصلا مهم نیست که شما به چی تسلط داری مهم اینه که چی بهتره
چند مورد رو که تا بحال زیاد گفتم دوباره میگم
1-اگر سیستم های شرکتی که داری برنامه رو براش مینویسی قدرتمند نیستند میتونی از winsock استفاده کنی که نمونه پروژه گذاشتم البته از لحاظ امنیتی و خیلی موارد دیگه بهتره از سایر روش ها
2-اگه نمیتونی با winsock کنار بیای حتما از sql استفاده کن و تحت شبکه (با ای پی) نصب کن
3-اکسس
4-فایل معمولی

amir_3d_mad
شنبه 21 اردیبهشت 1392, 00:39 صبح
ممنون دوستان.

فقط برنامه نویسی سوکت به چه صورت هست؟

یعنی چه کمکی به من میکنه در مورد پایگاه داده ؟ من اصلاً با این روش آشنا نیست، البته مقالات و نمونه کدهایی در موردش پیدا کردم ولی اینکه مزیتش نسبت به بقیه روشها چیه برام مبهمه...

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

لطفاً کمی این موضوع را برام روشنتر کنید چون من کاملاً در این مورد بی اطلاع هستم.

با تشکر.

h_a_m_i_d
شنبه 21 اردیبهشت 1392, 00:48 صبح
دوست عزیز ببین
برنامه های مبنی بر سوکت بیشتر بر مبنای سرور هستند مخصوص ان اگه پروژتون بانک اطلاعاتی داره
اما بسته به هر جا میشه اونو حتی به صورت کلاینت به کلاینت نوشت
الان مثلا شما یک برنامه برای انبارداری نوشتید که 100 نفر هم استفاده کننده داره
اونو با sql مینویسید و همزمان 2 تا کاربر یک کالای جدید رو با یک ای دی (کلید جدول) وارد میکنند اینجاست که sql :گیج:
اما مزایای سوکت
امکان ساخت صف
امنیت بالاتر چون کل دیتابیس رو به اشتراک نمیذارین فقط دستورات هستند که اونم میتونید کد کنید
اگه سیستم های کلاینت ضعیف باشند خیلی خوب جواب میده
کلا بهت بگم دوست عزیز دستت برای هر کاری نسبت به sql باز تر هست
نمونه پروژه هم گذاشتم که در تایپیک http://barnamenevis.org/showthread.php?370307-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B3%D9%88%D8%B1%D8%B3-%DA%86%D9%86%D8%AF-%D8%AA%D8%A7-%D9%BE%D8%B1%D9%88%DA%98%D9%87 موجود هست
امیدوارم که مشکلت برطرف شده باشه
اکثرا کسایی که پروژه های حرفه ای کار میکنن از این روش استفاده میکنن البته نه اینکه روش های دیگه غیرحرفه ای باشند این روش به نظر من حرفه ای تر هست

amir_3d_mad
شنبه 21 اردیبهشت 1392, 01:09 صبح
تا اونجایی که من فهمیدم در برنامه نویسی سوکت یک سرور وجود داره که دیتابیس هم در اون سروره... بعد هر یک از کلاینت ها درخواستهاشونو به برنامه اصلی که روی سرور هست میدن و اون کارهای لازم رو انجام میده و نتیجه رو براشون میفرسته... درسته؟؟؟

یعنی کل دیتابیس شیر نمیشه ...

فقط سوالی که پیش میاد اینه که آیا میشه اینجا از sql express استفاده کرد؟؟؟ یعنی اون برنامه اصلی که روی سرور هست از sql express استفاده کنه؟؟؟

SHD.NET
شنبه 21 اردیبهشت 1392, 13:38 عصر
بله میشه. چون دیگه نیازی نیست که با SQL شبکه کنین و از SQL Server استفاده کنین،

h_a_m_i_d
شنبه 21 اردیبهشت 1392, 14:28 عصر
تا اونجایی که من فهمیدم در برنامه نویسی سوکت یک سرور وجود داره که دیتابیس هم در اون سروره... بعد هر یک از کلاینت ها درخواستهاشونو به برنامه اصلی که روی سرور هست میدن و اون کارهای لازم رو انجام میده و نتیجه رو براشون میفرسته... درسته؟؟؟

یعنی کل دیتابیس شیر نمیشه ...

فقط سوالی که پیش میاد اینه که آیا میشه اینجا از sql express استفاده کرد؟؟؟ یعنی اون برنامه اصلی که روی سرور هست از sql express استفاده کنه؟؟؟
دوست عزیز برای برنامه نویسی سوکت اصلا مهم نیست شما از چه تکنیکی برای ذخیره اطلاعات استفاده میکنی حتی میتونی اونارو توی فایل text ذخیره کنی اصلا نیاز نیست دیتابیس به اشتراک گذاشته بشه
فقط باید برنامه ای که داری به هر نحوی به اطلاعات دسترسی داده شده باشه

amir_3d_mad
شنبه 21 اردیبهشت 1392, 14:29 عصر
من یک مثال در این رابطه پیدا کردم که اطلاعات رو بصورت دیتاتیبل میفرسته به کلاینت:
sql = "Select Transaction_ID,Log_Date,Log_Time,Client_Action,Rem arks from ClientLogs where Account_No=" & ClientAccountNumber & ""
dataadapter = New OleDbDataAdapter(sql, connection)
dataadapter.Fill(dataset, "ClientLogs")
connection.Close()
dataadapter.Dispose()

Dim send_to_client As Byte()
send_to_client = Encoding.ASCII.GetBytes(dataset & Chr(13))
networkStream.Write(send_to_client, 0, send_to_client.Length)
networkStream.Flush()

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

فقط من چطوری میتونم برنامه رو در کامپیوتر خودم تست کنم؟ یعنی هم کلاینت باز باشه و هم سرور؟؟؟
چند بار امتحان کردم ارور داده.

h_a_m_i_d
شنبه 21 اردیبهشت 1392, 14:46 عصر
ببین دوست عزیز تو اون تایپیک یک چت روم گذاشتم اونو دانلود کن به جای ای پی هم بزنید 127.0.0.1

h_a_m_i_d
شنبه 21 اردیبهشت 1392, 14:47 عصر
اون برنامه چت روم نوشته ها رو ارسال میکنه شما اطلاعات رو بفرسیتید میتونید رمز کنید بفرستید ا
حتما هم اطلاعات رو باید جدا کنید تا بعد بتوینید تفکیکشون کنید

amir_3d_mad
چهارشنبه 25 اردیبهشت 1392, 19:50 عصر
من کدی رو در این باره پیدا کرده و کمی دستکاری کرده ام که در ضمیمه میبینید.

ظاهراْ همه چیز درسته. فقط یک ارور موقع بازگزداندن آرایه به دیتاتیبل میده که من نتونستم حلش کنم.

یعنی ارتباط برقرار میشه و سند و ریسیو مشکلی نداره... ولی دیتاتیبل که تبدیل به Byte شده و ارسال شده است موقع تبدیل دوباره به Datatable ارور میدهد.

amir_3d_mad
چهارشنبه 25 اردیبهشت 1392, 22:07 عصر
آقا حل شد....

مشکل از اندازه آرایه بود که با انتخاب یک آرایه بزرگتر اونم حل شد.....

ممنون از همگی....

h_a_m_i_d
چهارشنبه 25 اردیبهشت 1392, 22:26 عصر
خدا را شکر شادمون کردی موفق باشی ببخشید اصلا حواسم به تایپیک ها نیست بهم پیام میدادی حتما نگاه میکردم به هر حال خوشحالم که مشکلت رو خودت برطرف کردی
موفق باشی

amir_3d_mad
چهارشنبه 01 خرداد 1392, 18:18 عصر
با سلامی دوباره.

همانطور که در فایل ضمیمه مشاهده میکنید مشکل ارسال دیتاتیبل از طریق سوکت رو تونستم حل کنم.

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

اما موندم این درخواست ها رو چطوری مدیریت کنم؟ تنها راهی که به نظرم میرسه اینه که درخواست ها رو بصورت کد دربیارم (فهرستی از درخواستهای ممکن توسط کاربر) و فقط اون کد رو به سرور بفرستم تا سرور با دریافت اون کد عملیات مورد نظر رو انجام بده.

مثلاً برای نمایش لیست کالا ها ، کلاینت عدد 3 رو بفرسته به سرور و سرور لیست کالاها رو در قالب دیتاتیبل بفرسه به کلاینت...

اما مشکلی که پیش میاد اینه که مثلاً کلاینت بخواد یک کالا به دیتابیس اضافه کنه... پس باید یک دیتاتیبل به همراه کد عملیات به سرور بفرسته....

بطور خلاصه این که قالب یا فرمت اطلاعاتی که باید بین کلاینت و سرور رد و بدل بشه برای هر درخواست متفاوته! اینجاست که نمیدونم چطوری باید این قضیه رو مدیریت کنم؟؟؟

لطفاً اگر راه حلی به نظرتون میرسه منو راهنمایی کنید.

یه سوال دیگه هم در مورد خود برنامه دارم که بعداً میپرسم.