Как использовать SharePoint только в качестве инструмента управления контентом из настраиваемого веб-приложения?

У нас есть много специализированных веб-приложений (как внешних, так и внутренних), написанных на классических технологиях ASP и ASP.NET 2.0. Внутренние пользователи могут загружать файлы на эти веб-сайты, которые затем могут просматривать внешние пользователи. В некоторых случаях внешние пользователи также могут загружать документы. Снимок экрана № 1 дает краткое представление о существующей архитектуре.

  1. Внутренние пользователи загружают документы в custom web applications. Эти документы хранятся в структуре папок, определенной в веб-приложении.

  2. Метаданные и права пользователей, например, кто может получить доступ к документам, хранятся в SQL Server базе данных.

  3. Тот же набор документов, который загружается в custom web applications, также существует в SharePoint. Однако настраиваемые веб-приложения не знают о SharePoint. Таким образом, пользователи должны загрузить их из SharePoint, а затем загрузить в пользовательские веб-приложения. В настоящее время мы используем SharePoint 2010.

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

Снимок экрана №1:

1

На снимке экрана № 2 показана архитектура, которую я пытаюсь достичь. Я очень мало занимался разработкой SharePoint. В основном я использовал веб-службы SharePoint для получения некоторого содержимого списка, но не более того. Наши будущие пользовательские веб-приложения могут быть написаны с использованием ASP.NET MVC. Пожалуйста, найдите вопросы после скриншота.

Снимок экрана № 2:

2

Вот мои вопросы:

  1. Я хотел бы, чтобы internal users продолжал загружать и поддерживать свои документы в SharePoint. Модель безопасности пользователя уже определена в базе данных SQL Server. Эти разрешения безопасности должны быть доступны в свойствах документа SharePoint, чтобы пользователи могли выбирать, кто может просматривать документ из настраиваемых веб-приложений. Как я могу этого добиться? Должен ли я копировать информацию о разрешениях пользователя SQL Server в SharePoint?

  2. Я считаю, что SharePoint Web Services или Business Connectivity Services (BCS) могут помочь в получении документа и связанной с ним информации из SharePoint. Какой из них лучше подходит для этого сценария?

  3. Пользовательское веб-приложение должно отображать только подтвержденные версии документов. Если пользователь разрегистрировал документ в SharePoint, чтобы внести какие-либо изменения, эта извлеченная версия документа не должна быть видна внешним пользователям. Это возможно?

  4. Кто-нибудь пробовал такой подход? Есть ли подводные камни с этой моделью? Есть ли проблемы с производительностью этой конструкции?

  5. Будет ли этот дизайн помехой, если я перепишу наши существующие приложения с использованием ASP.NET MVC?

  6. Можно ли использовать функцию поиска SharePoint в настраиваемом веб-приложении (ASP.NET Web Forms / ASP.NET MVC)? Другими словами, могу ли я отправить критерии поиска из настраиваемого веб-приложения и заставить SharePoint выполнять поиск и возвращать результаты обратно в настраиваемое веб-приложение?

Я очень ценю ваш вклад.

Заранее спасибо.


person Community    schedule 05.06.2011    source источник
comment
мы обсуждали это на тренировках. Остался главный вопрос: зачем потратить 30 000 евро на использование лишь очень небольшой части огромной функциональности sharepoint, в то время как есть много других более дешевых инструментов, которые могут с этим справиться.   -  person Caspar Kleijne    schedule 05.06.2011


Ответы (1)


Вопрос 1

Сложно сказать, не располагая подробностями. Итак, я предполагаю, что в настоящее время вы используете Active Directory для своего хранилища аутентификации. Это означает, что ваш SQL Server определяет список ролей, а затем назначил этим ролям членство. Я предполагаю, что вы назначили членство пользователям или группам AD. Если это правда, то я думаю, что вы на правильном пути, продвигая свои разрешения из SQL Server в SharePoint. API SharePoint приспособит то, что вам нужно сделать, однако в SharePoint нет встроенного механизма для синхронизации изменений разрешений, так что в конечном итоге вам придется написать целый ряд встроенного кода. Я бы порекомендовал вам изучить продукты, которые могут выполнять синхронизацию за вас. Microsoft MIIS (я полагаю, что сейчас это называется Forefront Identity Management) предлагает набор архитектурных шаблонов, которые вам следует изучить.


вопрос 2

Веб-службы SharePoint или службы клиентского доступа SharePoint должны работать нормально. Я настоятельно рекомендую использовать шаблон прокси для изоляции вашего приложения от вызовов SharePoint (чтобы вы могли изолировать свое приложение от обновлений SharePoint и возможных изменений сервера управления контентом).


Вопрос 3

Да, это возможно. Если вы используете функции публикации SharePoint Server (НЕ SharePoint Foundation), у вас будет простой способ определить текущую опубликованную версию. В противном случае учетная запись службы, с которой вы запрашиваете, должна быть настроена так, чтобы она могла читать только опубликованные версии, тогда SharePoint автоматически урежет ваш запрос.


Вопрос 4

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


Вопрос 5

Нет, если вы реализуете его как уровень обслуживания. Вы просто использовали бы шаблон репозитория для вызова службы и возврата сущностей для вашей модели.


Вопрос 6

Да, поиск предоставляется через API, поэтому его также можно обернуть на уровне служб.


Удачи и не стесняйтесь обращаться ко мне напрямую для более подробного обсуждения.

person Jeff    schedule 05.06.2011