Два наших приложения - это веб-приложения с интерфейсом Flex 3 и внутренним интерфейсом WCF в стиле SOAP. Для связи с серверной частью я генерирую клиентские классы веб-службы с помощью Flex Builder 3. Все работает нормально, но поддержание этих сгенерированных классов было довольно утомительным, и я ищу лучший способ сделать что-то (без необходимости делать серьезную переписать, конечно). Вот проблемы:
- Я использую библиотеки Flex для управления компонентами, совместно используемыми приложениями. Некоторые из них зависят от сгенерированных классов, поэтому мне нужны классы, сгенерированные WSDL, в их собственной библиотеке. Flex Builder 3, однако, генерирует классы только для Flex приложения, поэтому мне приходится генерировать файлы в исходном дереве приложения, а затем каждый раз вручную перемещать файлы. Это также вызывает странные побочные эффекты, связанные с тем, как Eclipse управляет исходным кодом (почему он не может просто отслеживать FS, как это делают другие IDE?).
- Мы используем привязку данных в MXML, чтобы декларативно привязать данные к пользовательскому интерфейсу. Мне нравится привязка данных. К сожалению, классы в коде, созданном WSDL, не поддерживают привязку. Поэтому я решил создать программу для изменения классов ActionScript, добавляя к ним метаданные [Bindable]. Это нужно запускать каждый раз, когда мы регенерируем код.
- У Flex есть очень неприятная ошибка, известная по крайней мере с марта, которая до сих пор не исправлена: http://bugs.adobe.com/jira/browse/SDK-19811. Я недавно обнаружил это, потому что он дважды кодировал некоторые символы XML, такие как ‹и &, в‹ и &. Поэтому мне также пришлось добавить обходной путь для этого в программе манипулирования ActionScript.
- Генератор кода WSDL в Flex Builder создает классы String, Boolean, Int и другие, которые являются встроенными типами! Нам всегда приходится удалять эти исходные файлы, чтобы компилятор Flex не прерывал работу.
Мне кажется маловероятным, чтобы все просто мирились с этими проблемами. Должен существовать какой-то альтернативный способ создания прокси-классов веб-службы для Flex, который используют другие. Поскольку мне запрещено делать уровень связи RESTful и переписывать интерфейс в Silverlight, что вы предлагаете?