ورود

View Full Version : دیتابیس و ارتباط از طریق اینترنت



MNosouhi
چهارشنبه 05 مهر 1385, 12:56 عصر
تعدادی Client داریم که هر کدوم در یک شهر قرار گرفته اند . حالا قراره که دیتابیس هر کدوم از این Client ها که تغییر کرد ، این تغییرات در دیتابیس Client های دیگر هم اعمال بشه . میخاستم بدونم که بهترین و بهینه ترین راه برای ارتباط این Client ها با هم چه روشی است .(البته میخام برنامم Application باشه نه تحت وب) . در ضمن Client ها فقط از طریق خط تلفت میتونن به اینترنت وصل بشن.

shobair
چهارشنبه 05 مهر 1385, 15:03 عصر
تعدادی Client داریم که هر کدوم در یک شهر قرار گرفته اند . حالا قراره که دیتابیس هر کدوم از این Client ها که تغییر کرد ، این تغییرات در دیتابیس Client های دیگر هم اعمال بشه . میخاستم بدونم که بهترین و بهینه ترین راه برای ارتباط این Client ها با هم چه روشی است .(البته میخام برنامم Application باشه نه تحت وب) . در ضمن Client ها فقط از طریق خط تلفت میتونن به اینترنت وصل بشن.

سلام
میتونی از ADSL بعنوان راه ارتباط (با Static IP) استفاده کنی و SQL Server بعنوان دیتابیس. برای امنیت بیشتر یک VPN برای کلاینت ها ایجاد کنی. ضمناً از ISP مربوطه بخوای که پورت SQL Server رو برای IP هایی که گرفتی باز کنه.

شبیر

MNosouhi
چهارشنبه 05 مهر 1385, 18:43 عصر
یعنی راهی که هزینش کمتر باشه نیست؟

mzjahromi
چهارشنبه 05 مهر 1385, 19:30 عصر
من فکر میکنم لا اقل یکی از کامپیوترا باید StaticIP داشته باشن

پیشنهاد:
سوالت رو به بخش شبکه منتقل کن بهتر جواب میگیری

MNosouhi
پنج شنبه 06 مهر 1385, 12:32 عصر
من فکر میکنم لا اقل یکی از کامپیوترا باید StaticIP داشته باشن
من هم همین عقیده رو دارم.
دوستان در مورد این روشی که در زیر آورده ام نظر بدن :

این روش مبتنی بر استفاده از Indy و نخ هاست (یه چیزی تو مایه برنامه های چت) . به این صورت که وقتی در یک Client رکوردی اضافه و یا تغییر کرد ، این رکورد به صورت یک پیغام متنی (که دارای فرمت خاصی است) به سمت سرور فرستاده میشه ، سرور که منتظر رسیدن پیغام هاست به محض رسیدن هر پیغام از سوی کلاینت ، اون پیغام رو در دیتابیس خودش ذخیره می کنه و برای همه کلاینت ها میفرسته (و یا اینکه صبر میکنه تا کلاینت ها درخواست Update شدن رو بفرستن و سپس اطلاعات رو بفرسته) . وقتی که رکوردی از دیتابیس سرور برای همه کلاینت ها فرستاده شد از داخل دیتابیس سرور حذف میشه.
البته فکر کنم که اگر تعداد کلاینت ها زیاد باشه سرور دچار مشکل بشه ، اما چون تعداد کلاینت ها 5 هستش به نظرم جواب میده .

دوستان نظرشون چیه؟

jahani1148
شنبه 08 مهر 1385, 11:16 صبح
با سلام . بانک اطلاعاتی را در سروری قرار بده که دارای ای پی valid باشد (در شبکه اینترنت معتبر باشه ) . پورت 1433 که مربوط به اسکیو ال سرور است را باز کنید . یک اکانت تعریف کنید و تنظیمات ado در دلفی را انجام دهید .

ghabil
شنبه 08 مهر 1385, 14:07 عصر
پورت رو نمیشه باز کرد مسیر ارتباطی اینترنت هست و ممکنه از پشت دهها Router رد بشه.
این روشی هم که خودت پیشنهاد کردی عملی نیست مگر با نوشتن یک نرم افزار Syncronyzer قدرتمند والا اصلا ممکنه تو لوپ بیفته سیستمت.
قبلا هم بهت گفتم راه حل منطقیت وب هستش.

shobair
شنبه 08 مهر 1385, 16:25 عصر
پورت رو نمیشه باز کرد مسیر ارتباطی اینترنت هست و ممکنه از پشت دهها Router رد بشه.
این روشی هم که خودت پیشنهاد کردی عملی نیست مگر با نوشتن یک نرم افزار Syncronyzer قدرتمند والا اصلا ممکنه تو لوپ بیفته سیستمت.
قبلا هم بهت گفتم راه حل منطقیت وب هستش.

سلام
از ISP مربوطه بخواین پورت شما رو باز کنه. معمولا IP ها NAT نیستند و مشکلی که شما گفتی پیش نمیاد.

شبیر

MNosouhi
یک شنبه 09 مهر 1385, 11:05 صبح
قبلا هم بهت گفتم راه حل منطقیت وب هستش.
خوب من هم این رو میدونم ، اما وقتی حاضر نیستند هزینه کنند کاری نمیشه کرد.

در این مورد نظرتون چیه:
تغییرات انجام شده در دیتابیس هر Client در قالب یه فایل XML ذخیره میشه . با تستی که کردم فایل XML رو تا 96 درصد میشه فشرده کرد . این فایل فشرده شده برای سرور فرستاده میشه و چون حجم فایل فشرده شده خیلی پایینه (در بدترین حالات که حجم واقعی فایل XML یک مگابایت باشه بعد از فشرده سازی ، حجم فایل فقط 40 کیلوبایت میشه) ، با سرعت پایین اینترنت از طریق خطوط تلفن مشکلی پیش نمیاد (حداکثر 10 ثانیه برای فرستادن فایل به سرور) . وظیفه برنامه سرور هم اینه که فایل ها رو به نحو صحیح بین همه کلاینت ها توزیع کنه . وقتی هم که یک کلاینت فایلی رو از سرور میگیره اول فایل رو از حالت فشرده سازی در میاره و سپس اطلاعات فایل XML رو در دیتابیس ذخیره میکنه.

لطفا نظر بدین.

ghabil
یک شنبه 09 مهر 1385, 14:55 عصر
XML که جادو نمیکنه ، فرقی نداره تو XML بریزی یا توی یک فایل TEXT مهم اینه که چطوری این دیتاها رو میخوای با هم هماهنگ نگهداری دوتا مثال میزانم شاید موضوع بیشتر روشن بشه :

1)از دستگاه A رکورد R1 با کلید AutoIncrement مثلا K1 رو آپدیت کردی روی سرور و سرور هم اونو آپدیت کرد ولی بهش کلید K2 رو داد. حالا تو آپدیت بعدی که میای و رکورد R2 رو از جدول دیگه ای آپدیت بکنی که با رکورد R1 از طریق کلید K1 ارتباط داره توی سرور این رابطه گم میشه ، مگر اینکه جدولی از کلیدهای آپدیت شده و معادلهاشون درست کنی و همراه دیتا بفرستی و همیشه آپدیت های جدید اول جدول خودشون رو کامل بکنند بعد از روی جدول دیتاهارو درج بکنند...

2) دستگاه A رکوردی رو که قبلا وارد کرده به دلیل اینکه مثلا اشتباه بوده پاک کرده ، توی XML میخوای چی بزاری و این دیتارو کی قرار بسازه ؟ (حالا دیگه داستان Update بماند)

ببین آقا محمد این کاری که میخوای بکنی رو میشه با سرهم بندی و ماستمالی موقتا جمعش کرد (یک راهش همین که از ISPهایی که این شرکتها استفاده میکنند بخوای پرتش رو باز کنه !!!! و توکل هم بکنی بخدا که وسط راه Routerها هم پورت رو نبندند) ولی از من قبول کن بعدا برات دردسر میشه حتی شاید در حدی که بعدا آرزو کنی اصلا کاش شروع نکرده بودیش ، ضمن اینکه با توجه به اینکه چند جای مختلف باید نصبش بکنی برای آپدیت کردن نسخه ها و رفع اشکال واقعا از کار و زندگیت میفتی ....
با همه این شرایط اگر میخوای کار رو انجام بدی حتی اگر حاضر نیستند هزینه کنند کار رو وب بیس انجام بده، حتما الان برات سختتر میشه ولی بعدا واست گیر نمیشه.

MNosouhi
دوشنبه 10 مهر 1385, 11:42 صبح
از همه دوستانی که کمک می کنن واقعا ممنون.
نظر دوستان در مورد استفاده از ActiveForm چیه؟
من مطلب زیر رو در سایت delphi.about دیدم.

ActiveForms are a powerful and capable technology that can enhance your Internet and Intranet development capabilities. They can provide client applications to users across any network. They can even use database controls to run a data-based application across the network.