У меня есть веб-сервис и несколько клиентов, которые будут его использовать.Веб-сайт MVC 2.0, приложение winforms и потенциально мобильные приложения.
Я понимаю, что в случае мобильных приложений каждому приложению потребуется внутренний доступ к веб-сервису и управление им.Но что мне делать с приложениями .net?Я использую составные типы для объекта запроса и возвращаемого типа.Вот пример.
Моя первоначальная мысль заключалась в том, чтобы создать класс-оболочку, который будет ссылаться на веб-сервис и быть просто оболочкой.Тогда каждому проекту просто нужно вызвать мой класс-обертку, а соединение и учетные данные просто необходимо настроить в веб-конфигурации.
Это мой абстрактный запрос.У меня есть все общие свойства, которые нужны каждому запросу.
[DataContract]
public abstract class RequestBase : IRequest
{
#region IRequest Members
[DataMember]
public string ApiKey { get; set; }
[DataMember]
public string ApiPassword { get; set; }
[DataMember]
public int PageSize { get; set; }
[DataMember]
public int PageIndex { get; set; }
#endregion
public RequestBase() : this(String.Empty, String.Empty) { }
public RequestBase(string apiKey, string apiPassword)
{
ApiKey = apiKey;
ApiPassword = apiPassword;
}
}
Тогда вот класс, который наследуется от моего базового класса.
[DataContract]
public class CustomerRequest : RequestBase
{
[DataMember]
public int Id { get; set; }
}
И вот мой объект Response.Я использую Generics, потому что каждый ответ один и тот же, за исключением типа набора результатов.
[Serializable]
public class Response<T>
{
public IEnumerable<T> Results { get; set; }
public int TotalResults { get; set; }
public int PageIndex { get; set; }
public int PageSize { get; set; }
public RulesException Exception { get; set; }
}
Проблема в том, что когда я создавал веб-ссылку, он преобразовывал типы, принятые / возвращаемые моей службой, в прокси-объекты.
Когда я использовал ссылку на службу (в отличие от веб-ссылки), она, казалось, работала лучше, за исключением того, что была предоставлена ссылка на службу, что далеко не идеально.
Я ищуза любые идеи, которые уменьшат дублирование кода.