پیاده سازی وب سرویس در Asp.Net

در این مقاله قصد داریم به آموزشی درباره پیاده سازی وب سرویس توسط Asp.Net و اجرای آن در ویندوز فرم بپردازیم که امکان اجرا در هر پلتفرم و چهارچوب برنامه نویسی را دارد .

پیاده سازی وب سرویس در Asp.Net

وب سرویس چیست؟

وب سرویس ها مانند یک در هستند که کلید اصلی آن، در دست شماست و شما میتوانید از این کلید برای رسیدن به اهداف مورد نیاز خود استفاده کنید . وب سرویس ها از طریق پروتکل های استانداردی مانند Http به انتقال و مبادله داده  با سایر برنامه های کاربردی می پردازند حال دراین مقاله قصد داریم یک وب سرویس برای ثبت نام و  ورود به برنامه ایجاد کنیم  که  اطلاعات وارد شده در وب سرویس را به صورت داده  در بانک اطلاعاتی  ذخیره کنیم وب سرویس ها را میتوان  با هر پلتفرم دیگر (با هر زبان و تلکنولوژی ) پیاده سازی  و اجرا کنید وحتی شما میتوانید یک وب سرویس با Asp.Net ایجاد کرده و آن را با نرم افزار  اندروید پیاده سازی کنید

حال در این قسمت از آموزش به ایجاد یک وب سرویس با Asp.Net   میپردازیم

مرحله 1:

ابتدا ویژوال استادیو را باز کرده ویک برنامه از نوع  Asp.Net Empty Web Application  ایجاد میکنیم.

مرحله 2: در این مرحله روی Solution Explorer  راست کلیک کرده و در  Add>NewItem>Web Service  را انتخاب کنید.


مرحله 3:حال در این صفحه شروع به کد نویسی میکنیم و همان طور که مشا هده  میکنید در این صفحه 3 متد برای پیاده سازی وب سرویس خود ایجاد کردیم که یکی برای ثبت نام و دیگری  برای ورود و سومین متد هم، به دیگر اطلاعات  عمومی کاربر مانند سن و آدرس ...اختصاص دادیم.


public class Registration : System.Web.Services.WebService
    {
        static string connectionString = @"Server=.;Database=serverDatabase;user id=sa; password=123";
        SqlConnection connection = new SqlConnection(connectionString);

        [WebMethod]
        public String RegistrationFunction(string Username, string Password, string ConfirmPassword, string ContactNumber, string IMEINumber)
        {
            //string connectionString = @"Server=XISAN-PC\SQLEXPRESS;Database=serverDatabase;user id=sa; password=moveon";
            //SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                string usrname_count = "select count(*) from registrationTable where userName = '" + Username + "'";

                connection.Open();
                SqlCommand cmd1 = new SqlCommand(usrname_count, connection);
                int i = int.Parse(cmd1.ExecuteScalar().ToString());
                if (i == 1)
                {
                    return "کاربری با این نام وجود دارد";
                }
                else
                {
                    string str = "insert into registrationTable values('" + Username + "','" + Password + "','" + ConfirmPassword + "','" + ContactNumber + "','" + IMEINumber + "','" + "0" + "','" + "0" + "')";
                    SqlCommand cmd = new SqlCommand(str, connection);
                    cmd.ExecuteNonQuery();
                    return "ثبت نام انجام شد";
                }
            }
            catch (Exception exp)
            {
                return exp.ToString();
            }
            finally
            {
                connection.Close();
            }
            return "ajaira";
        }
        [WebMethod]
        public string LoginFunction(string Username, string Password)
        {
            //string connectionString = @"Server=XISAN-PC\SQLEXPRESS;Database=serverDatabase;user id=sa; password=moveon";
            //SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                string count = "select count(*) from registrationTable where userName = '" + Username + "'";
                SqlCommand cmd = new SqlCommand(count, connection);
                int i = int.Parse(cmd.ExecuteScalar().ToString());
                if (i == 1)
                {
                    string search_pass = "select password from registrationTable where username = '" + Username + "'";
                    SqlCommand cmd1 = new SqlCommand(search_pass, connection);
                    string password = cmd1.ExecuteScalar().ToString().Replace(" ", "");
                    if (password == Password)
                    {
                        return "خوش آمدید";
                    }
                    else
                    {
                        return "کلمه عبورنادرست است";
                    }
                }
                else
                {
                    return "نام کاربری با این نام وجود ندارد";
                }
            }
            catch (Exception exp)
            {
                return exp.ToString();
            }
            finally
            {
                connection.Close();
            }
        }

        [WebMethod]
        public string LangitudeAndLattitude(string Username, string Langitude, string Lattitude)
        {
            try
            {
                connection.Open();

                string str1 = "update registrationTable set latitude ='" + Lattitude + "' where userName = '" + Username + "'";
                SqlCommand cmd1 = new SqlCommand(str1, connection);
                cmd1.ExecuteNonQuery();


                string str = "update registrationTable set longitude ='" + Langitude + "' where userName = '" + Username + "'";
                SqlCommand cmd = new SqlCommand(str, connection);
                cmd.ExecuteNonQuery();


            }
            catch (Exception exp)
            {
                return exp.ToString();
            }
            finally
            {
                connection.Close();
            }
            return "something";
        }

فقط این نکته را یادآوری کنیم که بایستی از صفت “[WebMethod]” قبل از ایجاد  هر متد استفاده کنیم  درواقع این صفت برای شناسایی تابع ما در صفحه وب سرویس به کار میرود .

حال از وب سرویس اجرا بگیرید وبه ثبت داده درآن بپردازید فقط این نکته رایادآوری کنم که آدرس Urlرا برای استفاده  در برنامه خود ذخیره کنید (در پایین با مزیت این کار آشنا میشویم )


حال در این مرحله وقت استفاده از  وب سرویس  در یک پلتفرم دیگری  است  حال  یک پروژه از نوع Windows Forms ایجاد کرده و مانند زیر شروع به طراحی صفحات ثبت نام و ورود میکنیم



حال برای استفاده از وب سرویس در قسمت References  راست کلیک کرده و گزینه     Add service
را برای اضافه کردن وب سرویس به برنامه  انتخاب کنید  ، دراین حالت صفحه ای مانند زیر باز میشود

و اکنون برای اضافه کردن وب سرویس باستی  در قسمت Address، آدرس Url  ای که پس از اجرا از وب سرویس ذخیره کرده اید را دراین قسمت اضافه کنید و گزینهOk را  انتخاب کنید و همانطور که مشاهده میکنید وب سرویس ای را که ساخته اید، به برنامه اضافه شد .


 

حال همان طور که مشاهده میکنید وب سرویس ، در پوشه Service Referencesبه برنامه اضافه شد.

برای  استفاده ازآن کافی است یک نمونه (شی) از آن ایجاد کنیم

  ServiceReference1.RegistrationSoapClient obj = new ServiceReference1.RegistrationSoapClient();

حال وارد فرم ثبت نام شده و کد های زیر را در قسمت دستورات آن اضافه میکنیم:
 


        
 private void btnRegister_Click(object sender, EventArgs e)
        {
            ServiceReference1.RegistrationSoapClient obj = new ServiceReference1.RegistrationSoapClient();
            string str = obj.RegistrationFunction(textUserName.Text, txtPass.Text, txtrepass.Text, txtCellPhone.Text,txtEmail.Text);
            if (str == "ثبت نام انجام شد")
                MessageBox.Show("ثبت نام با موفقیت انجام شد");
            if (str == "کاربری با این نام وجود دارد")
                MessageBox.Show("نام کاربری بااین نام وجود دارد");
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            Form2 fm2 = new Form2();
            fm2.ShowDialog();
        }

 

ودراین قسمت کد های مربوط به فرم ورود را در قسمت دستورات آن ایجاد میکنیم:

 private void btnlogin_Click(object sender, EventArgs e)
        {
            ServiceReference1.RegistrationSoapClient obj = new ServiceReference1.RegistrationSoapClient();
            string str = obj.LoginFunction(txtName.Text, textPassword.Text);
            if (str == "خوش آمدید")
                MessageBox.Show("خوش آمدید");
            if (str == "کلمه عبورنادرست است ")
                MessageBox.Show("کلمه عبور نادرست است ");
            if (str == "نام کاربری با این نام وجود ندارد")
                MessageBox.Show("نام کاربری نادرست است ");
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            ServiceReference1.RegistrationSoapClient obj = new ServiceReference1.RegistrationSoapClient();
            string str = obj.LangitudeAndLattitude(textBox3.Text, textBox4.Text, textBox5.Text);
            if (str == "something")
                MessageBox.Show("اطلاعات وارد شده با موفقیت به روزرسانی شد");
            if(str!="something")
                MessageBox.Show("خطا");
        }

 و حال در این مرحله اگر از برنامه اجرا بگیریم با صفحه ای مانند زیر روبه رومیشویم  فقط این نکته رایادآوری کنم اطلاعاتی که در وب سرویس وارد کرده اید هم در برنامه قابل اجرا و پیاده سازی میباشد

,

در آخر این نکته را خاطر نشان کنیم که برای استفاده از وب سرویس چون ما ازlocalاستفاده میکنیم باید  ابتدا یک اجرا از وب سرویس داشته باشیم تا بتوان به اطلاعاتی که در وب سرویس درج شده است  دسترسی د اشته باشیم.

موفق باشید

فایل های ضمیمه