Я все больше и больше начинаю понимать, как использовать WCF для проектов, которые я внедряю для внутреннего использования (автоматизация задач компании, обеспечение того, чтобы все клиенты находились на одной странице и т. Д.) Это во многом связано с 3-10 клиентов Я автоматизирую сразу, когда внедряю решение, и (даже если это была небольшая выборка) компания растет, что постоянно увеличивает число клиентов в пуле и, следовательно, повышает требования к надежности / согласованности.С учетом вышесказанного я осознаю, насколько важно убедиться, что я делаю вещи расширяемыми, поскольку (раньше) продвижение релиза становилось все труднее, чем больше клиентов у меня зависит от службы.
Мой последний проект имеетпотенциал экстернализации.До сих пор я делал это так, как я знаю, работает, но я все еще хотел бы идти по «правильному» пути в плане будущих обновлений.Как мне настроить файл проекта, чтобы сделать его максимально простым и понятным, чтобы поддерживать его в актуальном состоянии и расширять?Должен ли я помещать номера версий в пространство имен (как в Company.Interfaces.Contracts.June2011.IMyService), используя псевдопапки, ...?
Я просто не чувствую уверенности в этом аспекте перемещениявперед.Я хотел бы знать, что любая имеющаяся у меня сейчас наземная работа не станет бременем для будущего расширения / настройки позже.Я также хотел бы как можно больше придерживаться «нормы разработки», поскольку становится все более вероятным, что мы будем нанимать дополнительных программистов, чтобы помочь рабочей нагрузке.
Есть ли у кого-либо с таким опытом какой-либо опыт?мысли, предложения, рекомендации в этой области?Буду очень признателен за любые примеры, книги, документацию и т. Д., Которые вы можете предоставить.
Обновление (06-17-2011)
Чтобы дать некоторое представление, я такжеищу некоторые конкретные вопросы.К ним относятся:
- Как вы украшаете класс обслуживания по сравнению с DTO с точки зрения пространства имен?Я видел
http://service.domain.com/ServerName/Version
, используемый в самом классе Service, и http://types.domain.com/ServiceName/Version
, используемый в DTO.Это распространено?(Разделить пространство имен на коллекцию типов и служб?) - Должен ли я реализовывать
IExtensibleDataObject
для всех своих объектов на том основании, что они могут быть эволюционированы в будущем выпуске?(Создайте основы для работы сейчас) - Если в моей базе данных есть ограничения (например, для длины строки), я должен расширить
IParameterInspector
и использовать этот метод для валидности (с разделением логики и валидации), исправьте? - Должен ли "фактический сервис" быть разбит на свой собственный класс, чтобы, как и в I версии, классы контракта на обслуживание просто вызывали код (сохраняя каждую новую версию с минимально возможным кодом?) Илия должен держать его в классе обслуживания и наследовать от него с помощью любых новых методов (аналогично, что произойдет, если вы удалите метод?)
Извините, если у меня много вопросов, япросто посмотрите на два конца спектра в документации.Я вижу «Настройка wcf», а затем непосредственно «это WCF с контролем версий» - никаких переходов / шагов между ними.Я предполагаю, что это будет просто "щелкнуть", как только я получу достаточно информации, но я (к сожалению) еще не там.
tl; др
Когда вы начнете писать службу WCF, которая, как вы знаете, будет проходить несколько итераций, как вы настроите свой проект (ы), чтобы сделать его как можно более простым в будущем (для себя и партнеров по команде)?