Раздувание веб-службы WCF - PullRequest
3 голосов
/ 06 января 2009

Я разрабатываю веб-сервис WCF, который стал довольно раздутым. Какие методы вы используете, чтобы разделить выполнение контракта?

Ответы [ 2 ]

4 голосов
/ 06 января 2009

Ну, у вас есть пара вариантов:

Во-первых, вы можете оставить все это в одном классе, но разделить на разные файлы, используя функцию частичного класса C #.

Во-вторых, у вас может быть основной класс обслуживания, просто передающий запросы одному из ряда других реальных классов, организованных логически.

Третий вариант - рассмотреть возможность рефакторинга, чтобы уменьшить количество выполняемых операций. На самом ли деле используются все методы, которые вы выставляете?

Наконец, вы всегда можете разделить службу на несколько служб WCF.

1 голос
/ 07 января 2009

Трудно ответить на ваш вопрос, если вы не дадите больше информации. Вы имеете в виду, что ваш сервисный интерфейс раздут, или реализация класса? Трудно ответить хорошо, если я не вижу код или у меня нет другой информации, я все равно попробую:

Обратите внимание, что служба WCF - это просто обычный класс, который реализует интерфейс и имеет некоторые атрибуты в своих методах. Таким образом, все другие хорошие правила проектирования ОО применяются к нему. Подумайте о том, что он делает, несет ли он действительно единственную ответственность, если не попытается передать часть этой ответственности другим классам, от которых зависит ваша служба. Если вам нужен конструктор не по умолчанию, используйте IInstanceProvider для создания класса обслуживания и предоставьте ему его зависимости (или, если вы используете Windsor Container, используйте WCF Facility).

Если вы действительно хотите, вы можете расширить свою цепочку наследования и перенести часть кода в базовый класс. Однако я этого не делаю и всегда предпочитаю использовать композицию вместо наследования.

Изучите свой контракт на обслуживание и подумайте, насколько он действительно сплоченный. Возможно, вам следует разделить его на несколько более мелких и более сплоченных услуг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...