Перегрузка методов WCF

[OperationContract]
        void SendMessage(string str);
        [OperationContract(Name ="Add User")]
        void SendMessage(string str, string num);
        [OperationContract(Name = "Add User_New User")]
        void SendMessage(string str, string nu, string pathm);
        [OperationContract(Name = "Add User_New User")]

        void SendMessage2(string sdf, string fds, string sdfs);
        [OperationContract(Name = "Add User_New User fdsfsd")]

        void SendMessage1(string gdfg, string dfgs, string sadf);
        [OperationContract(Name = "Add User_New User fdsfsd")]


Наследование контрактов

Когда указываем атрибуты.
Атрибут [ServiceContract] не наследуется, поэтому на каждом уровне иерархии интерфейсов. Он должен задаваться отдельно.
Когда не указываем атрибуты.

interface Interface1: Interface2
    {
        [OperationContract]
        string Method(string mes);

        [OperationContract(Name = "Jora")]
        void SendMessage(string str, string num);

        [OperationContract(Name = "Windows")]
        void SetSettings(string str, string num);

        [OperationContract(Name = "Test")]
        void SeTest(string str, string num);
    }


Оптимальное количество методов в контрактных службах
От 3 до 5 членов – оптимальное количество.
От 6 до 9 – нормально, допустимое количество, есть смысл проанализировать операции и определить возможность и поведение.
Около 12 – большое количество, стоит поискать способа выделения операций в отдельные контракты.
От 20 – не допускается ни при каких условиях.
Операция минимальной инкапсуляции – является аналогом свойств, известных под названием операция минимальной инкапсуляции.

interface Interface1: Interface2
    {
        [OperationContract]
        string Method(string mes);

        [OperationContract(Name = "Jora")]
        void SendMessage(string str, string num);

        [OperationContract(Name = "Windows")]
        void SetSettings(string str, string num);

        [OperationContract(Name = "Test")]
        void SeTest(string str, string num);
    }


[ServiceContract]
    interface Interface1
    {
        [OperationContract]
        string GetLogin(string login);

        [OperationContract(Name = "Jora")]
        void SetLogin(string login);

        [OperationContract]
        string GetPassword(string password);

        [OperationContract(Name = "12345")]
        void SetPassword(string password);
      
    }


Контракты данных определяют, какие типы данных принимаются и передаются службой. WCF принимает косвенные контракты данных для встроенных типов, int,float и т.д.
Эта технология использует сериализацию.
Сериализация праметров

Сериализация входных параметров.
Транспортировка сообщения службе.
Дисериализация входных параметров.
Выполнение операции.
Сериализация выходных параметров.
Возвращение сообщений клиенту.
Дисериализация выходных параметров.
Все свойства класса помечаются атрибутом [DataMember].