PDA

View Full Version : تبدیل برنامه از تحت lan به تحت اینترنت



ali_abbasi22145
شنبه 30 تیر 1386, 09:46 صبح
سلام به اساتید

من یک برنامه با دلفی 7 و SQL Server 2000 نوشتم که تحت lan خیلی خوب کار می کند و تستهای خودش را هم داده است.
حال می خواهم کاربران تحت اینترنت برنامه من را باز کنند و با آن کار کنند یا حداقل یک برنامه کوچک شده بنویسم که با آن کاربران داده وارد کنند یا ویرایش کنند حال چه کامپوننت و راه حل ساده در این زمینه است؟

vcldeveloper
شنبه 30 تیر 1386, 14:10 عصر
با توضیحات کمی که دادید، لازم نیست کار خاصی انجام بدید. البته خوبه مسائلی مثل سرعت و امنیت را بهش بیشتر دقت کنید، چون هم سرعت اتصال کاربران در شبکه اینترنت کمتر از یک Lan هست، و هم مخاطرات امنیتی اینترنت بیشتره. البته ممکنه با توجه به نوع برنامه تون ملاحظات دیگه ایی هم لازم باشه.

ali_abbasi22145
شنبه 30 تیر 1386, 14:57 عصر
با توضیحات کمی که دادید، لازم نیست کار خاصی انجام بدید. البته خوبه مسائلی مثل سرعت و امنیت را بهش بیشتر دقت کنید، چون هم سرعت اتصال کاربران در شبکه اینترنت کمتر از یک Lan هست، و هم مخاطرات امنیتی اینترنت بیشتره. البته ممکنه با توجه به نوع برنامه تون ملاحظات دیگه ایی هم لازم باشه.

سلام
آخه استاد عزیز چیزی که دنبالشم گفتم ، چه توضیح دیگری می خواهید که من بیان کنم؟
متوجه نمی شوم که لازم نیست کار خاصی انجام بدهم یعنی اینقدر آسان است!؟
فعلا بعث امنیت و سرعت خیلی مورد نظرم نیست البته یکسری کارهای امنیتی تحت lan در آن لحاظ شده است.
لطفا شما بیشتر راهنمایم کنید.

vcldeveloper
شنبه 30 تیر 1386, 16:19 عصر
آخه من چی رو راهنمایی کنم؟! اگه میخواید بدونید که برنامه ایی که از SQL Server استفاده می کنه و در LAN تست شده در اینترنت هم کار میکنه: بله کار میکنه SQL Server را روی یه سرور نصب کنید و آدرسش رو به برنامه بدید، مثل سابق کار میکنه، البته با سرعت پایین تر.

ali_abbasi22145
سه شنبه 02 مرداد 1386, 09:03 صبح
سلام
آدرس را کجا در برنامه بدهم؟

vcldeveloper
چهارشنبه 03 مرداد 1386, 03:51 صبح
آدرس را کجا در برنامه بدهم؟
در ConnectionString ایی که برای ارتباط با SQL Server استفاده می کنید.

علامت سوال
چهارشنبه 03 مرداد 1386, 19:21 عصر
آخه من چی رو راهنمایی کنم؟! اگه میخواید بدونید که برنامه ایی که از SQL Server استفاده می کنه و در LAN تست شده در اینترنت هم کار میکنه: بله کار میکنه SQL Server را روی یه سرور نصب کنید و آدرسش رو به برنامه بدید، مثل سابق کار میکنه، البته با سرعت پایین تر.
آقای کشاورز تفاوت سرعت در معماری سه لایه و این روش که دولایه هست در برنامه های تحت وب چیه؟

vcldeveloper
پنج شنبه 04 مرداد 1386, 05:55 صبح
آقای کشاورز تفاوت سرعت در معماری سه لایه و این روش که دولایه هست در برنامه های تحت وب چیه؟
در Web base شما بصورت سه لایه کار می کنید: Client <-> Web App <-> Database Server
اما بطور کلی نمی تونم درباره تفاوت سرعت Client\Server با 3-tier نظر خاصی بدم، چون به عوامل مختلفی بستگی داره. در ساده ترین حالت ممکن می تونید بگید که در Client\Server داده ها در یک مرحله منتقل میشند، و در 3-tier در دو مرحله.
باید با توجه به نوع پروژه تصمیم گرفت که از کدوم معماری استفاده بشه. 3-tier برای یک برنامه که نیاز خاصی به 3-tier نداره، یک نوع اضافه بار و پیچیدگی میاره، از طرفی، بعضی از برنامه ها هم باید 3-tier نوشته بشند و Client\Server براشون جواب نمیده.

علامت سوال
پنج شنبه 04 مرداد 1386, 10:12 صبح
ممنون از جوابتون
راستش رو بخاید من قبلا شنیدم که در روش دولایه خود Data بین لایه ها جابجا میشه اما در معماری های چند لایه بخصوص DCOM برای افزایش سرعت انتقال به شکل دیگه ای انجام میشه این در حالیه که جاوا پا رو فراتر گذاشته و از تکنولوژی جدید تری در این رابطه استفاده کرده.البته .NET هم تکنولوژی هایی رو ارائه داده.
من به این شنیده ها اطمینان چندانی ندارم و میخاستم مطمئن بشم.
باز هم تشکر

mehdi.mousavi
پنج شنبه 04 مرداد 1386, 10:32 صبح
سلام به اساتید

من یک برنامه با دلفی 7 و SQL Server 2000 نوشتم که تحت lan خیلی خوب کار می کند و تستهای خودش را هم داده است.
حال می خواهم کاربران تحت اینترنت برنامه من را باز کنند و با آن کار کنند یا حداقل یک برنامه کوچک شده بنویسم که با آن کاربران داده وارد کنند یا ویرایش کنند حال چه کامپوننت و راه حل ساده در این زمینه است؟

سلام.
گفتن جمله "برنامه ام در LAN کار میکنه"، دقیق نیست. بهتر این بود که می گفتید "برنامه ام در یه LAN، (مثلا) TCP/IP کار میکنه". اگر پروتکل LAN شما TCP/IP هستش، اونوقت می تونید از برنامه اتون در سطح اینترنت هم استفاده کنید، چون در واقع اینترانت شما هم روی TCP/IP سواره. تنها تفاوت در IP Address هایی هستش که به Server و Client ها تخصیص داده شده. ما دو جور IP Address داریم: private و public.

Private IP Address ها، آدرسهایی هستن که در سطح LAN شما معنا دارن و بصورت عمومی در اختیار همگان نیستن.

این آدرسها به چهار سطح زیر تقسیم میشن:

10.0.0.0 - 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255

و 169.254/16 که طبق استانداردها برای محیطهایی در نظر گرفته شدن که به DHCP Sever دسترسی ندارن. در نتیجه، الان اگه شما دونه دونه کامپیوترهاتون رو در شبکه نگاه کنید، یکی از 4 آدرس زیر رو بخودشون اختصاص دادن. اینها همگی آدرسهایی هستن، که کسی از طریق INTERNET بهشون دسترسی نداره. بقیه آدرسها، Public IP Address هستن. یعنی در اختیار عموم قرار دارن و برای به اشتراک گذاشتن مورد استفاده قرار میگیرن. مثلا 64.4.32.7 آدرس hotmail هستش.

برنامه شما هم در صورتیکه روی پروتکل TCP/IP کار میکنه، نیاز به تغییر آنچنانی نداره تا بشه ازون در سطح internet هم استفاده کرد. برای اینکار، ابتدا باید یه public address داشته باشید، اونهم از نوع static که تغییر نکنه. بعد باید پورتهای مناسب رو برای SQL Server و دیگر ابزارهایی که احیانا استفاده کردین بازکنید، تا دسترسی فراهم بشه. البته اینها در حد تئوری هستش، چون وقتی به عمل میرسه، اینقدر مشکلات امنیتی برای نرم افزارتون ایجاد میشه که از خیرش میگذرین.

بعنوان یه مثال خیلی خیلی جزیی، وقتی SQL Server رو روی سرور قرار میدین و اونو رو اینترنت میذارین، باید حواستون باشه که password مربوط به کاربر sa رو حتما set کنید. چون معمولا دیدم که افراد اینکارو موقع نصب انجام نمیدن و ...

اما از دید برنامه نویسی... وقتی شما ConnectionString ای درست میکنید و نام کامپیوترتون رو بعنوان Server در اون قرار میدین، شما به برنامه میگید که به کدوم IP Address باید برای دستیابی به SQL Server وصل بشه. جای نام کامپیوتر، میتونید از IP کامپیوترتون هم استفاده کنید.

مثلا جای

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=myComputer

میتونم بزنم

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=192.168.0.1

یعنی دارم Private IP Address سیستمم رو میذارم. حالا تو اون حالت که شما SQL Server رو روی اینترنت قرار میدین، باید از IP اون کامپیوتر استفاده کنید. مثلا اگر SQL Server روی hotmail نصب باشه، از ConnectionString زیر میتونید استفاده کنید تا بهش متصل بشید:

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;Data Source=64.4.32.7

بقیه کارها در سطح ODBC Driver ها، OLEDB Data Provider ها و ... انجام میشه و شما هیچ تفاوتی بین اجرای برنامه روی LAN TCP/IP و Internet نمی بینید.

vcldeveloper
جمعه 05 مرداد 1386, 06:47 صبح
اما در معماری های چند لایه بخصوص DCOM برای افزایش سرعت انتقال به شکل دیگه ای انجام میشه این در حالیه که جاوا پا رو فراتر گذاشته و از تکنولوژی جدید تری در این رابطه استفاده کرده.البته .NET هم تکنولوژی هایی رو ارائه داده.
DCOM داده ها را بصورت باینری انتقال میده، سایر روش هایی هم که در DataSnap دلفی پشتیبانی میشند، داده ها را بصورت باینری منتقل می کنند، به جز SOAP Connection (برای Web Services استفاده میشه) که داده ها را بصورت XML منتقل میکنه.
در دات نت هم تا جایی که اطلاع دارم، تاکید بر روی Web Services هست.

علامت سوال
جمعه 05 مرداد 1386, 09:53 صبح
ممنون از جواب عالی شما
با این حساب Web Service باید بیشترین سرعت رو از بین بقیه ابزارهای DataSnap داشته باشه؟

vcldeveloper
جمعه 05 مرداد 1386, 17:23 عصر
با این حساب Web Service باید بیشترین سرعت رو از بین بقیه ابزارهای DataSnap داشته باشه؟
خیر! همونطور که گفتم، Web Service از XML برای انتقال اطلاعات استفاده میکنه، یعنی داده ها بصورت Text منتقل میشند، پس حجم بیشتری به نسبت داده های باینری اشغال می کنند، پردازش آنها هم زمانبر تر هست.
البته Web Service مزیت های خاص خودش رو داره که بحثش مربوط به این تاپیک نمیشه.