#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, похоже, связаны с чем-то одним и только одним, держите их вместе, иначеон должен быть разделен.
Идея состоит в том, чтобы разделять вещи, которые имеют тенденцию меняться, чтобы изменение одного не повлияло на другое.