ورود

نسخه کامل مشاهده نسخه کامل : آشنايي با Vb چقدر مي‌تواند در كار با Asp.net مفيد باشد؟



ShayaneZekr
26-02-2008, 14:24
سلام دوستان گرامي

من در اين گفتمان قصد دارم پرسشهاي مربوط به استفاده از قابليت‌هاي VB (و نه VB.NET) را ASP.NET مطرح كنم.

به عنوان مثال:

در ASP.NET رويدادهاي مختصرتري نسبت به VB براي آبجكت‌ها وجود دارد. به طور مثال در VB ما توانايي تعريف رويداد OnClick را براي Lable داشتيم و يا رويداد Hover موس را براي Image. در حالي كه به عنوان نمونه در ASP.Net رويداد Onclick را تنها براي آبجكتهايي كه ذاتاً قابليت كليك شدن را دارا مي‌باشند مي‌توان برگزيد. حال با توجه به اين موضوع، آيا راهي وجود دارد كه در ASP.NET بتوان از تمام رويدادهاي قابل استفاده در VB براي هر آبجكتي استفاده نمود؟

BabyBoy
26-02-2008, 21:32
سلام دوست عزیز
شک نکن که برای نوشتن ASP باید VB یا #C یا Java بلد باشی

اگه بخوام کوتاه جوابتو بدم :
60% :31:

ShayaneZekr
27-02-2008, 10:25
تشكر از اظهار نظر شما دوست عزيز،

البته سوال من قدري گسترده‌‌تر بود و پاسخ مشخص‌تري را مي‌طلبيد.
اگر به صورت مشخص پاسخ هر قسمت از سوال را بدهيد بيش از پيش سپاس‌گزار مي‌شوم.

يك سوال ديگر هم از شما دارم و آن اينكه، در برنامه‌نويسي با ASP.NET آيا با تسلط بر VB مي‌توان خود را بي‌نياز از #C و Java از هر جهت دانست؟ با در نظر گرفتن اينكه منظور من از VB، نسخه VB.NET نيست؟

Ultimator
27-02-2008, 13:44
سلام
نه ، همه ی قابلیت های VB در ASP.NET قابل استفاده نیست در هر حال ASP.NET زبان تحت وب است و میتونید از جاوا اسکریپت برای رویداد های بیشتر استفاده کنید

با تسلط بر VB از #C و جاوا از هر جهت بی نیازید ولی از vb.net نه ، اما همین تسلط بر vb به شما کمک میکنه تا vb.net رو یاد بگیرید خیلی سخت نیست در ضمن با وجود اینکه محیط visual studio تقریبا در بیشتر مواقع شما رو از کد نویسی html بی نیاز میکنه ولی همیشه هم اینطور نیست و کمی آشنایی با Html هم نیازه و همینطور JavaScript ( نه JAVA ) به طراح asp.net خیلی کمک میکنه مثلا همون رویداد mouse over با برنامه سمت سرور .... خوب نمیشه هر وقت کاربر موس رو روی یک دکمه ببره صبر کنه postback انجام بشه و صفحه دوباره load بشه برای همین از کد های سمت کلاینت مثل javascript یا vbscript استفاده میکنند

_H2_
27-02-2008, 17:50
سلام بر دوستان عزیز
با اجازه دوستان ما هم فضولی بکنیم ...
VB.Net نسخه جدید همان VB است، یعنی همان VB6 نیست ولی از نظر ورژنی یکی هستند.
مثلاً VB.Net 2008 از نظر ورژنی با نام VB9 شناخته میشود ولی C#.Net 2008 از نظر ورژنی C#.Net3 است.

در مورد ASP.Net هم، باید فقط از نسخه های Net استفاده کنید یعنی VB7,8,9 و ASP.Net اصلاً ربطی به VB6 ندارد.

برای کار در محیط ASP.Net باید به یکی از زبانهای دات نت مثل VB.Net یا C#.Net تسلط داشته باشید و این شما را در سمت سرور بی نیاز از هر زبان دیگری میکند، یعنی یکی از این دو کاملاً کافی است (به شرط تسلط)

ولی برنامه نویسی تحت وب دو جنبه جدا از زبانها و محیط های برنامه نویسی، در همه حال دو جنبه دارد.
کد سرور
کد کلاینت

کد سرور کدی است که در سرور اینترنتی سایت اجرا میشود و میتواند با C#.Net و VB.Net و Php و CGI و... باشد.

کد کلاینت کدی است که در مرور گر بازدید کننده اجرا میشود و عموماً و تقریباً در 100 در صد مواقع javascript است، گرچه VBScript و JScript و... هم وجود دارند.


ASP.Net تا حدود بسیار زیادی شما را از کد نویسی مستقیم کلاینت و javascript بی نیاز میکند و خودش در پس ضمینه این کد را به صورت خودکار تولید میکند، تا جایی این بی نیازی پیش رفته که میتوان سایتی با Ajax در ASP.Net طراحی کرد در حالی که یک خط javascript هم خودتان ننوشته باشید!!!!!!

ولی بهرحال در برخی موارد و برای تسلط کامل بر خروجی باید مستقیماً با javascript کد نویسی کرد.

پس هر زبان سروری (مثل VB.Net و حتی PHP و...) را که انتخاب کنید باز بلد بودن javascript کمکتان خواهد کرد و شاید لازم باشد.




در مورد رویداد ها هم هیچ مشکلی وجود ندارد، میتوان هر رویدادی را به سرور کشاند....
ولی این کار اصلاً خوب نیست....
چون هر بار رفتن صفحه به سرور که اصطلاحاً به ان submit میگویند بسیار سنگین میتواند باشد و نباید به خاطر هر کار کوچکی این کار را کرد.


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


ولی اگر بخواهید وقتی ماوس روی دکمه ای رفت، رنگ یا تصویرش عوض شود، این کار را باید به javascript محول کنید، چون نیازی به submit سرور ندارد!!! که موجب اشغال پهنای باند و قفل شدن صفحه تا رسیدن جواب شود.

کارهای ساده ای از این دست نیازی به سرور و کد VB.Net ندارند.

ShayaneZekr
01-03-2008, 12:38
دوستان عزيز ultimator و _H2_

از راهنمايي شما دو بزرگوار نهايت تشكر را دارم.
اطلاعاتتان بسيار راهگشا بود.

سپاسگزار

ShayaneZekr
25-06-2008, 15:22
ASP.Net تا حدود بسیار زیادی شما را از کد نویسی مستقیم کلاینت و javascript بی نیاز میکند و خودش در پس ضمینه این کد را به صورت خودکار تولید میکند، تا جایی این بی نیازی پیش رفته که میتوان سایتی با Ajax در ASP.Net طراحی کرد در حالی که یک خط javascript هم خودتان ننوشته باشید!!!!!!


لطفا تمام دستورات لازم براي دستيابي به رويداد مثلا mouseover بدون استفاده از javascript را قدم به قدم توضيح دهيد.

مثلا بفرماييد:

1. يك textbox روي صفحه قرار دهيد.
2. روي آن دو بار كليك كنيد.
3. ... .


هدف من از بكار گيري تكنيكهاي ASP.Net بجاي javascript اين هست كه نتيجه‌اي شبيه به نتايج javascript را بدست آورم و اصلا انتظار Postback براي رويدادي چون mouseover را مطلوب نمي‌دانم. ممنون ميشوم اگر به اين منظور نيز راهنمايي‌هايي بفرماييد.

من از javascript خوشم نمي‌آيد و خيلي علاقمند هستم كار را با استفاده از يك فن‌آوري به پايان برسانم. ASP.Net ساختار كل كار هست و اگر بشود تمام اهدافم در همان پياده گردد بسيار عاليست.

در نهايت اگر به هيچ وجه اين كار شدني نبود مايل هستم حتي‌المقدور از يكي از فن‌آوري‌هاي مايكروسافت كار را ادامه دهم.

_H2_
25-06-2008, 22:34
سلام

بدون js اصلاً امکان ندارد، حتی کشاندن این رویداد به سرور هم نیاز مند کد js برای submit کردن صفحه است.

تنها راهی که میتوان یک صفحه را بدون js به سرور پست کرد، فقط استفاده از دکمه مخصوص submit است که کدی نمیخواهد و به محض کلیک شدن صفحه به سرور پست میشود.



در کلیه حالات دیگر، زدن دکمه یک ComboBox، کلیک تصویرو...و... حداقل یک کد واسط js میخواهید تا صفحه را پست کند.



و تازه اگر میشد هم اصلاً برای mouseover اینکار منطقی نبود، چون یک submit مثل کلیک کردن دکمه "نقل قول" در اینجا میماند.



در سرور فقط کد asp.net تان اجرا نمیشود و js آنجا نداریم

در رایانه کلاینت(=درخواست کننده=کسی که با مرورگرش وارد سایت شما شده) فقط js را داریم، یعنی اگر js را از یک مرورگر وب بگیریم صفحه html تان مثل سنگ میشود! مثل Notepad ف اجرای هر فرمانی در رایانه کلاینت فقط با js امکان پذیر است.



پس js و asp.net مکمل هم هستند نه در مقابل هم،

(

البته وقتی میگویم asp.net منظورم به نماینگی از طرف تمام زبانهاب تحت سرور است، php و asp و...

و وقتی میگویم javascript باز منظورم به نماینگی از طرف تمام زبانهای تحت کلاینت است، VbScript و JScript و...

)



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

مثلاً فقط یک خط کد زیر را در یک فایل html یا aspx بنویسید تا کد js مربوط به mouseover اجرا شود، میبینید که چندان هم سخت نیست.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


حتی اگر از امکانات داخلی Ajax در Asp.Net هم استفاده کنید، باز Ajax به شدت وابسته به زبانهای کلاینت است، گرچه شاید به ظاهر شما کد کلاینتی ننویسید.

البته جدیداً مایکروسافت فن آوری Silverlight را هم ارائه داده که به نوعی کدهای سرور و کلاینت را یکپارچه تر خواهد کرد، و در اصل در مقابل flash است، ولی من زیاد خوشم نمی آید و اطلاعات خوبی در این مورد ندارم.

ShayaneZekr
26-06-2008, 09:28
بسيار از راهنماييتان ممنون

من با استفاده از كد زير نتيجه‌اي را عيناً مشابه Mouseover جاوا بدست مي‌آورم



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Image1.Attributes("onmouseover") = "this.height='200'"
End Sub


آيا كدهايي مشابه اين براي كارهاي ديگر وجود دارد كه بتوان جايگزين كدهاي جاوا نمود؟

هدف من از اين تلاشها اينست كه بتوانم تقريبا رويدادها را بسادگي بكارگيري آنها در vb.net (كه براحتي آنها را از ليست انتخاب ميكرديم) در اختيار داشته باشم. حتي اگر بجاي انتخاب آنها از ليست لازم باشد كمي كد vb براي آن نوشت.

_H2_
26-06-2008, 11:08
سلام
پس اینکار را بدون جاوا انجام داده اید؟؟؟؟؟؟!!!!
خیلی جالب و هیجان انگیز است! یک عمل دینامیک در کلاینت بدون کد کلاینت!!
:18::24::32::blink::blink::3::3:

هنوز جریانات را درست متوجه نشده اید.!!!
نه من واقعاً میخواهم بدانم، شما فکر میکنید 'this.height='200 که نوشته اید کد VB است؟؟؟؟؟ یا شبیه VB است؟؟؟ یا از نسل .... :7:

این که کد js است! فقط شما runtime تولیدش کردید، خسته نباشید من را بپذیرید. :31::10:
حالا کد زیر را تست کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میبینید همان نتیجه ای را دارد که کدی که من در پست قبلیم نوشته بودم، داشت.

شما فقط لقمه را چرخاندید....
کدهای runtime این چنینی در جایی خوب است که کد js همواره ثابت نیست و باید با توجه به شرایط خاص و به تصمیم کد سرور، در طرف کلاینت کد js خاصی اجرا شود و گرنه با تایپی مستقیم کد در بدنه html تفاوتی ندارد.

مجدداً تاکید میکنم،
هیچ هیچ هیچ عملی در جهت پردازش درخواستها در سرور بدون زبانهای سمت سرور امکان ندارد.
و
هیچ هیچ هیچ عملی در مرور گر ملاقات کننده سایت بدون زبانهای کلاینتی-اسکریپتی امکان ندارد.

حتی اگر در حد تغییر ارتفاع یک شی باشد یا تغییر رنگ دکمه و....
موفق و دات نتی باشید!

_H2_
26-06-2008, 11:14
سلام
البته اگر خیلی طرفدار VB هستید، میتوانید به جای javascript از vbscript در کلاینت استفاده کنید.
که سینتکس آشناتری برایتان خواهد داشت، مثلا به جای دستور alert که نمونه کدش را در js دیدید، در vbscript دستور معادلش همان MsgBox معروف است.

ShayaneZekr
26-06-2008, 12:07
سلام
البته اگر خیلی طرفدار VB هستید، میتوانید به جای javascript از vbscript در کلاینت استفاده کنید.
که سینتکس آشناتری برایتان خواهد داشت، مثلا به جای دستور alert که نمونه کدش را در js دیدید، در vbscript دستور معادلش همان MsgBox معروف است.

با سپاس مجدد

vbscript محدوديتي از جهت پشتيباني مرورگرهاي مختلف ندارد؟

و اينكه آيا بطور كل مي‌تواند جاي javascript را پر كند، بطوري كه نياز نباشد هرگز به سراغ javascript رفت؟

ShayaneZekr
26-06-2008, 12:22
كنجكاوي من از جايي بيشتر شد كه شما فرموديد:

ASP.Net تا حدود بسیار زیادی شما را از کد نویسی مستقیم کلاینت و javascript بی نیاز میکند و خودش در پس ضمینه این کد را به صورت خودکار تولید میکند،

و همواره در اين تصور بودم كه اگر ما لازم نيست كدنويسي مستقيم كلايت را به عهده بگيريم و ASP.net اين كار را خودش انجام ميدهد منظور اينست كه ما كار خودمان را ميكنيم (هركاري غير از كدنويسي كلايت) و تبديل آنچه كه ما به زبان غير كلاينتي نوشته‌ايم را به زبان قابل فهم براي مرور گر را ASP.Net عهده دار ميشود.

و همينطور اينكه شك من تقويت شد وقتي فرموديد:

تا جایی این بی نیازی پیش رفته که میتوان سایتی با Ajax در ASP.Net طراحی کرد در حالی که یک خط javascript هم خودتان ننوشته باشید!!!!!!

و گفتم كه به احتمال ASP.Net تمام مايحتاج لازم براي بينيازي از جاوا را در خود دارد.

كه گويا اشتباه متوجه شده بودم.

_H2_
26-06-2008, 16:28
سلام


vbscript محدوديتي از جهت پشتيباني مرورگرهاي مختلف ندارد؟

اطلاعات دقیقی در این مورد ندارم و نمی خواهم الکی جواب دهم، ولی گمانم مرور گرهای معروف جاری ساپورتش کنند.



و اينكه آيا بطور كل مي‌تواند جاي javascript را پر كند، بطوري كه نياز نباشد هرگز به سراغ javascript رفت؟

باید اعتراف کنم که به اندازه js امکانات ندارد و در آن حد قوی نیست، ولی کارهای مرسوم و معمول را به راحتی انجام میدهد و مشکل خاصی در اجرا نداردف مخصوصاً که در اغلب اوقات در asp.net فقط در حد یک تغییر آیکون و ابعاد و... نیاز به کدهای کلاینت داریم.




ASP.Net تا حدود بسیار زیادی شما را از کد نویسی مستقیم کلاینت و javascript بی نیاز میکند و خودش در پس ضمینه این کد را به صورت خودکار تولید میکند،

هنوز هم میگویم.
یعنی در اغلب اوقات خودش کد js را تولید میکند نه اینکه کد js در کار نباشد.
میدانید در یک زبانی غیر از asp.net ، چگونه باید کنترلرهای LinkButton یا Validation یا Menu یا TreeView و... را پیاده ساری کنید؟؟؟ برخی از اینها خروارها کد js دارند، در حالی که شما با یک حرکت ماوس انها را گرفته و فقط روی صفحه طراحی خود در VS رها میکنید!!!
آن وقت سر یک خط کد js برای یک تغییر آیکون یا ... که شاید خیلی هم ساده باشد، به نوعی شاید ناراحت نشوید و با خود بگویید نمیشد یه طوری .... !!!! :31:

کل فایلهای js که برای مدیریت Ajax در asp.net استفاده میشوند و نیاز شما را مرتفع میکنند به حدود 500K میرسند، میدانید یعنی چند خط کد؟! (البته همه شان همیشه لود نمیشوند و بسته به شرایط و کنترلر و تنظیمات کدهای مربوطه استفده میشوند.) اینها را شما نمیبینید؟؟

در asp.net میتوانید یک برنامه وبی معمولی را بعضاً حتی بدون یک خط کد نویسی سمت سرور و یا کلاینت ، تحت ajax اش کرد.
انجام این کار برای زبانهای دیگر سروری به منزله شروع از صفر است و نیاز به کدهای زیاد سرور و کلاینتی برای مدیریت ajax دارد.

برای اعمال ریز هم میتوان از همان ajax استفاده کرد، ولی کسی پشه را با آر.پی.جی نمیکشد!
در این موارد هم میتوان از امکانات شی گرای دات نت استفاده کرد، یعنی مثلاً شما در نقاط مختلف سایت نیاز به یک دکمه گرافیکی چند حالته دارید...
میتوانید دکمه فوق را یکبار تولید کنید که نهایتاً کد js اندکی در حد یک یا دو خط میخواهد و با یک کامپایل، کنترلر جدید به Toolbar تان اضافه میشود و میتوانید از آن مثل سایر کنترلرهای ذاتی دات نت استفاده کنید، و هر کجا همچین دکمه ای نیاز داشتید دیگر کدی ننویسید و از یک مرتبه، دسترنج گذشته تان بارها استفاده کنید.

مثلاً مثال زیر را ببینید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثال فوق دو سری شامل یک جدول با قابلیت ویرایش-حذف-اضافه کردن اشت (به دو زبان VB.Net و C#.Net)
اول نمونه بدون ajax و دومی با ajax است که هیچ refresh در دومی نیست و برای هیچیک مطلقاً کد js ای تایپ نشده!!!!!!!!!!! و نمونه ajax اش با نمونه عادی هیچ فرقی در کدهای سرور هم ندارد!!!!!!

همین مثال را از یک asp یا php کار بخواهید تا برایتان انجام دهد، یکبار بدون ajax و یک بار با ajax تا تفاوت را احساس کنید.

اصلاً از ajax هم که بگذریم همان نمونه معمولی اش در زبانهای دیگر کلی کد نویسی میخواهد چه رسد به آنکه با ajax کار کند.


ای نمونه گرچه، آموزشی است ولی میتواند یک سایت واقعی باشد که طراح کد js برای آن تایپ نکرده

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

ولی فراموش نکنید، پشه را با آر.پی.جی نمیکشند!

موفق باشید.

iman_egr
29-06-2008, 14:30
asp.net is multilanguage and you can write it with any language that .net framework support it