![]() |
![]() |
ServiceStack
روش دیگر برای فراخوانی وب سرویس ها ServiceStack است. به عنوان مثال کد زیر طریقه استفاده از Service Stackها با متد IServiceClient.GetAsync برای صدور درخواست را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
client.GetAsync<CustomersResponse>("", (response) => { foreach(var c in response.Customers) { Console.WriteLine(c.CompanyName); } }, (response, ex) => { Console.WriteLine(ex.Message); }); |
استفاده از اطلاعات RESTful
وب سرویس های RESTful معمولا از پیام های JSON برای بازگزداندن اطلاعات به کلاینت استفاده می کنند. JSON بر پایه Text است. فرمت data-interchange که payloadهای فشرده ایجاد می کند که نتیجه آن کاهش پهنای باند مورد نیاز در هنگام ارسال داده هاست. در این بخش، مکانیزم استفاده از پاسخ های RESTful در JSON و Plain-Old-XML (POX) مورد بررسی قرار خواهد شد.
System.JSON
پلتفرم زامارین با پشتیبانی از JSON خارج از بسته ارسال می شود. با استفاده از JsonObject، نتیجه می تواند مشابه کد زیر بازیابی شود:
1 2 3 4 5 6 7 8 9 10 11 12 |
var obj = JsonObject.Parse(json); var properties = obj["rxtermsProperties"]; term.BrandName = properties["brandName"]; term.DisplayName = properties["displayName"]; term.Synonym = properties["synonym"]; term.FullName = properties["fullName"]; term.FullGenericName = properties["fullGenericName"]; term.Strength = properties["strength"]; |
اگرچه آگاهی از ابزار System.Json برای لود اطلاعات ورودی در حافظه مهم است.
JSON.NET
کتابخانه NewtonSoft JSON.NET به طور گسترده از کتابخانه برای serialize و deserializing کردن پیام های JSON استفاده می کند. قطعه کد زیر طریقه استفاده از JSON.NET برای دی سریالایز کردن پیام JSON به آبجکت C# را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var term = new RxTerm(); var properties = JObject.Parse(json)["rxtermsProperties"]; term.BrandName = properties["brandName"].Value<string>(); term.DisplayName = properties["displayName"].Value<string>(); term.Synonym = properties["synonym"].Value<string>();; term.FullName = properties["fullName"].Value<string>();; term.FullGenericName = properties["fullGenericName"].Value<string>();; term.Strength = properties["strength"].Value<string>(); term.RxCUI = properties["rxcui"].Value<string>(); |
ServiceStack.Text
ServiceStack.Text یک کتابخانه سریالایز کردن JSON است که برای کار با کتابخانه ServiceStack طراحی شده است. قطعه کد زیر طریقه پارس کردن JSON با استفاده از ServiceStack.Text.JsonObject را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var result = JsonObject.Parse(json).Object("rxtermsProperties") .ConvertTo(x => new RxTerm { BrandName = x.Get("brandName"), DisplayName = x.Get("displayName"), Synonym = x.Get("synonym"), FullName = x.Get("fullName"), FullGenericName = x.Get("fullGenericName"), Strength = x.Get("strength"), RxTermDoseForm = x.Get("rxtermsDoseForm"), Route = x.Get("route"), RxCUI = x.Get("rxcui"), RxNormDoseForm = x.Get("rxnormDoseForm"), }); |
System.Xml.Linq
در رویداد از وب سرویس XML-based REST استفاده کند، برای LINQ به XML می تواند از پارس XML استفاده کرده و آبجکت C# را به صورت inline جمع کند به صورتی که در کد زیر نشان داده شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var doc = XDocument.Parse(xml); var result = doc.Root.Descendants("rxtermsProperties") .Select(x=> new RxTerm() { BrandName = x.Element("brandName").Value, DisplayName = x.Element("displayName").Value, Synonym = x.Element("synonym").Value, FullName = x.Element("fullName").Value, FullGenericName = x.Element("fullGenericName").Value, //bind more here... RxCUI = x.Element("rxcui").Value, }); |
1 دیدگاه
سلام.ممنون .خیلی خوب بود.از دست اندرکاران وبسایت به این خوبی سپاسگزارم