Предоставление библиотеки классов .NET (которая в первую очередь определяет операции CRUD) в качестве службы - PullRequest
6 голосов
/ 13 июля 2010

Какой самый лучший, эффективный и быстрый способ представить существующую библиотеку (класс) (которая главным образом определяет операции CRUD) как сервис ( Сервис WCF или Служба данных WCF ), поэтому его можно использовать с Silverlight или Ajax .Существуют ли инструменты (генераторы кода, инструменты RAD), которые могут это поддерживать?Заранее благодарим за помощь и подсказки.

Ответы [ 3 ]

2 голосов
/ 13 июля 2010

Лучший подход - использовать WCF для создания оболочки самостоятельно.

Вы должны сделать это, а не использовать некоторую автоматизацию, чтобы просто выставить библиотеку напрямую, потому что:

  • Безопасность, вы хотите, чтобы кто-нибудь что-нибудь позвонил в библиотеку в любое время?
  • Большинство библиотек предполагают, что они вызываются напрямую, а не через службу (см. Ошибки развития предприятия ).
  • WCF по умолчанию не имеет состояния: вам нужно выяснить, как управлять любым состоянием, которое предполагает библиотека (у вас больше не будет одного клиента).
  • Я упоминал о безопасности?
1 голос
/ 13 июля 2010

Вам следует взглянуть на WCF Data Services, особенно в .NET 4. Хотя вам придется создавать класс или классы контекста данных, чтобы представлять ваши сущности наряду с представлением IQueryable и реализацией IUpdatable, вы можете воспользоваться вспомогательная структура, предоставляемая WCF Data Services вместе со стандартизированным протоколом (OData) для ваших полезных данных.

В .NET 4 и Visual Studio 2010 службы данных WCF становятся все более популярными, и Microsoft выдвигает их в качестве хорошего средства доступа к данным для приложений Silverlight.

Я думаю, по крайней мере, стоит проверить. В MSDN много информации об этом, хотя я не думаю, что в некоторых местах она организована очень хорошо. Вот ссылка на раздел в MSDN о развертывании собственной службы данных WCF с использованием встроенного поставщика отражений. (В примере показан только поиск данных, потому что он намного проще, чем обновление / вставка / удаление данных, но в статье есть ссылка на то, как реализовать IUpdatable.)

Получение IQueryable через WCF Data Services должно быть довольно быстрым. IUpdatable займет немного больше времени (так как вам нужно реализовать Insert / Update / Delete для каждой сущности). Но как только вы запустите его (что не должно занять слишком много времени), вы можете легко настроить параметры безопасности, добавить пользовательские методы обслуживания и добавить дополнительные функции и / или объекты. Это хорошая структура для того, что вы описываете.

Надеюсь, это поможет.

1 голос
/ 13 июля 2010

Если ваш класс - просто тупая коллекция данных, просто добавьте DataContract на него. (Не забывайте про пространство имен, в противном случае вы пинаете себя позже.) Затем вы можете открыть его, используя веб-проект.

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

...