Архитектура WCF - PullRequest
       15

Архитектура WCF

2 голосов
/ 17 апреля 2009

Я занят разработкой приложения WCF. Целью приложения будет предоставление страховым участникам доступа к их страховой информации через Интернет.

Проблема заключается в нашей сетевой архитектуре, и я не совсем уверен, какой тип или комбинацию безопасности я должен использовать.

В нашей внутренней сети у нас есть среда UNIX, к которой я обращаюсь с помощью оболочки FullX .net, и у нас есть хранилище данных Oracle 10g, к которому я обращаюсь через библиотеку Enterprise.

Я создал BLL, содержащий бизнес-объекты и DAL, которые заполняют эти объекты через Enterprise Library / CompleteX.

Я создал слой служб WCF с двумя службами WCF, один для доступа к хранилищу оракулов, другой для доступа к unix, и они ссылаются на BLL.

Я собираюсь разместить эту службу в IIS на рабочем сервере с SQL 2005 внутри брандмауэра. Мы приобрели веб-сервер, для которого мы создаем DMZ, и этот веб-сервер будет взаимодействовать с рабочим сервером только через порт 443 и / или порт 80. Интернет нашей компании будет иметь доступ к веб-серверу в демилитаризованной зоне.

Уровень представления будет внешним интерфейсом ASP.Net, который вызывает службу в коде с использованием Channelfactory. Я использую клиентские сертификаты X509, которые клиент должен предоставить службе. Услуга защищена SSL. Внешний интерфейс будет на веб-сервере в DMZ.

Я использую wsHttpBinding с безопасностью транспорта и clientCredentialType = "Certificate", который работает нормально, но я хочу передать информацию для входа в службу. Я думал добавить его в заголовок сообщения.

Теперь я на этапе, когда я сомневаюсь в жизнеспособности моего дизайна. Может кто-нибудь дать мне несколько советов о том, какую привязку и безопасность я должен использовать в этом сценарии, как передать информацию для входа в систему и что я должен иметь на своем уровне презентации, чтобы быть наиболее безопасным. Мы контролируем, какие порты будут открываться через брандмауэр для внутреннего рабочего сервера. У нас будет только 1 клиент ASP.Net, размещенный на веб-сервере в демилитаризованной зоне, но только HTTPS или HTTP-доступ к производственному серверу.

Большое спасибо Райан

Спасибо

1 Ответ

1 голос
/ 17 апреля 2009

Я думаю, что ваш подход звучит нормально. Если ваши службы WCF будут использоваться только вашим внешним приложением asp.net, я бы, вероятно, подумал о размещении уровня службы в службе Windows и использовании привязки TCP (тогда вам не придется иметь дело с IIS и, возможно, без сертификатов). , Но для этого может потребоваться незначительное изменение требований к инфраструктуре (вы все равно можете использовать порт 80/443, но вы столкнетесь с другими раздражающими проблемами, связанными с использованием портов, которые обычно используются IIS). Вы можете начать с привязки IIS / HTTP и переключаться позже в любом случае с минимальным влиянием на общее приложение (в этом вся прелесть WCF).

Что касается самих сервисов, я бы также подумал о публикации 1 простого фасада поверх ваших двух репозиториев. Таким образом, ваш клиент не связывает себя с концепциями вашей oracle db и unix системы. Это спорный вопрос, однако, вы упомянули только используемые технологии, если две системы представляют разные бизнес-домены, тогда их разделение имеет смысл. Если вы разделяете их только потому, что это две разные системы, я бы попытался абстрагировать эти системы от пользовательского интерфейса.

Для передачи учетных данных я бы рекомендовал использовать политику авторизации в сочетании с утверждениями. Если вам нужна дополнительная помощь по этой теме, то вы можете найти на сайтеimumprivilege.com, если вы его еще не нашли. Вот статья , с которой можно начать

...