我们的两个应用程序是具有 Flex 3 前端和 SOAP 样式 WCF 后端的 Web 应用程序。为了与后端通信,我通过 Flex Builder 3 生成 Web 服务客户端类。一切正常,但维护这些生成的类非常烦人,我正在寻找一种更好的方法来做事(不必做主要的重写,当然)。问题如下:
- 我使用 Flex 库来管理应用程序之间共享的组件。其中一些依赖于生成的类,因此我需要在它们自己的库中使用 WSDL 生成的类。然而,Flex Builder 3 仅为 Flex 应用程序 生成类,因此我必须在应用程序的源代码树中生成文件,然后每次都手动移动这些文件。这也引入了 Eclipse 管理源代码的方式的奇怪副作用(为什么它不能像其他 IDE 那样只监视 FS?)。
- 我们使用 MXML 中的数据绑定(bind)以声明方式将数据绑定(bind)到 UI。我喜欢数据绑定(bind)。不幸的是,WSDL 生成的代码中的类不支持绑定(bind)。因此,我选择创建一个程序来更改 ActionScript 类,向它们添加 [Bindable] 元数据。每次我们重新生成代码时都必须运行它。
- Flex 有一个非常严重的错误,至少从 3 月份就知道了,但仍未修复:http://bugs.adobe.com/jira/browse/SDK-19811 .我最近发现了这一点,因为它将一些 XML 字符(如 < 和 &)双重编码为 < 和 &。因此,我还必须为此向 ActionScript 操作程序添加一个解决方法。
- Flex Builder 中的 WSDL 代码生成器创建 String、Boolean、Int 和其他内置类型的类!我们总是不得不删除这些源文件,以防止 Flex 编译器有时出现问题。
在我看来,每个人都只是忍受这些问题似乎不太可能。必须有一些替代方法可以为其他人正在使用的 Flex 生成 Web 服务代理类。由于时间不允许我将通信层设为 RESTful 并在 Silverlight 中重写前端,您有什么建议?
最佳答案
您可以使用多种机制中的一种将 WSDL 读入程序并生成您需要的任何 flex 代码。
- 您可以使用两个 ServiceDescription 类之一来读入 WSDL 并根据对象模型检查其内容;
- 您可以在 Visual Studio 中使用 T4 模板,通过一些自定义工作将 WSDL 公开给模板(可能通过 ServiceDescription 类,如上所述)
- 您可以使用 XSLT 将 WSDL 转换为您喜欢的代码
- 您可以编写一些独立的程序来读取 WSDL(作为 XML 或对象模型),然后只为您的代理代码发出您想要的文本。
底线是,如果您在使用自动化工具时遇到问题,那么有一些实用的方法可以创建您自己的工具。
关于wcf - 从 WSDL for Flex 3 创建可绑定(bind)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991274/