نقل قول نوشته شده توسط ali_abbasi22145 مشاهده تاپیک
سلام به اساتید

من یک برنامه با دلفی 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 نمی بینید.