У меня есть требование передавать параметры в виде Xml в мои хранимые процедуры.
У меня есть служба WCF на среднем уровне, которая вызывает мой уровень данных, который, в свою очередь, перенаправляет запрос в соответствующую хранимую процедуру.
Дизайн заключается в том, что служба WCF отвечает за создание Xml для передачи в репозиторий.
Мне просто интересно, сохранять ли контроль над тем, какие параметры содержатся в Xml на среднем уровне, или использовать словарь, созданный клиентом, который я затем конвертирую в Xml на среднем уровне?
На данный момент я выбрал последнее - например:
public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message)
{
var result = Repository.ExecuteQuery("TestQuery", ParamsToXml(message.Body.Params));
return new TestQueryResponseMessage
{
Body = new TestQueryResponse
{
TopicItems = result;
}
}
}
private string ParamsToXml(Dictionary<string, string> nvc)
{
//TODO: Refactor
StringBuilder sb = new StringBuilder();
sb.Append("<params>");
foreach (KeyValuePair<string, string> param in nvc)
{
sb.Append("<param>");
sb.Append("<" + param.Key + ">");
sb.Append(param.Value);
sb.Append("</" + param.Key + ">");
sb.Append("</param>");
}
sb.Append("</params>");
return sb.ToString();
}
Однако мне может понадобиться сделать это первым способом. Например.
public TestQueryResponseMessage TestQuery(TestQueryRequestMessage message)
{
string xml = string.Format("<params><TestParameter>{0}</TestParameter></params>",message.Body.TestParameter)
var result = Repository.ExecuteQuery("TestQuery", xml);
return new TestQueryResponseMessage
{
Body = new TestQueryResponse
{
TopicItems = result;
}
}
}
Что советует коллективный разум?