1> В вашем случае, если вы создаете класс с использованием XSD и если он собирается использовать Dynamic в вашем приложении, чем в этом случае, вы не сможете его использовать, потому что вы не получите его свойства, которые вы должныкарта в вашем приложении.2> Я думаю, что единственным решением является использование WCF со ссылкой на сервис в вашем приложении.В вашем случае, если вы используете
USING SERVICESTACK:
Главное - это ответ POST стека служб.Хотя мы отправляем «POST» в стек обслуживания, он принимает только запрос DTO.
JsonServiceClient client = new JsonServiceClient("myserviceurl");
RESTWCF.ServiceModel.Perfmon p = new RESTWCF.ServiceModel.Perfmon();
var res = client.Post<RESTWCF.ServiceModel.Perfmon>("/perfmon", p);
ограничивает вышеприведенное.Это код, который нам нужно сделать в консольном приложении.При отправке запроса POST требуется объект класса «perfmon».
Давайте рассмотрим, что у нас есть класс perfmon в консольном приложении.Тогда нам не нужно использовать строку JSON, потому что, если мы создаем строку JSON, мы также должны присвоить свойства классу, чтобы его можно было вставить в конец стека службы.(тогда почему вы хотите использовать JSON)
ИСПОЛЬЗОВАНИЕ RESTWCF:
Давайте теперь предположим тот же сценарий с использованием RESTWCF, который принимает запрос «GET», «POST» с использованием WebRequest,(обычный RESTWCF) В этом случае, конечно, нам не нужна ссылка (COPY) класса perfmon в exe агента Monitor.Теперь давайте предположим, что мы создадим строку JSON, как вы предложили
WebRequest request = WebRequest.Create(your URL");
request.ContentType = "application/json; charset=utf-8";
request.Method = "POST";
string json = "{\"Id\":1,\"2\":\"100\",\"3\":\"1000\"}";
. Выше 2 означает процессор, 3 - доступную память и т. Д. Но, если мы будем использовать такую структуру JSON, это не будетприсваивать значения свойств (поскольку значение ключа JSON преобразуется в свойства класса C #) Наш класс Perfmon должен выглядеть следующим образом.
Конечно, ваш класс должен выглядеть следующим образом:
[DataContract(Name = "perfmon")]
public class Performance
{
[DataMember(Order = 1)]
public long Id
{
get;
set;
}
[DataMember(Order = 2)]
public string CpuUsage
{
get;
set;
}
[DataMember(Order = 3)]
public string AvailableMemory
{
get;
set;
}
}
Теперь, конечно, если мы создадим строку JSON, например….
string json = "{\" Id \ ": 1, \" CpuUsage \ ": \" 100 \ ", \" AvailableMemory \ ": \" 1000\ "}";
чем в этом случае, он работает и присваивает значения свойствам класса, но в этом случае строка будет иметь большую длину?
ТАК, Я Угадаю, что окончательное решение являетсяПЕРЕЙТИ С WCF С СЕРВИСНОЙ ССЫЛКОЙ ИЛИ опустить JSON и передать объект в стек обслуживания из exe, как показано ниже (КОПИЯ КЛАССА В ТРЕБОВАНИИ В EXE)
JsonServiceClient client = new JsonServiceClient("myserviceurl");
RESTWCF.ServiceModel.Perfmon p = new RESTWCF.ServiceModel.Perfmon();
var res = client.Post<RESTWCF.ServiceModel.Perfmon>("/perfmon", p);