利用套接字机制实现Flash和数据库连接(3)

2008-04-02 11:02:03来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



  在Java应用程式中的实际研发中的套接字读和写一般是在一个单独的线程中执行的;一旦收到一个连接请求并且一个到客户的连接被打开,该连接的处理应该被单独于main线程(现在他正在等待另一个连接的打开)执行。这可能会增加Java编码的复杂性;因此在本文中,我在ActionScript中使用了"欺骗"方式并且打开/关闭该连接,而避开了处理Java多线程问题。然而,必须注意到在实际应用程式中,为了减少和打开TCP/IP连接相关的网络性能问题,有可能需要实现一种全双工连接的会话。

  然而,最大的挑战还在于,处理各种不加限制的输出(这可能来自于从前端提交的查询结果)。一真正的查询工具将使用一种很复杂的协议来格式化查询输出(例如,SQL Server使用一种名为Tabular数据流的内部协议,他向客户"描述"由服务器发送的响应),这已超出了本文所及的范围。为此,我仅实现一个简单的返回消息-每个记录的第一列以<Return>标签封尾。这个响应可能是个数据库记录集,一个返回代码或一条消息;具体应视发送的SQL命令而定。一实际的应用程式将需要使用一组复杂的XML标签来嵌入响应并且在前端实现同等复杂的逻辑以解码这条消息。

  然而,一个实践中的Flash应用程式,可能不希望处理各种各样的数据库服务器响应。例如,您可能仅仅需要得到一个用户的最高分和一些用户选择。在这种情况中建立一种有意义的协议将相当简单。

  五、 限制

  实现本文示例模型的最大的挑战是,需要客户应用程式了解由服务器应用程式从数据库返回的元数据(结构)信息。然而,典型情形下将包含一个Flash应用程式-他仅提交到数据库的一有限数量的查询并且得到一有限数量的响应,这样能够使得ParseReturn函数的大小和复杂性适中。事实上,在本文开始提到的另一些数据库连接方法确实需要程式员定义要被交换的消息的XML模式,因此不能回避描述要被接收的数据。

  通讯容量是另外一个限制因素:一个强壮的需要回答很多客户调用的服务器应用程式可能需要使用多线程、连接池及其他高级技术。

  另外,在Flash应用程式和Java应用程式之间的通讯安全很重要的:我的示例程式中发送了有可能被"偷窥"的未加密数据。一个实际的应用程式在经由套接字发送数据之前需要对之进行加密。

  六、 建立环境

  您能够把该Java应用程式安装在和数据库服务器相同或不同的机器上。为了启动该Java应用程式,您必须在DOS下执行这个命令(见本文所附源代码中的launch.bat文档):

  set CLASSPATH=.;%CLASSPATH%;C:/Program Files/Microsoft SQL Server 2000 Driver for

  JDBC/lib/mssqlserver.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC

  /lib/msutil.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msbase.jar;

  java oSckSvr

  注意 这个命令的重点部分是MS SQL Server到JDBC驱动程式的路径。

  对于有很少Java经验的研发者来说,建立研发环境可能有点小困难。我使用了显示在图2中的目录结构。我建立我的Eclipse环境从而把Java二进制文档复制到\bin子目录下,如图3所示。图4和5展示了该应用程式建立一个到数据库的连接并接收一个响应。

  
利用套接字机制实现Flash和数据库连接

  图2.Java应用程式目录结构:这个屏幕快照显示了作者的源码目录结构。


  
利用套接字机制实现Flash和数据库连接

  图3.Java应用程式目录结构:这个屏幕快照显示了作者的在Eclipse中的二进制文档和启动程式文档(launcher)的目录结构。


  作者注:您能够从微软的站点下载相应于SQL Server的JDBC驱动程式。

  
利用套接字机制实现Flash和数据库连接

  图4.连接到数据库:这个快照中显示的是正在建立一个到SQL Server的连接。


  
利用套接字机制实现Flash和数据库连接

  图5.查询和响应:SQL Server收到来自图4的查询并且发送他的响应。


  为了允许Flash客户下载来自Java应用程式的响应(假如这两个程式不是位于同一个域上的话),在web服务器上需要有一个跨域的XML策略文档。更多细节,请参考Flash帮助。

  总之,尽管和一个数据库的典型通讯在Flash中并不象在其他研发环境中那样直接,但是他也能够借助于一个"中介"(例如,使用JDBC或ADO协议来访问数据库的应用程式)来实现。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Excel转成Flash

下一篇: 一些动作的简单解析5:起身