یه برنامه ای میخواستم بنویسم که یکی از دوستام گفت اون برنامه درصورتی بدرد میخوره که رو وب هم کار کنه. منم برای اینکه ببینم میتونم همچی کاری بکنم یا نه برای آزمایش یه وب سرویس نوشتم. این وب سرویس خیلی خیلی ساده است و فقط یک تابع دارد.
تابع calculate که 2 پارامتر ورودی (عبارت ریاضی و لیست متغیرها) میگیرد و یک ساختمان داده شامل جواب عبارت ریاضی (ans) و شماره خطای احتمالی(er) برمیگرداند.
همه سورس کد وب سرویس (بجر 4 تا کلاسش که از vb6 تبدیل کردم!) در زیر آمده :
Structure InfixRetVal
Dim ans As Double
Dim er As Int16
End Structure
< WebMethod() > Public Function Calculate(ByVal infix As String, ByVal varlist As String) As InfixRetVal
Dim tmp As New CInFix()
tmp.InFix = infix
tmp.VariableList = varlist
Calculate.ans = tmp.Calculate
Calculate.er = tmp.GetLastError
End Function
اگر مایلید بدانید که اون چهارتا کلاس چجوری کار میکنند باید یه سری به
اینجا بزنید و توضیحات مختصر آن بخش را بخوانید.
برای استفاده کردن از این وب سرویس در vs.net خود به منوی project\add web refrence... بروید و این آدرس را در آن وارد کنید http://www.ehsani.ir/calc/calculator.asmx و پس از اینکه وب سرویس را پیدا کرد add refrence را بزنید.
حالا برای اینکه از آن استفاده کنید میتوانید کد زیر را بنویسید :
Dim c As New org.ehsani.www.CalculatorService()
Dim ret As org.ehsani.www.InfixRetVal
ret = c.Calculate(TextBox1.Text, TextBox2.Text)
TextBox3.Text = ret.ans
نمونه کار برنامه را میتوانید در
اینجا ببینید.
کد برنامه را میتوانید از
اینجا بگیرید.
کد مثال برنامه را میتوانید از
اینجا بگیرید.
حاشیه : تو این برنامه میتونید از sin ,cos ,tan ,atn ,ln ، فاکتوریل(!) و توان (^) استفاده کنید و هرتعداد متغیر که دوست داشته باشید تعریف کنید و هر اسمی که بخواهید به آنها بدهید مثلا jooti یا هر چیز دیگه! اصلا ناراحت غلط بودن عبارت ریاضی نباشید چون برنامه خیلی سریع مچتون رو میگیره! پرانتز هم به تعداد نا متناهی و تو در تو مجاز است.
جوتی