Нужно учитывать службы данных WCF, где вы позволяете своим сущностям быть доступными по проводам. Я не уверен, соответствует ли это вашим требованиям или желанию, но это возможно. Если вы используете Entity Framework 4 (.NET 4), то раскрыть часть вашей модели сущности с помощью WCF Data Services очень просто.
Некоторые преимущества :
- вы получаете функциональность CRUD;
- данные, предоставляемые вашему клиенту через XML или JSON;
- вы можете заблокировать действия CRUD на уровне сущности (например, выставить Заказы на полные операции CRUD, но разрешить только чтение и обновление Продуктов);
- использовать REST (например, HTTP-глаголы GET, PUT, POST, DELETE);
- согласованный формат данных OData (AtomPub);
- легко запрашивать ваши данные с помощью строки запроса (не уверен, что некоторые люди думают, что это за или против!);
- вероятно, еще несколько, что я забыл
Некоторые негативы :
- У вас нет доступа ко всем функциям WS- *, так как это WCF REST;
- На данном этапе безопасность - это нечто само собой разумеющееся - вы можете либо использовать модель безопасности существующего сайта (например, аутентификацию форм), либо вручную вставлять и читать токены из заголовков запросов. (Существуют и другие блоги о защите служб данных WCF, так что я, вероятно, пропускаю несколько пунктов здесь);
- Если вы не используете EF4, то подвергание ваших сущностей вставке / обновлению / удалению является более сложной задачей, поскольку вам необходимо реализовать интерфейс IUpdateable. Вы также должны предоставить свои объекты для чтения, предоставив метод IQueryable.
Так что я не уверен, что это то, что вы ищете, но, возможно, это что-то рассмотреть. Документация по MSDN довольно хорошая, и кажется, что она становится лучше с каждым месяцем (это было довольно редко 4-5 месяцев назад!). Также ознакомьтесь со спецификацией OData в Интернете.
MSDN для служб данных WCF - http://msdn.microsoft.com/library/cc668792.aspx
Спецификация OData - http://www.odata.org/
Блоги Пабло Кибаро , Пабло Кастро и команды службы данных (у них есть серия по аутентификации / авторизации).
Надеюсь, это поможет!