Является ли WCF хорошим вариантом для предоставления услуг Oracle Service Bus

Наша компания использует архитектуру служебной шины Oracle (OSB). Моему отделу необходимо предоставить этой OSB несколько сервисов, которые впоследствии будут использоваться различными приложениями в разных отделах и технологиях. У меня есть 7-8 приложений, и все они основаны на Microsoft (VB6, C#, SQL Server). Мой вопрос: является ли WCF хорошим вариантом для разработки наших сервисов на основе данных? Хорошо ли он интегрируется с OSB? Есть ли проблемы с интеграцией? Какова наилучшая практика и какой транспортный протокол для wcf следует использовать в этом сценарии?


person prabhats.net    schedule 12.04.2011    source источник
comment
Мой опыт подсказывает, что в случае пользовательских шин сообщений WCF начинает добавлять лишнюю сложность и накладные расходы, и быстрее и удобнее использовать API поставщика. Извините, я не могу сказать ничего конкретного о WCF и Oracle Service Bus.   -  person Andrey    schedule 13.04.2011
comment
Итак, исходя из вашего опыта, вы предлагаете лучше использовать веб-сервисы .Net на основе http? Не добавит ли wcf никакой ценности, если уже установлена ​​архитектура OSB?   -  person prabhats.net    schedule 13.04.2011
comment
Если вы хотите использовать OSB, проверьте, что Oracle предоставляет для .net. Если вы не хотите использовать OSB, используйте WCF.   -  person Andrey    schedule 13.04.2011


Ответы (2)


Я участвовал в успешных проектах по интеграции WCF с OSB с использованием SOAP/HTTP в качестве транспортного протокола.

Исходя из предыдущего опыта, следует избегать двух ключевых рисков:

  1. Архитектурное разграничение — вам нужно разобраться, где будет жить оркестровка, учитывая, что обе платформы поддерживают ее, а WCF имеет всевозможные странные и дурацкие функции, которые могут обеспечить преимущества в производительности.
  2. Интеграция безопасности — хотя обе платформы обеспечивают реализацию общих стандартов безопасности, мой опыт пару лет назад показал, что они НЕ очень хорошо сочетаются друг с другом.

Если подход заключается в WCF для обеспечения интеграции данных и OSB для обеспечения центральной точки доступа и обеспечения соблюдения (возможно, наряду с интеграцией), то это фантастика. Это четкая линия на песке.

person kevinpowe    schedule 13.04.2011

Я согласен с ответом Кевина. Из того, что я видел, WCF довольно хорошо работает с продуктами Microsoft, но не так хорошо с другими. Если вы сохраните свою реализацию службы WCF довольно простой и оставите всю тяжелую работу OSB (например, безопасность, политику, адресацию), тогда все может быть в порядке.

Еще одна ловушка, о которой следует помнить, заключается в том, что WCF связывает типы XML с собственными типами .NET. Хотя это нормально для большинства типов, одной вещью, которая вызвала у нас много головной боли, были даты. В XML вы можете иметь нулевую дату, но в .NET дата является примитивным типом, а не объектом, и поэтому умирает, когда вы пытаетесь сделать ее нулевой. Вы можете обойти это, обработав их как строки (yuk) и преобразовав в/из в своем приложении, или я считаю, что вы также можете создать пользовательскую привязку, где вы могли бы обернуть тип даты в объект DateWrapper, чтобы обслуживать нули .

Лично мне нравится, что модель служебной шины является просто фасадом для реализации, размещенной в другом месте, поэтому с этой точки зрения я не думаю, что имеет значение, какая технология используется за обложками службы, открытой для OSB.

  • Если вы хотите использовать WCF, потому что вам нравятся его функции и он хорошо интегрируется с вашими приложениями, сделайте это.
  • Если вы выбираете его только потому, что он связан с услугами и кажется, что он хорошо подходит для OSB, возможно, посмотрите, есть ли другие альтернативы, которые несут меньшие накладные расходы для вас и вашей команды разработчиков.

С точки зрения транспорта, если ваши службы данных предназначены для доступа к данным нетранзакционным способом (например, для получения сведений о клиенте), тогда SOAP/HTTP подойдет. Если вы имеете дело с транзакционными данными, рассмотрите транспорт на основе обмена сообщениями, такой как JMS или MQ, поскольку, по опыту, поддержка WS-ReliableMessaging еще не везде или непротиворечива.

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

person ChrisC    schedule 14.04.2011