فرض فرمائید که شما یک توسعه و گسترش دهنده میباشید طراحی اپلیکیشن در مشهد که بر روی یک پروژه عمل میکنید، هر توشه که یک خرید اجرا می گردد یک OrderSummary را به سیستم downstream ارسال می نماید.
public class OrderSummary
{
public int UserId { get; set; }
public int ItemId { get; set; }
public DateTime PurchaseDate { get; set; }
}
ما یک شی داریم که دربرگیرنده آی دی استفاده کننده میباشد، آیدی مورد و Purchase Date بسیار معمولی اما اثرگذار میباشند، این نرم افزار پاره ای کهن میباشد به همین انگیزه سیستم downstream شما با استعمال از XML رابطه خویش را برقرار می نماید. بدین ترتیب یک ApiClient معمولی میتواند دربرگیرنده مورد ها ذیل باشد:
public class ApiClient
{
private static HttpClient client;
private static XmlSerializer serializer;
static ApiClient()
{
//اطمینان حاصل کنید که این اساتیک باشد, https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
client = new HttpClient();
//Serializer اگر دوباره استفاده نشود درباره مسائلی مانند عملکرد برنامه است,
//https://medium.com/p/comparing-c-serialization-techniques-be-wary-of-xml-38f3a4715bbd?source=email-89d87dcc9e73--writer.postDistributed&sk=fc54c021a33b48e8c1916f8d5ff44116
var xRoot = new XmlRootAttribute();
xRoot.ElementName = \"OrderSummary\";
serializer = new XmlSerializer(typeof(OrderSummary), xRoot);
}
public async Task SendOrderSummary(string uri, OrderSummary orderSummary)
{
string orderSummaryString;
using (StringWriter textWriter = new StringWriter())
{
serializer.Serialize(textWriter, orderSummary);
orderSummaryString = textWriter.ToString();
}
var httpContent = new StringContent(orderSummaryString, Encoding.UTF8, \"application/xml\");
var response = await client.PostAsync(uri, httpContent);
return response.StatusCode;
}
}
دراین کد هیچ چیز سبب ساز توقف اپ نمیشود، این صرفا یک کلاس معمولی میباشد که موضوعات را به طور سریالی در میآورد و آن را به uri ارسال می نماید.