Создание лучшей службы WCF

#c# #wcf #service-design

#c# #wcf #сервис-дизайн

Вопрос:

Я создаю службу WCF, и у меня есть вопрос о дизайне службы WCF:

Например:

Если у меня есть уровень сбора данных с двумя классами Person и Product:

 public class Person
{
  public DataTable Select()
  {...}
}

public class Product
{
  public DataTable Select()
  {...}
}
  

Оба класса имеют метод Select() . Чтобы использовать эти классы в WCF, я использовал два способа в своих предыдущих проектах

1) Создайте два класса обслуживания PersonService и ProductService:

 public class PersonService : IPersonService
{ 
   public DataTable Select()
   {
     Person person = new Person();
     return person.Select();
   }
}

public class ProductService : IProductService
{ 
   public DataTable Select()
   {
     Product product = new Product();
     return product.Select();
   }
}
  

В этом случае мне приходится создавать / настраивать классы служб отдельно.

2) Создайте один класс сервиса и используйте разные имена:

 public class MyService : IMyService
{ 
   public DataTable PersonSelect()
   {
     Person person = new Person();
     return person.Select();
   }

   public DataTable ProductSelect()
   {
     Product product = new Product();
     return product.Select();
   }
}
  

В этом случае мне нужно создать / настроить только один класс обслуживания. Но у методов имена большего размера (например: PersonSelect() вместо Select())

Какой способ лучше? и почему?

Спасибо.

Ответ №1:

Прежде всего, не идеально возвращать DataTable / DataSet из службы, но чтобы ответить на ваши вопросы в соответствии с принципом единой ответственности, класс должен делать только одно, поэтому, если ProductSelect и PersonSelect, похоже, связаны с чем-то одним и только одним, держите их вместе, иначеон должен быть разделен.

Идея состоит в том, чтобы разделять вещи, которые имеют тенденцию меняться, чтобы изменение одного не повлияло на другое.