Ho visto diversi modi per progettare i servizi WCF, e sembra che alcuni sviluppatori preferiscano i wrapper dei parametri, mentre altri preferiscono i parametri "naked". Per spiegare cosa intendo, considera le seguenti interfacce di servizio:
Parametri "nudi"
[ServiceContract]
public interface IService
{
[OperationContract]
string[] GetValuesByType(string groupName, ValueTypeEnum valueType)
}
Wrapper di parametri
[DataContract]
public class GetValuesByTypeRequest
{
[DataMember]
public string GroupName { get; set; }
[DataMember]
public ValueTypeEnum ValueType { get; set; }
}
[DataContract]
public class GetValuesByTypeResponse
{
[DataMember]
public string[] Result { get; set; }
}
[ServiceContract]
public interface IService
{
[OperationContract]
GetValuesByTypeResponse GetValuesByType(GetValuesByTypeRequest request)
}
Suppongo che ci siano casi in cui i wrapper di parametri rendono più semplice mantenere il servizio su diverse versioni del software, dal momento che è possibile controllare la serializzazione di ciascun membro un po 'più direttamente di quanto si possa fare con il primo metodo. Ma, ad essere onesti, i wrapper dei parametri sembrano molto più codice per un beneficio minimo. Ho sbagliato qui?