WCF如何避免定义许多操作契约

l46*_*kok 1 .net c# wcf

在我的界面中,我将有很多功能.所有这些都将绑定为OperationContract.

有没有办法避免在这些函数中的每一个上键入[OperationContract]?

[ServiceContract]
public interface IStudentService
{
    [OperationContract]
    String GetStudentFullName (int studentId);

    [OperationContract]
    StudentInformation GetStudentInfo (int studentId);
    ... about 20 more
}
Run Code Online (Sandbox Code Playgroud)

Den*_*nis 5

您应该避免使用包含大量(如20个或更多)操作合同的服务合同.

首先,您可以做的是更改您的服务所基于的模式.而不是作为操作的结果发布和返回单个数据值,而是使用DTO(或STE,如果这适用于您)并对对象图进行操作:

[OperationContract]
StudentDTO GetStudent(int studentId);
[OperationContract]
StudentDTO UpdateStudent(CreateStudentDTO student);
[OperationContract]
StudentDTO UpdateStudent(UpdateStudentDTO student);

[DataContract]
public class StudentDTO
{
  public int Id { get; set; }
  public string Name { get; set; }
  public StudentInformationDTO StudentInformation { get; set; }

  // other student's data here
}
Run Code Online (Sandbox Code Playgroud)

第二件事 - 将这些合同分解成小合同(记住单一责任原则).你不应该做合同,这是世界各地的责任.