Услуги WCF выставляют свойства? - PullRequest
11 голосов
/ 05 мая 2009

В интерфейсе, необходимом для реализации службы WCF, я объявляю основной класс с атрибутом [ServiceContract()] и любой открытый метод с [OperationContract()].

Как я могу выставить публичные свойства? Спасибо

Ответы [ 5 ]

20 голосов
/ 12 мая 2009

Поскольку часть свойства get является методом, это будет технически работать, но, как упоминалось в предыдущих ответах / комментариях, это может быть нежелательно; просто разместив его здесь для общего знания.

Договор на обслуживание:

[ServiceContract]
public interface IService1
{
    string Name
    {
        [OperationContract]
        get;
    }
}

Услуги:

public class Service1 : IService1
{
    public string Name
    {
        get { return "Steve"; }
    }
}

Для доступа с вашего кода клиента:

var client = new Service1Client();
var name = client.get_Name();
13 голосов
/ 05 мая 2009

Вы не можете. Это не так, как это работает. Только методы.

4 голосов
/ 26 октября 2012

Вы можете выставить свойства, но вам придется использовать атрибут [DataContract] и можете объявить свойство как атрибут [DataMember] для свойств.

4 голосов
/ 05 мая 2009

Свойства являются объектно-ориентированным аспектом компонентов интерфейсов. WCF - это около сервисов , где вы должны продумать и спроектировать последовательность взаимодействий между вашими компонентами.

Ориентация объекта плохо масштабируется для распределенных сценариев (когда ваш код выполняется на нескольких серверах или даже в нескольких процессах) из-за стоимости циклических операций, потенциально дорогостоящего управления состоянием и проблем управления версиями. Тем не менее, ОО по-прежнему является хорошим способом проектирования внутренних служб, особенно если они являются сложными.

2 голосов
/ 25 октября 2013

ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, не выставляйте Properties как веб-метод. Это не будет работать в HTTPS. У меня было БОЛЬШОЕ время для выявления и устранения этой проблемы. Лучший способ - написать конкретный метод для возврата в WCF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...