BizStruct - 商业架构

基于架构的富界面 Web 应用的可视化快速开发平台 www.BizStruct.cn

博客园 首页 新随笔 联系 订阅 管理
  5 Posts :: 0 Stories :: 97 Comments :: 0 Trackbacks

BizStruct - 商业架构 - 基于架构的富界面 Web 应用的可视化快速开发平台

介绍

   互联网在发展的初期,主要局限于高校和科研机构的象牙塔里,随着Web技术的出现,互联网才开始了爆炸性的发展。

   早期的 Web 技术由于存在开发效率低、可维护性差、用户操作不便捷和性能不高等缺点,主要应用于广域网这个全新的领域,相对于传统的 C/S 应用在内部网领域还不普及。

   但随着 Web 技术的发展,Web 应用相对于 C/S 应用的优势越来越明显,应用的范围也越来越广。 对早期 Web 技术不足之处,各种 Web 新技术都找到了相应的解决之道;但各种 Web 新技术采用的策略是对某一方面特别重视,从而建立起在该方面的优势, 但相对而言,其他方面则处于一定的劣势;有的技术重视可视化的开发方式,大大提高了开发的效率; 有的技术重视系统架构,抽象出了业务逻辑层,提高了系统的可维护性;还有的系统实现了富界面的客户端,提高了用户操作的便捷性; 但几乎没有技术能在各方面取得均衡,即在保持优势的同时,在其他方面也没有相对的劣势。

   我们的目标是建立一个各方面相对均衡的开发平台;基于架构是指采用了轻量级的面向数据的持久层,提高了系统的稳定性和可维护性;采用可视化的快速开发方式,提高了系统的开发效率,降低了开发的难度;富界面的 Web 客户端,在保持了 Web 应用的各项特性的同时,提高了用户操作的便捷性。这个平台适合于面向数据的、要求开发快速、部署便利和用户操作便捷的中小型系统。

轻量级的面向数据的持久层

   基于架构(Architecture)是相对于基于组件(Component,也称构件)而言的;COM是基于组件开发的代表,这种方式是对系统的纵向的划分,组件是相对独立的,依赖性小,具备完善的功能;组件是代码驱动的,每增加一个组件,需要编写大量的代码,即使可视化的开发可以自动生成大量的代码,但对这些代码维护的难度和工作量仍然很大;基于架构是对系统的横向的划分,将系统分为多层,每层只实现特定的功能,需要各层之间的相互配合才能实现完整的业务;架构是配置驱动的,增加新的功能时,只要对配置的数据进行添加即可。持久层是系统架构的核心。

   面向对象持久层的发展已经有很多年了,已有一些成熟的产品。面向对象的持久层为了实现业务逻辑,需要将数据封包为对象,性能上会有一定的损失;并且面向对象的持久层产品功能相对独立,不能满足快速开发和富界面的一些特殊要求;为此需要新开发一个满足以下要求的持久层。

   能够实现基于表格、SQL语句和存储过程的业务对象。业务对象是对数据库的屏蔽和抽象,持久层以外只能看到业务对象,看不到数据库。

   业务对象能够配置成员及成员属性,包括所对应的数据库的字段和数据类型等。为了实现快速开发和富界面,需要对业务对象及其成员进行较复杂的设置。业务对象的配置采用了 XMLSchema 标准,XMLSchema 是 XML 系列标准中关于类型定义的标准,通用性好,功能强大,可以对数据类型实现复杂的约束;通过私有的命名空间可以对 XMLSchema 进行了扩充,以满足快速开发和富界面的需要。

   能够对业务对象的记录进行分页。在业务对象的记录较多时,一次读取会带来持久层、网络和客户端较大的负载,甚至阻塞;所以持久层要支持客户端,只读取需要显示给用户的记录。

   能够一次批量的对业务对象的记录进行增加、修改和删除操作。将对业务对象指定记录的增删改操作影射到数据库表指定记录的相应操作。 持久层的接口采用 WebService 服务,可视化开发和富界面客户端都会对持久层进行调用。

富界面的Web客户端

   传统的 C/S 应用因为是胖客户端,所以也都是富界面的,用户操作很便捷。而因为是瘦客户端,所以绝大多数 Web 应用都不是富界面的,用户在每个页面只能作较少的操作,需要频繁的和服务器交互,并刷新页面,在操作较多时,效率很低。

   Internet Explorer 浏览器日益成熟,功能强大,占领了绝大多数的市场份额,特别是在企业内的桌面办公领域;所以我们不必为了浏览器的兼容性,而束缚住自己的手脚,不能施展。为此,我们在基于 Internet Explorer 浏览器的Web应用中,充分利用 Internet Explorer 的强大功能,借鉴了传统的 C/S 应用的客户端,实现了 Web 应用的富界面,提高了用户操作的便利性。

    采用 XML 文档格式的数据结构,来实现业务对象的统一存储;将业务对象存储为树型结构,实现了业务对象之间的关系;利用 XMLHTTP 技术在后台从持久层异步获取业务对象的记录,并实现了自动分页的功能,一次只获取富表格所能显示的数据;XMLHTTP 是 Microsoft 在 1999 年推出的一项异步数据访问的技术,近年,一些开放组织以 AJAX 的名称重新推出,使该技术有了更广泛的应用。

    富表格借鉴了胖客户端的数据表格,以表格的形式展现业务对象的数据,在表格内可以直接对业务对象数据进行添加、修改和删除;并根据数据的不同类型,将编辑的方式自动展现为编辑框、下拉列表框或标记框。在富表格之外,还可以对业务对象的成员进行单独的展示和编辑。

可视化的快速开发

   传统的 C/S 开发工具基本上都是采用可视化快速开发的方式,但直到Microsoft .Net的出现才真正有了Web应用的可视化快速开发。

   Visual Studio.Net提供了功能强大的控件开发能力,本系统就是通过开发控件,从而利用Visual Studio.Net实现了可视化的快速开发,而没有自己设计开发一个独立的可视化开发工具。

   本系统的开发方式就是在Visual Studil.Net下利用以下控件开发Aspx页面。

   利用业务对象控件配置需要从持久层获取的业务对象,可以设置业务对象的权限,设置业务对象之间的关系;可以选择需要下载的对象成员。

   利用富表格控件配置需要展现为数据表格的业务对象,可以设置富表格的外观属性,可以设置富表格需要显示的对象成员。

   利用对象成员控件配置需要在富表格之外,展现为可编辑控件的业务对象成员。

演示

   www.BizStruct.cn
posted on 2006-04-27 10:52 BizStruct 阅读(1570) 评论(17) 编辑 收藏

Feedback

感觉现在这些东西太多,随便看看,到处都是xx框架、xx平台
 回复 引用   

#2楼 2006-04-27 14:33 Tony Qu      
想法是好的,但客户端数据太多了,所以慢,不知道你的架构里有没有用ajax,可以考虑加loading过渡一下
 回复 引用 查看   

#3楼 2006-04-27 20:23 tansm[未注册用户]
以下个人意见,仅供参考:
首先我不看好基于 HTML 的任何技术,因为HTML的用户体验永远是个痛。
XAML、Flash和SmallClient等才是未来的方向。

 回复 引用   

#4楼[楼主] 2006-04-27 21:14 BizStruct      
楼上的各位,在批评的时候,能不能把好的产品给个连接,这样大家可以一起探讨,现在我都无法直接回复;
我们对演示,还没有详细的说明,产品的一些特色,不知道是没有被发现,还是别人做得更好,如果能指出来,我们可以一起比较。
在博客园的大都是开发人员,有些特色我们认为用一下就会了解,不必特别说明,看来是我们介绍的不够。
现在的演示,只有用户界面部分,另外还有持久层的配置,和页面的开发。就先介绍一下用户界面的特色吧。
1、可直接编辑的数据表格。
这是富界面的关键,有一些相关产品,但不多,各个产品都有自己的特色。
2、通过滚动分页
现有的产品要么是基于滚动分页的一般表格,要么是基于页码分页的富表格;希望能有人介绍一个通过滚动分页的富表格。
3、基于 XMLSchema 标准
支持 XMLSchema 数据类型,和Facet,Pattern,Enumeration等。
4、固定值的选择
这个功能比较普及,但我们的配置更简单,定义 XMLSchema 数据类型的时候,指定 Enumeration 即可。
5、查阅数据的选择
就是外键值的选择,也比较普及,我们是用 Select 实现的,反应速度很快。
6、子表数据动态下载
只有选择主表记录的时候,子表数据才被下载;但这也是在广域网上速度慢的主要原因。
7、一次更新
不论是多少级的主子表,都可以一直编辑,直到全部完成后,一次更新。
8、充分利用XML系列标准
XSLT 和 XmlSchema 用的人很多,但可能很少有人用 XmlSchema 来生成 XSLT。为什么要这么做呢?每个业务对象都需要XMLSchema,但不可能给每个业务对象都编写 XSLT,只能先写一个 XSLT 模板,然后为每个 XMLSchema 生成相应的 XSLT。
9、基于 XSLT 的表格刷新
用 XSLT 的方式刷新表格比 DOM 的方式快得多。通过滚动表格即可看出

 回复 引用 查看   

#5楼[楼主] 2006-04-27 21:24 BizStruct      
对前面批评系统太慢的几位,解释一下:
在局域网的速度是非常快的。现在慢有三个原因:
一、服务器是电信网络,网通访问比较慢。
二、是共享主机,一台服务器上会有很多虚拟主机,如果有一个大负荷的,其他的就被拖累了。等我们能托管一台主机,这个问题就能解决。
三、是网络延时,特别是在主子表的页面,点一下主表的记录,就要到服务器读相应子表的记录,虽然每个只读一次,但感觉会很慢。如果只有单表,感觉会快很多。我们的演示要改为以单表为主。

当然,性能还是要不停的优化的。

 回复 引用 查看   

#6楼 2006-04-28 08:54 世玉[未注册用户]
“演示”部分的左边菜单在firefox下无法显示
 回复 引用   

#7楼[楼主] 2006-04-28 09:33 BizStruct      
@Reader
这位的意见还中肯,不过我们的看法不全一样。
1、软件的价值不会因为他是Dll或Exe,而有所不同,Windows的核心就是由Dll组成的。这位太看不起 Dll 了,所有的 WebService 都是 Dll,被你一棍子打死了。所有的层都被你改名成库了。
2、对平台的概念,我们有很大不同,我们的产品是应用开发平台,而.Net太基础了,如果他被称作平台,那没有别的产品有资格称作平台。
他有对操作系统的抽象,平台有必要吗?
他有自己的编程语言,平台有必要吗?
.Net 除了微软,没人能开发,平台有必要吗?
.Net 本质上是操作系统的抽象加上开发工具,只有构建在它上面的才能叫平台。
3、我们的产品核心是富界面,他不是几个控件就能实现的,他涉及到多个层的配合,他需要展现层的 JavaScript 控件,设计层的 .Net 控件,持久层的数据配置才能实现。我们数据定义用的是 XMLSchema,按自己的要求做了扩充;为了实现富界面,我们有自己的多层架构。如果仅仅是控件或库,能有自己的多层架构吗?
4、当初因为没有自己的开发工具,我们也在平台和框架的名称中犹豫过。我们之所以没有设计自己的开发工具,一是因为Visual Studio的控件开发完全能满足我们的需要。二是既使我们做了,也会远远不如 Visual Studio 的,何必吃力不讨好。


 回复 引用 查看   

#8楼[楼主] 2006-04-28 09:38 BizStruct      
怎么回事,刚才删了一个垃圾广告贴,结果有一个回复被删了,只好从通知邮件里复制一下

re: BizStruct - 商业架构 - 基于架构的富界面 Web 应用的可视化快速开发平台
=====================================

楼主,我觉得你自己没有搞明白,什么叫平台。不是把一些组件集在一起就叫平台了的。你这个东西叫控件库好了,持久层叫持久化库好了。不就是几个DLL吗?
开发平台?.Net这样的才叫开发平台,有基础结构(framework)、开发工具(vs.net)、服务器产品(sps、biztalk。。。)等。你不一定要做的.Net这么大,但也不是说你搞自己DLL组和在一起就成一个开发平台的。

=====================================
作者: Reader

 回复 引用 查看   

#9楼[楼主] 2006-04-28 09:40 BizStruct      
@世玉
这位看一下系统要求,需要 IE 6.0

 回复 引用 查看   

#10楼 2006-04-28 10:22 progame      
界面我觉得挺好看的 不过速度确实太无法接受了
另外关于数据有效性实时校验,多列参照 计算公式等 如果有这些功能的话
希望能够在演示中展现 毕竟这些都是应用中必不可少的

还有就是如果我的参照数据太大 怎么办? 比如说有10W条

日期列操作的友好性我觉得很不好

 回复 引用 查看   

楼主这个咚咚有没有试用版下载?
比较感兴趣的说

 回复 引用   

#12楼[楼主] 2006-04-28 10:42 BizStruct      
@progame
难得是一个没批评的;现在我们只是演示了界面,所以希望大家多对界面发表意见。架构和设计方面,我们会尽快演示的。

数据的校验,只有在输入焦点离开时校验,输入过程校验还没有想到好的方法。
多列参考,建议尽量在数据库设计时把他解决,我们将来会提供树型的下拉框。
计算公式,现在提供获取和更新数据时,基于SQL的表达式。客户端计算公式,还要等等才能提供。
参照数据大有两种方法,一种是分页下载,下拉框的滚动条到底部,才下载新的数据。另一种是过滤,先在下拉框中的编辑框输入,然后按下拉按钮,则显示过滤后的内容

 回复 引用 查看   

#13楼[楼主] 2006-04-28 10:43 BizStruct      
@笨笨小新
我们会尽快提供,现在主要先把界面方面完善一下,

 回复 引用 查看   

#14楼 2006-04-28 13:35 Reader [未注册用户]
可能是我的表达能力不好吧,我觉得楼住你没有明白我的意思。
我不是看不起DLL,我也不是说你一定要做到.Net那样。我的意思,不是几个组件,或者不是一个简单的框架就可以叫平台的。
Windows是操作系统这个层次的平台,SQL Server是数据库这个层次的平台,.Net是应用基础结构这个层次的平台。你如果自己做平台,当然和它们不会是一个层次,而是在它们之上。但是,既然是平台,它应该有一定的样子,你看看Windows、SQL Server、.Net,它们都从运行、开发、管理等等方面提供了一整套的内核、工具、服务、接口甚至标准。不知道这样说你明白我的意思没有?
平台只是个名字,不是说你一定要把产品叫什么名字。但你的叫法代表了你对产品的定位,这个很重要。

 回复 引用   

#15楼[楼主] 2006-04-28 14:59 BizStruct      
@Reader
你的这个帖子的内容我基本赞同。
说说我们的想法,我们觉得平台的发展方向应该多元化,大而全的复杂系统,自己有开发工具,自己有建模工具,几乎是个封闭的系统。投入也是非常大的,如果能有大笔的投资,当然能做;可结果是,建模工具肯定比不上Power Design 或 Visio。开发工具肯定比不上 Visual Studio。
如果象我们没有太大的实力,完全自己投入,就不能做了吗?关键看你要达到什么目标。如果能实现自己的目标,代价越小越好。
我们的目标第一是富界面,不但客户满意度高,而且能回避很多问题。以前 C/S 下作东西多简单,现在 B/S 下为什么难多了,因为客户端的功能太差,必须要服务器的支持。现在富界面可以自己和服务器交互数据了。
第二个目标是数据库的抽象,数据库应用有很一大部分就是简单的单表操作。可在.Net下,你必须为每个表手工或自动生成 SQL 语句,作起来完全是重复劳动,并且可维护性很低。我们现在在持久层把数据库屏蔽了,SQL 语句都自动生成了,没有代码也就不需要维护。当然也支持手工的 SQL 语句。
第三个目标是快速开发,借用 Visual Studio 的威力,我们实现了 Web开发 的所见即所得;这一点连 Visual Studio 自己都没做。
微软为了 .Net 的通用性和灵活性,没有自己的应用服务器,不是微软做不到,而是因为产品的思想或策略,没有做;我们做一个轻量级的持久层,能解决数据库应用很大的工作量。
一个产品不是包括的东西越多越好,而是看他解决问题的能力。
我们规划的模块有已完成的展示界面、开发控件、持久层,另外还有待开发的权限、工作流和报表。
还有一点我们的所有的配置工具都是用自己的系统开发的,一方面是验证自己的系统,另一方面确实是因为他方便。我们几乎没有一个可执行文件。
当初就是因为没有开发工具,我们内部一直叫框架;在最后阶段才改成平台;因为我们认为他解决问题的能力并不比其他平台逊色。
如果第三方有现成的工具,我们一般不会再开发了,除非我们能做得更好,或者实现起来很经济。

 回复 引用 查看   

不错,我喜欢,虽然还不成熟,但很有潜力。
推出产品后 ,我第一个购买。

 回复 引用   

#17楼[楼主] 2006-05-30 10:26 BizStruct      
@tinywang
多谢支持,希望能多提建议,以利我们改进。

 回复 引用 查看