Differences between revisions 2 and 29 (spanning 27 versions)
Revision 2 as of 2004-08-14 03:27:42
Size: 697
Editor: Zoom.Quiet
Comment:
Revision 29 as of 2009-12-25 07:14:51
Size: 10005
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
-- hd [[[DateTime(2004-08-14T01:17:55Z)]]]
[[TableOfContents]]
{{attachment:ottertwo.gif}}

开发团队:[[Zoom.Quiet]]、[[zhaoxin]]、[[HD]]

-- hd [<<DateTime(2004-08-14T01:17:55Z)>>]
<<TableOfContents>>
Line 12: Line 16:

||<rowspan=2> {{http://groups-beta.google.com/groups/img/groups_medium_zh-CN.gif}}|||| '''Woodpecker.Otter'''||
||[[http://groups-beta.google.com/group/OtterWoodpecker|阅览讨论组文档]]||at [[http://groups-beta.google.com/|groups-beta.google]]||

== 目标 ==
面对Twisted 完善的网络应用开发框架组织,我们灵机一动,将 Twisted 最典型,最基础也最灵活的 二进制流TCP 传输应用,通过简单的XML模板来自动生成,将会极大的规范化,标准化,可控制化网络应用的快速开发!

== 子项目 ==
 * [[/OtterBase]] 二进制流通讯框架
 * [[/OtterTool]] 二进制流通讯协议、报文、应用框架工具
 * [[/OtterTemplet]] 以Python脚本为解析目标的易用模板模块
Line 15: Line 31:
= 开发知识 =
 * [[http://www.webwareforpython.org/Papers/Templates/|Python-based Template Packages]] -- Python 的模板模块
 * '''XML'''的大量应用!
   * [[http://220.248.2.35:7080/share/zqupload/tutorials/XML/|XML学习资料收集]]
     * [[http://220.248.2.35:7080/share/zqupload/tutorials/XML/XMLandUsage/|XML语言及其应用]]ppt
     * [[http://220.248.2.35:7080/share/zqupload/tutorials/XML/using.xml.schema.(2001)/Front%20matter.htm|using.xml.schema]].(2001)
     * [[http://220.248.2.35:7080/share/zqupload/tutorials/XML/The%20XML%20Schema%20Complete%20Reference%20(2002)/Front%20matter.htm|The XML Schema Complete Reference]](2002)
Line 16: Line 39:
= 子项目 =
 * otter 二进制流通讯框架
 * ottertool 二进制流通讯协议、报文、应用框架工具
= 使用手册 =
 * [[XMLSpyHowto]] -- 强力XML.XSL.XSLT等等设计开发环境!
Line 20: Line 42:
= TODO List =
 * 为otter加入变长字段的支持
 * 为otter tools寻找一个最为合适的模板方法
 * 为otter tools寻找一个最为合适好用且通用的xml解析工具
 * otter tools的IDE嵌入开发
 * otter tools支持生成文档的功能

= 发布 =
 * [[http://cvs.woodpecker.org.cn/cgi-bin/viewcvs.cgi/?cvsroot=otter#dirlist|CVS仓库]]
== Otter下载 ==
 * [[/OtterDownload]] -- 下载说明
= 讨论·广告 =
 * '''精巧的思想,简单的表现,丰富的应用!'''
 * '''Otter! 快速架设稳定网络应用大坝的 水獭 !'''
 * otter与otter tools的关系及实现讲义 [[attachment:otter_and_tool_0821.ppt]]
 * 建议使用 RELAX NG 来更加精确的验证 XML, 提供伪脚本工具,通过类似Py 风格的脚本来自动生成合理的 XML,这样当 Otter Schema 升级时,也更加容易兼容原先的 XML!
{{{
Otter script--(OtterXML builder)-->Otter XML --(Otter engine)--> Twisted Python acript
}}}

= Otter核心 =
== 高负载网络的流量控制 ==
 Otter的灵魂在于她的应用, 而流量控制非常重要.
 先贴一些参考资料~~
 ABR流量控制中的变结构控制器 [[http://www.jos.org.cn/1000-9825/14/562.htm]]
 二进制流量控制算法的性能分析 [[http://www.jos.org.cn/1000-9825/14/612.htm]]
 
= Otter技术路线讨论 =
''1.0a阶段的反思''
 * 040821 经过一周的快速开发,基本实现最简单的Otter 目标;
 * 其中也发现了进一步的需求,与问题;特此重新思考下一阶段的开发
== XML设计 ==
'''咳咳!作了才知道,XML不经过精巧的设计,使用时真的会非常的难受....'''
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-eleatt/|何时使用元素,何时使用属性]]
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-think25.shtml|Harold 的高效 XML 设计原则]]
 * ..... IBM 的XML专栏中有专门的介绍,我们需要时间来消化应用哪!先如此,让 Otter 跑起来吧!


== XML解析 ==
 * 根据 [[http://wiki.woodpecker.org.cn/moin.cgi/Otter#head-a30129d4bc6dd8578b7d39e170fbb97b09a1afcc|todolist]] 的精神,重点应该是好用!而不是通用!
   * 应该,通用的不一定好用;
   * 好用的现在不一定是通用的;以后也说不定!
=== Python中XML的处理 ===
'''分析现在针对XML数据库,Py视野中的处理思路'''
==== 直接使用Py实现W3C建议XML处理 ====
 * minidom
 * pulldom
 * expat
 * SAX
 * PyXML 集合包
 * ...
==== 将XML的数据直接映射到Py类型数据中 ====
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-matters/part11/index.shtml|gnosis.xml.objectify]]
   * 即,对象化XML树!以Py 看方式,然后就可以开始神奇的Py魔术!
==== 借用其它语言的威力 ====
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-matters/part16/index.shtml|4Suite]] 的 cDomlette(Ft.Xml.Domlette)用 C 语言构建 DOM 树,避免了使用 Python 回调
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-matters/part29/index.shtml|RXP 解析器]] ...pyRXP 和 LT XML,这两者利用了 RXP 速度上的优势,但又避免了 RXP 的复杂性
==== 超越限制的解决 ====
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-matters/part14/index.shtml|HaXml 编程模型]]
   * DOM 将 XML 每一样都融入到面向对象编程(OOP)框架中,在比其他任何专门编程语言更高的抽象层次上。DOM 是语言无关的,并且其“文档对象模型”是由许多通用编程语言的库提供的。在某种意义上,DOM 是语言 — 它指定了所有的方法和参数 — 而基本通用语言只不过是一点胶水。我的实用程序 xml_objectify, 曾在前面的专栏文章中讨论过,提供了一种将 XML 文档转换为更自然感觉的“OOP 化”对象(在 Python 中)的方法,主要是为了回应有点人造感觉的 DOM。
   * SAX 在其语言中性上与 DOM 相似,但它用事件驱动和过程化模型取代了 DOM 的 OOP 框架。SAX 在将 XML 文档作为流处理的能力上有非常好的特性,即根据遇到的每个元素和内容来进行处理。但随着其事件驱动原理带来了 SAX 的缺点,即没有由 XML 文档表示的数据结构的实际概念。我们可以在一个具体的应用程序中构建这样的结构,但即使如父/子这样简单的事物都必须以 SAX 库下面的编程语言的词汇表进行表示;SAX 本身对 XML 的大部分事情几乎一无所知。
   * XSLT 是,从某种意义上说,与 XML 的结构最匹配的常见技术。可以反映这种匹配的是,XSLT 文档本身就是 XML 文档实例。XSLT 是一种专门功能编程语言,允许您指定将 XML 文档转换成其它形式(特别是,但不仅是,转换成其它 XML 文档)。XSLT 除了有些冗长外,它的表达力也有所限制 — 您可说的事情可以清楚地表达(是功能地,不是过程地),但您很快增加许多无法简单地在 XSLT 中表示的事情。

-------
 * [[http://www-900.ibm.com/developerWorks/cn/xml/x-matters/part28/index.shtml|ElementTree]]
   * 回避矛盾,以不完全的解决方式,来获得最大效益!

=== Otter的XML处理 ===
 * 综上,以及Otter的配置XML的特点:
   * 不会太大;
   * 不要求创建处理;
   * 不会反复读取;
 * Otter 的XML解析处理的原则应该是:
   * 快捷;
   * 轻量级别;
   * 代码简单,容易理解;
==== ElementTree的理由 ====
 * 是支持DOM 解析的所有Py 解析包中最快的
 * 足够清晰,简单;
 * 足够轻量!只有一个文件,可以单独包含在/OtterTool发行中
==== 未来的选择 ====
 * 根据/OtterBase的进化,如果目标代码复杂到一定程度,可惜考虑其它解析包
 * 而且XML解析包的选择是于模板解析解决方案紧密关联的,不应该分别考虑

== 模板实现 ==
'''根据个人开发感受,整理模板实现思路'''
 * [[Otter/OtterTemplet]] -- 专门讨论页面

== 目标结构 ==
 * 仓促启动,模块的目录,文件约定都是在开发中变动者,现在应该统一下来:
   * 注意!:
     * '''+--otterSample 目标代码示例文件目录'''
     * '''+--otterTemplet 模板文件存放目录'''
{{{]tree OtTool
+--doc epydoc 自动组织的API 文档
| +--api
| | +--epydoc.css
| | +--index.html
| | +--....
| +--CHANGES
| +--html
| +--LICENSE
| \--README
+--OtTool.py 主调用入口类
+--OtXML.py XML解析类,处理Otter 配置 XML 文件
+--OtCUI.py Otter Tools Commend User Interface;命令行用户界面;用以处理各种命令行的响应操作
+--OtFiler.py 文件伺候包;专门用以进行文件,目录的操作
+--OtTemplet.py 模板解析包,现在为空类,由继承的类实际运行式 操作
+--OtTDict.py 字典匹配式模板解析类
+--OtTXML.py XML标签驱动模板解析类
+--timer.py 运行时间记录工具包
+--otterTemplet 模板文件存放目录
| +--lib
| | +--messages
| | | +--bytemsg.py
| | | +--pcon-pmsg.py
| | | +--scon-pmsg.py
| | | \--__init__.py
| | +--protocols
| | | +--byteprotocol.py
| | | +--pcon-p.py
| | | +--scon-p.py
| | | \--__init__.py
| | \--__init__.py
| +--gnsc.py
| \--gnsd.py
+--otterSample 目标代码示例文件目录
| +--lib
| | +--messages
| | | +--bytemsg.py
| | | +--gnspmsg.py
| | | +--usspmsg.py
| | | \--__init__.py
| | +--protocols
| | | +--byteprotocol.py
| | | +--gnsp.py
| | | +--ussp.py
| | | \--__init__.py
| | \--__init__.py
| +--ussc.py
| \--ussd.py
+--web 预备的CGI 接口目录
+--xml 预备的 Otter XML Schema 和示范 XML文件
| +--ottertools.xsd
| \--uss.xml
\--__init__.py

}}}

Otter 水獭(基于twisted的高速、可扩展性二进制流框架)

ottertwo.gif

开发团队:Zoom.QuietzhaoxinHD

-- hd [2004-08-14 01:17:55]

前言

Otter的来源是在为PyUSS书写测试程序时的小框架,因为在网络应用中会大量使用基于TCP的二进制流通信,所以将这个小框架正式变为一个独立的项目,成为以后相关应用的开发基础。

http://groups-beta.google.com/groups/img/groups_medium_zh-CN.gif

Woodpecker.Otter

阅览讨论组文档

at groups-beta.google

目标

面对Twisted 完善的网络应用开发框架组织,我们灵机一动,将 Twisted 最典型,最基础也最灵活的 二进制流TCP 传输应用,通过简单的XML模板来自动生成,将会极大的规范化,标准化,可控制化网络应用的快速开发!

子项目

  • /OtterBase 二进制流通讯框架

  • /OtterTool 二进制流通讯协议、报文、应用框架工具

  • /OtterTemplet 以Python脚本为解析目标的易用模板模块

开发基础

  • python 跨平台、易使用的开发语言
  • twisted 基于python的高可用性、高可扩展性、高性能的网络框架

开发知识

使用手册

  • XMLSpyHowto -- 强力XML.XSL.XSLT等等设计开发环境!

TODO List

  • 为otter加入变长字段的支持
  • 为otter tools寻找一个最为合适的模板方法
  • 为otter tools寻找一个最为合适好用且通用的xml解析工具
  • otter tools的IDE嵌入开发
  • otter tools支持生成文档的功能

发布

Otter下载

讨论·广告

  • 精巧的思想,简单的表现,丰富的应用!

  • Otter! 快速架设稳定网络应用大坝的 水獭 !

  • otter与otter tools的关系及实现讲义 otter_and_tool_0821.ppt

  • 建议使用 RELAX NG 来更加精确的验证 XML, 提供伪脚本工具,通过类似Py 风格的脚本来自动生成合理的 XML,这样当 Otter Schema 升级时,也更加容易兼容原先的 XML!

Otter script--(OtterXML builder)-->Otter XML --(Otter engine)--> Twisted Python acript

Otter核心

高负载网络的流量控制

Otter技术路线讨论

1.0a阶段的反思

  • 040821 经过一周的快速开发,基本实现最简单的Otter 目标;
  • 其中也发现了进一步的需求,与问题;特此重新思考下一阶段的开发

XML设计

咳咳!作了才知道,XML不经过精巧的设计,使用时真的会非常的难受....

XML解析

  • 根据 todolist 的精神,重点应该是好用!而不是通用!

    • 应该,通用的不一定好用;
    • 好用的现在不一定是通用的;以后也说不定!

Python中XML的处理

分析现在针对XML数据库,Py视野中的处理思路

直接使用Py实现W3C建议XML处理

  • minidom
  • pulldom
  • expat
  • SAX
  • PyXML 集合包
  • ...

将XML的数据直接映射到Py类型数据中

  • gnosis.xml.objectify

    • 即,对象化XML树!以Py 看方式,然后就可以开始神奇的Py魔术!

借用其它语言的威力

  • 4Suite 的 cDomlette(Ft.Xml.Domlette)用 C 语言构建 DOM 树,避免了使用 Python 回调

  • RXP 解析器 ...pyRXP 和 LT XML,这两者利用了 RXP 速度上的优势,但又避免了 RXP 的复杂性

超越限制的解决

  • HaXml 编程模型

    • DOM 将 XML 每一样都融入到面向对象编程(OOP)框架中,在比其他任何专门编程语言更高的抽象层次上。DOM 是语言无关的,并且其“文档对象模型”是由许多通用编程语言的库提供的。在某种意义上,DOM 是语言 — 它指定了所有的方法和参数 — 而基本通用语言只不过是一点胶水。我的实用程序 xml_objectify, 曾在前面的专栏文章中讨论过,提供了一种将 XML 文档转换为更自然感觉的“OOP 化”对象(在 Python 中)的方法,主要是为了回应有点人造感觉的 DOM。
    • SAX 在其语言中性上与 DOM 相似,但它用事件驱动和过程化模型取代了 DOM 的 OOP 框架。SAX 在将 XML 文档作为流处理的能力上有非常好的特性,即根据遇到的每个元素和内容来进行处理。但随着其事件驱动原理带来了 SAX 的缺点,即没有由 XML 文档表示的数据结构的实际概念。我们可以在一个具体的应用程序中构建这样的结构,但即使如父/子这样简单的事物都必须以 SAX 库下面的编程语言的词汇表进行表示;SAX 本身对 XML 的大部分事情几乎一无所知。
    • XSLT 是,从某种意义上说,与 XML 的结构最匹配的常见技术。可以反映这种匹配的是,XSLT 文档本身就是 XML 文档实例。XSLT 是一种专门功能编程语言,允许您指定将 XML 文档转换成其它形式(特别是,但不仅是,转换成其它 XML 文档)。XSLT 除了有些冗长外,它的表达力也有所限制 — 您可说的事情可以清楚地表达(是功能地,不是过程地),但您很快增加许多无法简单地在 XSLT 中表示的事情。


  • ElementTree

    • 回避矛盾,以不完全的解决方式,来获得最大效益!

Otter的XML处理

  • 综上,以及Otter的配置XML的特点:
    • 不会太大;
    • 不要求创建处理;
    • 不会反复读取;
  • Otter 的XML解析处理的原则应该是:
    • 快捷;
    • 轻量级别;
    • 代码简单,容易理解;

ElementTree的理由

  • 是支持DOM 解析的所有Py 解析包中最快的
  • 足够清晰,简单;
  • 足够轻量!只有一个文件,可以单独包含在/OtterTool发行中

未来的选择

  • 根据/OtterBase的进化,如果目标代码复杂到一定程度,可惜考虑其它解析包

  • 而且XML解析包的选择是于模板解析解决方案紧密关联的,不应该分别考虑

模板实现

根据个人开发感受,整理模板实现思路

目标结构

  • 仓促启动,模块的目录,文件约定都是在开发中变动者,现在应该统一下来:
    • 注意!:
      • +--otterSample 目标代码示例文件目录

      • +--otterTemplet 模板文件存放目录

{{{]tree OtTool +--doc epydoc 自动组织的API 文档 | +--api | | +--epydoc.css | | +--index.html | | +--.... | +--CHANGES | +--html | +--LICENSE | \--README +--OtTool.py 主调用入口类 +--OtXML.py XML解析类,处理Otter 配置 XML 文件 +--OtCUI.py Otter Tools Commend User Interface;命令行用户界面;用以处理各种命令行的响应操作 +--OtFiler.py 文件伺候包;专门用以进行文件,目录的操作 +--OtTemplet.py 模板解析包,现在为空类,由继承的类实际运行式 操作 +--OtTDict.py 字典匹配式模板解析类 +--OtTXML.py XML标签驱动模板解析类 +--timer.py 运行时间记录工具包 +--otterTemplet 模板文件存放目录 | +--lib | | +--messages | | | +--bytemsg.py | | | +--pcon-pmsg.py | | | +--scon-pmsg.py | | | \--init.py | | +--protocols | | | +--byteprotocol.py | | | +--pcon-p.py | | | +--scon-p.py | | | \--init.py | | \--init.py | +--gnsc.py | \--gnsd.py +--otterSample 目标代码示例文件目录 | +--lib | | +--messages | | | +--bytemsg.py | | | +--gnspmsg.py | | | +--usspmsg.py | | | \--init.py | | +--protocols | | | +--byteprotocol.py | | | +--gnsp.py | | | +--ussp.py | | | \--init.py | | \--init.py | +--ussc.py | \--ussd.py +--web 预备的CGI 接口目录 +--xml 预备的 Otter XML Schema 和示范 XML文件 | +--ottertools.xsd | \--uss.xml \--init.py

}}}

Otter (last edited 2009-12-25 07:14:51 by localhost)