<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>BizTalk and around : AQ</title><link>http://blogs.technet.com/stanko/archive/tags/AQ/default.aspx</link><description>Tags: AQ</description><dc:language>ru</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>WCF адаптер для очередей Oracle AQ</title><link>http://blogs.technet.com/stanko/archive/2008/11/20/wcf-oracle-aq.aspx</link><pubDate>Thu, 20 Nov 2008 14:05:53 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3156902</guid><dc:creator>yaroslav</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stanko/comments/3156902.aspx</comments><wfw:commentRss>http://blogs.technet.com/stanko/commentrss.aspx?PostID=3156902</wfw:commentRss><description>&lt;p&gt;Продолжая &lt;a href="http://blogs.technet.com/stanko/archive/2008/11/18/biztalk-wcf-lob-adapter-sdk.aspx"&gt;предыдущий пост&lt;/a&gt;, поделюсь опытом разработки транзакционного WCF адаптера для очередей Oracle Advanced Queuing (AQ). &lt;/p&gt; &lt;p&gt;&lt;b&gt;Предыстория&lt;/b&gt;  &lt;p&gt;Перед нами (&lt;a href="http://www.microsoft.com/services/microsoftservices/default.mspx"&gt;MCS&lt;/a&gt;) возникла задача показать возможность интеграции информационных систем построенных на Oracle с помощью BizTalk. В силу многих причин было принято решение не использовать хранимые процедуры и не подключаться к таблицам напрямую, а передавать данные в виде отдельных сообщений через очереди Oracle. Одним из требований была возможность гарантированной доставки, чтобы данные не удалялись из источника пока не попадут в следующее надежное хранилище, но и не попадали в следующие хранилище пока не удалятся из источника. Проще говоря, передача данных должна осуществляться в рамках транзакции.  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/stanko/WindowsLiveWriter/WCFOracleAQ_C633/clip_image002_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="129" alt="clip_image002" src="http://blogs.technet.com/blogfiles/stanko/WindowsLiveWriter/WCFOracleAQ_C633/clip_image002_thumb.jpg" width="646" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Для решения этой задачи нужно было найти существующий или разработать собственный адаптер, который бы умел подсоединяться к AQ и забирать данные внутри транзакции объединяющей источник данных (в данном случае AQ) и BizTalk MessageBox. На момент выбора адаптера для Oracle AQ у партнеров Microsoft уже существовали адаптеры умеющие работать с Oracle AQ, но все они имели некоторые ограничения, например отсутствие поддержки транзакций. Поэтому было принято решение разработать свой адаптер с помощью &lt;a href="http://www.microsoft.com/biztalk/technologies/wcflobadaptersdk.mspx"&gt;WCF LOB Adapter SDK&lt;/a&gt;.  &lt;p&gt;&lt;b&gt;Разработка адаптера&lt;/b&gt;  &lt;p&gt;Для решения задачи взаимодействия с AQ было рассмотрено множество вариантов, вот некоторые из них:  &lt;ul&gt; &lt;li&gt;JMS – нужен адаптер для JMS, подтверждение возможности транзакционной передачи получено не было.  &lt;li&gt;SOAP – дополнительное звено и необходимость развертывания веб-сервера на стороне базы данных. Транзакционность тоже под большим вопросом.  &lt;li&gt;PL\SQL через ODP.NET – нужна установка Oracle Client и ODP.NET. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;В итоге единственным приемлемым вариантом удовлетворявшим большинству требований оказался PL\SQL, который предоставляет простые команды для работы с очередями AQ, а ODP.NET предоставляет прозрачный интерфейс для работы с .NET транзакциями.  &lt;p&gt;После выбора способа взаимодействия дальнейшая реализация WCF адаптера заняла минимальное кол-во времени, включая поддержку транзакций и выгрузку метаданных для использования в BizTalk решении. Это говорит не столько об опытности Microsoft Consulting Services :), сколько о простоте инструментария WCF LOB Adapter SDK. Так что если перед вами стоит задача подключения к одной из унаследованных систем, или системе для которой ни у Microsoft ни у партнеров нет адаптера, вы можете написать его самостоятельно, это не так сложно как может показаться.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3156902" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/stanko/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.technet.com/stanko/archive/tags/Oracle/default.aspx">Oracle</category><category domain="http://blogs.technet.com/stanko/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://blogs.technet.com/stanko/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.technet.com/stanko/archive/tags/AQ/default.aspx">AQ</category></item></channel></rss>