نمایش نتایج 1 تا 14 از 14

نام تاپیک: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

  1. #1
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    Lightbulb ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    باسلام:

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

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

    در این مقاله 2 روش برای ارسال داده ها توضیح داده میشود:
    1- استفاده از اسناد استاندارد XML
    2- استفاده از شی منبع داده Data Set





    پ.و:
    لطفا از پست های اضافه پرهیز کنید که تاپیک تمیز بمونه.
    با تشکر.

  2. #2
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    مرحله اول:

    یک وب سرویس میسازیم که من در اینجا MyWebService نام گزاریش کردم.
    ( در این مقاله توضیح داده شده )

    خب حالا میریم سراغ تعریف یک متد برای ارسال داده توسط XML:



    [WebMethod]
    public XmlDocument ReturnXml()
    {
    XmlDocument dom = new XmlDocument();

    XmlElement people = dom.CreateElement("People");
    dom.AppendChild(people);

    XmlElement person = dom.CreateElement("Person");
    people.AppendChild(person);

    XmlElement firstName = dom.CreateElement("FirstName");
    person.AppendChild(firstName);

    XmlText text = dom.CreateTextNode("Majid");
    firstName.AppendChild(text);

    XmlElement LastName = dom.CreateElement("LastName");
    person.AppendChild(LastName);

    XmlText text2 = dom.CreateTextNode("Maghsoudipour");
    LastName.AppendChild(text2);

    // load some XML ...
    return dom;
    }



    کمی درباره این متد توضیح میدم:
    یک متد داریم ReturnXml که خروجیش یک XmlDocument میباشد.
    در بدنه این متد ما ساختار یک فایل XML رو با خروجی زیر میسازیم:

    <Persons>
    <Name>Majid</Name>
    <Family>Maghsoudipour</Family>
    <id>1</id>
    </Persons>
    <Persons>
    <Name>Arman</Name>
    <Family>Maghsoudipour</Family>
    <id>2</id>
    </Persons>

    و جواب رو در قالب یک سند XML ارسال میکند.
    آخرین ویرایش به وسیله alonemm : شنبه 03 تیر 1391 در 16:40 عصر

  3. #3
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    خب تا اینجا متد مورد نظر برای ارسال داده ها در قالب XML رو ساختیم.

    دقت کنید که من برای ساخت سند XML از کلاس ها و متدهای خود دات نت که در فضای نام System.Xml وجود دارد استفاده کردم و شما میتونید از روشهای دیگر برای ساخت سند XML اقدام کنید.

    خب پس از پابلیش کردن وب سرویس و ارسال اون روی هاست مورد نظر اقدام به ایجاد یک پروژه وب سایت کنید و در اون به وب سرویس مورد نظر ارتباط پیدا کنید.
    (تمامی آموزش های این مراحل در تاپیک قبلی با نام راه اندازی یک وب سرویس و استفاده از آن در برنامه های تحت وب و برنامه های تحت ویندوز
    همراه با تصویر وجود دارد.)

  4. #4
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    حالا در رویداد مورد نظر در سایت داده های مورد نظر رو از متد ReturnXml از وب سرویس دریافت میکنیم:


    com.somee.alonemm.MyWebService MWS = new com.somee.alonemm.MyWebService();

    XmlDocument myServiceDoc = new XmlDocument();
    System.Xml.XmlNode neNode;
    //Adding the resulting XML from WebMethod to a user created XmlNode
    neNode = MWS.ReturnXml();
    //Creating a Dataset
    DataSet myDataSet = new DataSet();
    //The XmlNode is added to a byte[]
    byte[] buf = System.Text.UTF8Encoding.ASCII.GetBytes(neNode.Out erXml);
    System.IO.MemoryStream ms = new System.IO.MemoryStream(buf);
    //The XML is readed from the MemoryStream
    myDataSet.ReadXml(ms);

    GridView1.DataSource = myDataSet.Tables[0];
    GridView1.DataBind();


    توضیحات کد:

    در ابتدا یک شی از جنس وب سرویس مورد نظر میسازیم.
    سپس یک شی از جنس اسناد XML میسازیم.
    یک XmlNode با نام neNode میسازیم برای گرفتن XML به دست آمده از وب سرویس و با متد MWS.ReturnXml این شی رو مقدار دهی میکنیم.
    خط بعد یک شی Data Set میسازیم.
    در خط بعد یک متغییر از نوع بایت میسازیم و سعی به گرفتن اطلاعات سند XML از وب سرویس به صورت بایت میکنیم.
    (دقت کنید که برای نمایش درست کارکترهای فارسی حتما از کلاس UTF8Encoding از فضای نام System.Text استفاده کنید.)
    در خط بعد XML رو در یک متغیر حافظه لود میکنیم.
    و توسط متد ReadXml از شی DataSet منبع داده رو شکل میدیم.

    در آخر این منبع داده رو به شی GridView مشخص و اتصال میدیم.


    حالا برنامه خودتون رو اجرا کنید و از خروجی اون لذت ببرید...!
    همونطور که در تصویر زیر هم میبینید شما موفق شدید داده ها رو در قالب اسناد استاندارد XML از وب سرویس مورد نظر دریافت کنید و در سایت خودتون نمایش بدید.
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg D1.jpg‏ (13.4 کیلوبایت, 807 دیدار)
    آخرین ویرایش به وسیله alonemm : شنبه 03 تیر 1391 در 16:42 عصر

  5. #5
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    خب حالا به مرحله دوم ارسال داده با شی DataSet میریم:

    وقتی یک نگاه به کلاس DataSet میکنیم:


    [SerializableAttribute]
    public class DataSet : MarshalByValueComponent, IListSource,
    IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable


    میبینم که این کلاس قابلیت سریالیز شدن رو دارا هست و به همین خاطر ما میتونیم از طرق وب سرویس داده های این شی رو به سمت کلاینتی که درخواست کرده ارسال کنیم.

    پس در وب سرویس قبلی یک متد جدید اضافه میکنیم:


    [WebMethod]
    public DataSet GetData()
    {
    // First Create a New Connection
    using (SqlConnection connection = new SqlConnection())
    {
    // Now Pass a Connection String To the Connection
    connection.ConnectionString = "Connection String....";
    // Now the Select statement you want to run
    string select = "select * from Persons ";
    // Create an Adapter
    SqlDataAdapter da = new SqlDataAdapter(select, connection);
    // Create a New DataSet
    DataSet ds = new DataSet();
    // Fill The DataSet With the Contents of the Stock Table
    da.Fill(ds, "Persons");
    // Now Return ds which is a DataSet
    return (ds);
    }
    }


    توضیحات متد:
    کار این متد کاملا مشخص هست که به پایگاه داده متصل میشه و پس از اجرای یک کوئری و پر کردن شی DataSet اقدام به فرستادن این شی میکند.

    برای دریافت در برنامه هم همانند زیر عمل کنید:


    GridView2.DataSource = MWS.GetData();
    GridView2.DataBind();


    حالا پروژه رو ران کنید و لذت ببرید....!

  6. #6
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    خب به پایان این آموزش رسیدیم امیدوارم دوستان بهره کافی از این مقاله رو برده باشن.

    در کلام آخر باید بگم که این سرویس رو من روی هاستم با آدرس : http://alonemm.somee.com/MyWebService.asmx آپلود کردم و شما برای تست میتونید ازش استفاده کنید.

    شما هم میتونید از این روش برای ساخت وب سرویس هایی که برای مثال خدماتی همانند جدول بازیهای مسابقات جام ملت ها - قیمت دلار و سکه و .... رو ارائه میدن استفاده کنید.




    با احترام مجید مقصودی پور.

  7. #7
    کاربر جدید
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    شيراز
    پست
    27

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    سلام مجيد جان
    خسته نباشي و سپاسگزار از زحماتي كه ميكشي .
    فرض كنيد برنامه اي بر سروري داريم كه به بانكي وصل است و كار ويژه خودش را انجام ميدهد ودر عين حال كلاينت هايي داريد كه براي خودشان برنامه هايي در همان ضمينه برنامه سرور ولي محدودتر و بانك اطلاعاتي مخصوص خودشان را داريم كه با سرور در replication دو طرفه اطلاعات هستند و در اين ميان اين اعمال از طريق توابع بانك اطلاعاتي صورت ميگيرد ايا اين حالت را بر حسب اينكه سرور روي وب باشد يا غير وبي وقابل اتصال با ip باشد را ميتوان نوعي سرويس در نظر گرفت؟
    حال اگر تحت وب يك برنامه حسابداري را با تخصيص فضاي مورد تقاضا در اختيار چندين مشتري بگذاريد ايا مصداقي از يك سرويس است ؟

  8. #8
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    نقل قول نوشته شده توسط parhamt مشاهده تاپیک
    سلام مجيد جان
    خسته نباشي و سپاسگزار از زحماتي كه ميكشي .
    فرض كنيد برنامه اي بر سروري داريم كه به بانكي وصل است و كار ويژه خودش را انجام ميدهد ودر عين حال كلاينت هايي داريد كه براي خودشان برنامه هايي در همان ضمينه برنامه سرور ولي محدودتر و بانك اطلاعاتي مخصوص خودشان را داريم كه با سرور در replication دو طرفه اطلاعات هستند و در اين ميان اين اعمال از طريق توابع بانك اطلاعاتي صورت ميگيرد ايا اين حالت را بر حسب اينكه سرور روي وب باشد يا غير وبي وقابل اتصال با ip باشد را ميتوان نوعي سرويس در نظر گرفت؟
    حال اگر تحت وب يك برنامه حسابداري را با تخصيص فضاي مورد تقاضا در اختيار چندين مشتري بگذاريد ايا مصداقي از يك سرويس است ؟
    باسلام:

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

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

    موفق باشید.

  9. #9

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

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

  10. #10
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

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

    باسلام:

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

    که در تاپیک زیر آموزش داده شده:

    آموزش پیاده سازی Custom Paging در GridView با تکنولوژی Ajax


    موفق باشید.

  11. #11

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

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

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

    که در تاپیک زیر آموزش داده شده:

    آموزش پیاده سازی Custom Paging در GridView با تکنولوژی Ajax


    موفق باشید.
    ممنون
    من آموزش paging رو مطالعه کردم و خیلی عالی بود .ولی من منظورم با استفاده از سرویس بود .یعنی این که من میخوام یه تعداد رکورد رو در حجم بالا از یه دیتابیس بخونم و به یه دیتا بیس که روی یه سرور دیگه در یک شهر دیگه قرار داده منتقل کنم .با توجه به این که سرورهای من Valid IP ندارن نمیتونم از SQL Replication استفاده کنم و حدس زدم با استفاده از سرویس بتونم این کارو انجام بدم .من با آموزش هایی که شما در مورد انتقال دیتا با استفاده از سرویس توی همین سایت گذاشته بودید ، تونستم این کار رو انجام بدم .البته با تعداد رکورد پایین .ولی برای حجم بالا مثلا 100 هزار رکورد به مشکل خوردم.
    لطفا راهنماییم کنید

  12. #12
    کاربر دائمی آواتار alonemm
    تاریخ عضویت
    آذر 1388
    محل زندگی
    تهرانپارس
    سن
    35
    پست
    1,846

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    نقل قول نوشته شده توسط niloofarabi مشاهده تاپیک
    ممنون
    من آموزش paging رو مطالعه کردم و خیلی عالی بود .ولی من منظورم با استفاده از سرویس بود .یعنی این که من میخوام یه تعداد رکورد رو در حجم بالا از یه دیتابیس بخونم و به یه دیتا بیس که روی یه سرور دیگه در یک شهر دیگه قرار داده منتقل کنم .با توجه به این که سرورهای من Valid IP ندارن نمیتونم از SQL Replication استفاده کنم و حدس زدم با استفاده از سرویس بتونم این کارو انجام بدم .من با آموزش هایی که شما در مورد انتقال دیتا با استفاده از سرویس توی همین سایت گذاشته بودید ، تونستم این کار رو انجام بدم .البته با تعداد رکورد پایین .ولی برای حجم بالا مثلا 100 هزار رکورد به مشکل خوردم.
    لطفا راهنماییم کنید
    باسلام:

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

  13. #13

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    سلام عرض ادب خدمت همه ی دوستان و اساتید
    ارسال اطلاعات به یک وب سرویس در سی شارپ و گرفتن اطلاعات از اون وب سرویس (آخرین اخبار ولیست دانلود ها و اعضا و...) رو از طریق فایل جیسون هم میشه انجام داد ؟؟
    * فایل جیسونی که خرجی همون وب سرویس است *
    ممنون میشم راهنماییم کنید ..

  14. #14

    نقل قول: ارسال اطلاعات از طریق وب سرویس ها --- Send Data with Web Services

    سلام استاد . یک سوال داشتم خدمتتون
    من یک سرویس دارم که یک کلاس به نام person ( که خودش دو فیلد id , name nhvi ) v, به صورت استرینگ بر میگردونه . مشکل من اینجاست که با وجود اینکه اونو سریال میکنم و در اون سمت هم deserial مثکنم متاسفانه نمیتوم به مقادیر فیلدم دسترسی داشته باشم


    [WebMethod]
    ( public string getinfobync(string s


    }
    Person p = Person.getbynationalcode(s);
    XmlSerializer XSerializer = new XmlSerializer(p.GetType());
    StringWriter textWriter = new StringWriter();
    XSerializer.Serialize(textWriter, p);
    textWriter.Close();
    return textWriter.ToString();

    {

    person نامه کلاسه منه که با تابع getbynationalcode و گرفتن پارامتر ورودی یک نتیجه ای رو که درش 2 فیل id , name هستند رو برمیگردونه
    مشکل من سمت اینجاست که نمیتونم اون سمت داده های استرینگ شامله جواب تابع خودمو تفکیک شده دریافت کنم

    سمت کلاینت



    string xmlstring = SC.getinfobync(textBox2.Text);
    StringReader StReader = new StringReader(xmlstring);
    XmlSerializer XSerializer = new XmlSerializer(StReader.GetType());


    Person p = new Person();


    p = (Person)XSerializer.Deserialize(StReader);


    textBox1.Text = p.id.ToString() + p.name;


تاپیک های مشابه

  1. سوال: معرفی Component ای برای ارسال اطلاعات از طریق BlueTooth
    نوشته شده توسط mehrdad_shahian در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 7
    آخرین پست: دوشنبه 12 دی 1390, 14:59 عصر
  2. ارسال اطلاعات از طریق بلوتوث
    نوشته شده توسط Unknownlive در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 25 اردیبهشت 1389, 20:08 عصر
  3. ارسال اطلاعات از طریق post به یک webapplication
    نوشته شده توسط naeemeh در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: چهارشنبه 24 بهمن 1386, 09:10 صبح
  4. ارسال اطلاعات از طریق url
    نوشته شده توسط samansad در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: دوشنبه 14 آبان 1386, 20:12 عصر
  5. ارسال اطلاعات از طریق مودم
    نوشته شده توسط mandana2010 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: یک شنبه 23 مهر 1385, 08:05 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •