PDA

View Full Version : تفاوت WebService و Multitier



accpascal
سه شنبه 08 بهمن 1387, 20:45 عصر
من یک پروژه بانک اطلاعاتی دارم که برای نوشتن آن حدود یک ماه است که در استفاده از webService و یا Socketserver مانده ام
تنها نکته ای که ذهن مرا مشغول کرده است نحوه ذخیره و یا اصلاح داده هاست
من خودم شخصا Webservice را بخاطر نحوه ذخیره داده ها (ارسال پارامتر به سرور و ایجاد دستورات Sql در سرور ) ترجیح می دهم
ممکن است از دوستان خواهش کنم نظرات خود را بیان کنند تا ضمن استفاده اطلاعات خود را نیز کاملتر کنیم
قابل توجه اینکه من جستجوی زیادی در post ها انجام دادم ولی در مورد webservice البته در دلفی چیز زیادی ندیدم

vcldeveloper
چهارشنبه 09 بهمن 1387, 00:29 صبح
من خودم شخصا Webservice را بخاطر نحوه ذخیره داده ها (ارسال پارامتر به سرور و ایجاد دستورات Sql در سرور ) ترجیح می دهم
این موردی که بهش اشاره کردید، ویژگی خاصی برای WebService محسوب نمیشه، و در واقع همین قابلیت برای هر راهکار 3-tier دیگه هم وجود داره.

Multie-tier یک مفهوم کلی هست که میشه آن را با راهکارهای مختلفی پیاده سازی کرد، یکی از این راهکارها WebService هست. مزیت WebService نسبت به برخی از سایر راهکارهای پیاده سازی Multi-tier اینه که اولا WebService از HTTP برای انتقال داده بین لایه ها استفاده میکنه، درنتیجه احتیاجی به تنظیمات خاص برای فایروال و غیره نداره، و هر سیستمی که بتونه به یک صفحه وب دسترسی داشته باشه، میتونه به وب سرویس هم دسترسی داشته باشه. مزیت دیگه اش اینه که وابسته به پلت فرم خاص، یا زبان خاصی نیست، و سرویس های موجود در یک سرور، روی هر پلت فرمی که باشند، و با هر زبانی که نوشته شده باشند، می تونند توسط کلاینت هایی روی هر پلت فرم که با هر زبانی نوشته شدند، استفاده بشند. عمده مشکل وب سرویس هم این هست که بخاطر استفاده از XML برای انتقال داده، حجم بیشتری از داده را منتقل میکنه. البته چون XML بصورت داده متنی منتقل میشه، از نظر امنیت داده هم دچار مشکلاتی هست که سعی شده با ارائه راهکارهایی این دو محدودیت کمرنگ تر بشند.


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

accpascal
چهارشنبه 09 بهمن 1387, 07:36 صبح
تا آنجا که من فهمیدم استفاده از دستورات اس کیو ال در 3-tier نقش لایه میانی را کمرنگ می کند آیا این صحت دارد ؟
و اگر دستورات اس کیو ال را در provider ها بنویسیم ان وقت برای هر جدول از بانک اطلاعاتی نباید یک provider تعریف شود؟

vcldeveloper
چهارشنبه 09 بهمن 1387, 12:15 عصر
تا آنجا که من فهمیدم استفاده از دستورات اس کیو ال در 3-tier نقش لایه میانی را کمرنگ می کند آیا این صحت دارد ؟
استفاده از دستورات SQL در کجا؟ در کلاینت؟ اگر قرار باشه کلاینت دستور SQL بفرسته، بهتر هست معماری نرم افزار خودتان را یک بار چک کنید، شاید Client\Server برای شما کفایت بکند. در یک معماری سه لایه، کلاینت دسترسی مستقیم به بانک اطلاعاتی نداره، و همه درخواست هایش از فیلتر Application Server یا همون لایه میانی عبور میکنه.


اگر دستورات اس کیو ال را در provider ها بنویسیم ان وقت برای هر جدول از بانک اطلاعاتی نباید یک provider تعریف شود؟
شما برای هر دیتاست یک Provider درنظر می گیرید، نه هر جدول. یک دیتاست ممکن هست اطلاعات چند جدول را کوئری کند. برای کلاینت مهم نیست داده ها از کجا میان، یا چطور تولید میشند. کلاینت فقط درخواست خودش را به Application Server میده، و داده مورد نظر خودش را درخواست میکنه. حالا اینکه Application Server اون داده را خودش میسازه، یا از یک بانک اطلاعاتی میخونه، یا نتایج چند بانک اطلاعاتی را با هم ترکیب میکنه، یا داده بانک اطلاعاتی را قبل از رسیدن به کلاینت تغییر میده؛ ربطی به کلاینت نداره. اصلا کلاینت نمیدونه داده درخواستی اش چطور تولید شده.

accpascal
چهارشنبه 09 بهمن 1387, 14:31 عصر
به همان ترتیب که جنابعالی فرمودید در webservice من می توانم درخواستهای کلاینت را با یک provider در application server انجام دهم و در نتیجه کد نویسی خیلی سریعتر انجام می گیرد
سوال دیگری هم داشتم اگر دستورات select را توسط کلاینت و دستورات (insert ,update,delete) را در سرور انجام دهد شما در این مورد چه نظری دارید؟

vcldeveloper
چهارشنبه 09 بهمن 1387, 16:40 عصر
به همان ترتیب که جنابعالی فرمودید در webservice من می توانم درخواستهای کلاینت را با یک provider در application server انجام دهم و در نتیجه کد نویسی خیلی سریعتر انجام می گیرد
دوست عزیز، اگر به پست دوم تاپیک دقت کنید، توضیح دادم که WebService فقط یک پیاده سازی از مفهوم Multi-tier هست؛ یعنی اینطور نیست که یک چیز داشته باشیم با نام Multi-tier که در مقابل وب سرویس مطرح باشد! Multi-tier یک نوع معماری نرم افزار هست، حالا یکی برای ارتباط با لایه های مختلف از WebService استفاده میکنه، یکی از DCOM استفاده میکنه، یکی از چیز دیگه. مفهوم هنوز همون مفهوم هست، فقط پیاده سازی فرق کرده. پس اینکه گفتم در معماری چند لایه کلاینت به بانک دسترسی نداره، یعنی شما چه از WebService استفاده بکنید، چه از هر چیز دیگه، این قاعده برقرار هست. این قاعده هم به این معنی نیست که نمی تونید این کار را بکنید، می تونید، ولی با معماری چند لایه در تضاد هست. برای همین به شما گفتم که اگر قرار هست کلاینت شما خودش دستور SQL تولید کند، بهتر هست که طرح خودتان را بازبینی کنید، شاید نیاز به معماری چند لایه نداشته باشید، و همان Client\Server برای شما کفایت کند.


سوال دیگری هم داشتم اگر دستورات select را توسط کلاینت و دستورات (insert ,update,delete) را در سرور انجام دهد شما در این مورد چه نظری دارید؟
همون نظری که در پست شماره دو تاپیک، و پاراگراف قبلی همین پست مطرح کردم.

accpascal
پنج شنبه 10 بهمن 1387, 10:41 صبح
بعنوان آخرین سوال
آیا اگردر سمت سرور خاصیت allow commandtext مربوط به provider را True کنیم و در سمت کلاینت با استفاده از clientdatase و استفاده از دستور select اطلاعات جدولی را بازیابی کنیم در این صورت آیا کلاینت از طریق سرور به جدول دسترسی پیدا می کند و یا مستقیما این کار انجام می شود

vcldeveloper
پنج شنبه 10 بهمن 1387, 22:20 عصر
از طریق سرور خواهد بود، ولی همینکه کلاینت بداند سرور چه ساختاری دارد، و چه فیلدهایی دارد، خودش با معماری Multi-tier تضاد دارد. مثلا شما یا مرورگر اینترنت شما الان که از ای میل یاهو یا جی میل استفاده می کنید، اطلاع دارید که مثلا نرم افزار مربوطه به چند بانک اطلاعاتی وصل میشه، یا بانکش از چه نوعی هست، یا چه جداول و فیلدهایی در آن قرار داره؟

accpascal
پنج شنبه 10 بهمن 1387, 23:13 عصر
ببخشید قراربود سوالاتم تمام شود ولی حیفم آمد از نظرات شما که در طبق اخلاص قراردارد استفاده نکنم
سوالم این است که سرعت در انتقال داده هاو یا ذخیره و اصلاح داده ها در کدام معماری بیشتر است
multitier یا client/server

vcldeveloper
جمعه 11 بهمن 1387, 03:21 صبح
سرعت در انتقال داده هاو یا ذخیره و اصلاح داده ها در کدام معماری بیشتر است
multitier یا client/server

این مورد بستگی به پارامترهای مختلفی داره و نمیشه همینطوری گفت؛ مثلا بستگی داره که سرعت اتصال بین هر لایه چقدر باشه، یا هر لایه چه مقدار پردازش روی داده ها انجام بده، و غیره. حالا اگر فرض بگیریم سرعت اتصال در هر دو مورد یکسان باشه، و حجم پردازش ها هم یکسان باشه، اون وقت Client\Server سریعتر هست، چون فقط از دو لایه تشکیل شده.