Как заставить приложения получать доступ к моей модели без необходимости распространять через них мои DLLS-модели - PullRequest
0 голосов
/ 04 декабря 2009

У меня архитектурный вопрос. У нас много приложений в нашей компании, и мы планируем использовать ASP.NET MVC и Entity Framework в наших будущих проектах. Следующий проект, который нам нужно реализовать, - это центральная система авторизации / аутентификации. Нет возможности использовать существующий по причинам, которые сейчас не имеют значения. Эта система, вероятно, будет структурирована как услуга. Чего мы не знаем: как другие приложения узнают о «модели» этой системы авторизации / аутентификации? Я имею в виду, как они будут знать пользовательские, роли и т. Д. Классы? Какова лучшая практика? Один из наших коллег предложил создать модель структуры сущностей (.edmx) в библиотеке классов. Проблема в том, что в этом случае мы должны скопировать эту dll для всех проектов, которые получат доступ к системе авторизации / аутентификации. Это хорошее решение? У кого-нибудь есть идея получше?

Ответы [ 2 ]

3 голосов
/ 04 декабря 2009

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

Многие языки также имеют инструменты, которые автоматически генерируют оболочки класса на стороне клиента на основе WSDL-описания вашего SOAP-интерфейса (например, wsdl.exe для клиентов .NET).

0 голосов
/ 04 декабря 2009

Просто чтобы добавить к тому, что DSO уже сказал, стандартный способ сделать это - через диалоговое окно «Добавить ссылку на службу» в Visual Studio. Он запросит ваш веб-сервис, выяснит необходимые классы и поместит их в файл reference.cs. Вы также можете использовать svcutil.exe (или, если вы используете Silverlight, SLSvcUtil.exe), чтобы сделать то же самое. Вам необходимо заново генерировать файл reference.cs при каждом изменении интерфейса веб-службы, но обычно это занимает всего несколько секунд.

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

См. Также эту статью здесь о сущностях самоконтроля, доступных в EF 4.0, если это вариант для вас: http://msdn.microsoft.com/en-us/magazine/ee335715.aspx.

...