Преобразование библиотеки в веб-сервис WCF - PullRequest
4 голосов
/ 16 июня 2011

Как описывает сюжетная линия, я нахожусь в процессе предоставления библиотеки C # в службу WCF. В конце концов мы хотим раскрыть всю функциональность, но в настоящее время область действия ограничена подмножеством библиотечного API. Одна из целей этого упражнения также состоит в том, чтобы убедиться, что служба WCF использует шаблон обмена сообщениями запроса / ответа. Таким образом, интерфейс / API изменится, поскольку существующая библиотека не использует этот шаблон

Я начал с реализации сервисных контрактов и объектов запроса / ответа, но когда дело доходит до разработки DataContracts, я не уверен, какой путь выбрать. Я разделен между возвращением и аннотированием существующих библиотечных классов с помощью атрибутов VS DataContract / DataMember, определяющих новые классы, которые похожи на суррогатные классы для существующих классов.

Есть ли у кого-нибудь опыт работы с подобными задачами или есть какие-либо рекомендации о том, какой способ лучше всего работает? Я хотел бы отметить, что наша команда владеет существующей библиотекой, поэтому у нее есть исходный код. Любые указатели или лучшие практики будут полезны

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

Я рекомендую использовать шаблон адаптера, который в данном случае в основном означает создание совершенно новых DataContracts и ServiceContracts.Это позволит независимо изменять все и позволит вам оптимизировать содержимое WCF для WCF и API для API (если это имеет смысл).Последнее, что вам нужно, это пойти по пути модификации и обнаружить, что что-то просто не будет отображаться правильно, как только вы почти закончите.

2 голосов
/ 16 июня 2011

Начиная с .NET 3.5 SP1, вам больше не нужно украшать объекты, которые вы хотите выставить, с атрибутами [DataContract] / [DataMember]. Все общедоступные объекты будут выставлены автоматически. При этом лично я предпочитаю использовать специальные объекты DTO, которые я выставляю и украшаю этими атрибутами. Затем я использую AutoMapper для сопоставления между фактическими моделями домена и объектами, которые я хочу выставить.

1 голос
/ 16 июня 2011

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

То, что я имею в виду, не «конвертируйте» существующую библиотеку, даже если вы думаете, что не собираетесь продолжать использовать ее в других контекстах.Если это было проверено и доказано, то воспользуйтесь этим фактом и оберните его вокруг.

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