2011年8月26日

 

介绍

      AgileEAS.NET应用开发平台,简称EAS.NET,是基于敏捷并行开发思想以及.NET构件技术而开发的一个应用系统快速开发平台,用于帮助中小型软件企业建立一条适合快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的,AgileEAS.NET应用开发平台包含基础类库、资源管理平台、运行容器、开发辅助工具等四大部分,资源管理平台为敏捷并行开发提供了设计、实现、测试等开发过程的并行,基于AgileEAS.NET平台的应用系统的各个业务功能子系统,在系统体系结构设计的过程中被设计成各个原子功能模块,各个子功能模块按照业务功能组织成单独的程序集文件,各子系统开发完成后,由AgileEAS.NET资源管理平台进行统一的集成部署。

       AgileEAS.NET应用开发平台也是为应用信息系统开发而提供的一组低层功能集合及开发支撑平台,应用信息系统的开发建立在此平台之上,采用构件式、可复用开发,节省开发成本,加快开发速度,在软件开发上更好的作到多快省。

       AgileEAS.NET平台的核心思想是包含两点,一是基于DotNET构件技术的插件式开发,二是基于敏捷并行开发方法以的构件并行,即应用系统的构件(模块)同步并行开发,由平台进行总装集成。

起源

      2004年我们做一个农业系统的项目,当时我们开发上没几个人,.NET应该刚刚应用于公司不久,以当时的技术力量根本不可能按期交付,所以我们想到了把某部分模块外包给其他公司。

      作为一个新的尝试和创新,我们在对项目进行了自顶向下的细分,把项目分为子系统,子系统分解子系统和模块,模块做为不可细分的业务功能,以模块为计量单位进行分包。各模块相互独立的进行开发,开发完成后进行集成、测试。

      为了适合这种创新,我们要求模块的开发要遵守一定的约定,即一种契约;我们还需要一个能集成、管理和调用这些模块的一套应用程序,即平台。这样就形成了一种平台+模块(插件)架构。

      为此,我们按此思路开发了EAS.NET的最初版本,包含模块的所遵守的接口和一套能够管理、调用模块的WinForm应用程序,当然,最初版本也提供了基于账号、角色与模块之间的权限管理部分以极一部分基础函数库。

      这就是AgileEAS.NET的最早起源,也是EAS.NET的支撑思想“并行开发”的基础。

结构

      以上文字简单的对EAS.NET起源及理念做了一个简单的介绍,从以上文字我们知道,EAS.NET平台的核心理念涵盖两个方面,第一方面是基于一种软件工程的实践,插件模块独立并行开发和总装集成的一种思路,第二方面则是利用.NET技术(反射调用)实现了这种思想。由此可知EAS.NET应该包含以下四部分内容:第一、软件过程工程的支持,第二、插件标准与平台(运行容器),第三、插件的组织及管理,第四、支持插件快速开发的技术及工具。

image

      上图是AgileEAS.NET平台的架构简图,也许看第一眼也不甚明白,我会在后面专门就AgileEAS.NET架构做详细解释,下面我把各部分简要说明一下。

      插件契约定义了一组插件开发的接口,实现这些接口的模块可以被运行容器调用,并可以被资源管理平台所管理。

      基础类库是一组用于支持快速开发插件模块的基础组件库,包含IOC、ORM、AOP、UDA、Session等基础类库。

      服务容器实现了一个服务插件运行容器,可以动态的调用服务插件,服务插件是实现了插件契约的企业服务组件。

       分布式通信/传输服务基于消息技术实现了支持分布式开发所需要的数据通信支持,目前支持传输基础数据类型及ORM组件。

       插件运行容器是一组能实现插件调用的一组应用程序,它能实现加载插件并依据权限执行插件的业务功能,目前实现了WinForm、SmartClient、WebForm、ActiveXForm四件插件运行容器。

       资源管理平台是基于插件运行容器的一组插件集合,业务功能包含集成、管理、组织插件、管理账户及角色以及基于插件/角色(账户)的权限机制,目前,资源管理平台基于WinForm、SmartClient、ActiveXForm运行容器基于实现。

       项目管理工具提供基于“并行开发”这种模式的项目管理工具。

       辅助工作是一组用于支持快速开发插件模块的基础应用工具,包括插件调试环境、ORM设计器、代码生成器、报表系统等。

       AgileEAS.NET自2004年起应用于诸多MIS项目,我也一直忙于生计,没有想去过推广,只是一直在慢慢的完善,很多时间很想写点东西,但一直都没有去写,最近无事在家休息,就整理了一下这些东西,发到博客园和大家探讨和交流。

       我会坚持把这东西写的能让大家明白,在以后的文章中,我会分别将各部分进行详细听介绍,在适当的时候提供给大家下载,也希望大家支持和拍砖。

 

QQ群:15118502

链接:AgileEAS.NET之敏捷并行开发方法

敏捷软件工程实验室

 

 

posted @ 2011-08-26 03:43 蓝箭GZ 阅读(23) 评论(0) 编辑


2008年11月25日

 

     2G内存,GF8600GT显示卡,但玩游戏FFOW(战火之源)时好卡,声音也断断续续,后装软件Fraps2.9.6汉化版,在游戏中测试得帧速率为10-13帧左右,所以好卡。将游戏设置中的显卡选项设置“极低”,都无太大改善。

     后发现XP系统中的虚拟内存设置为最小2000MB-最大2000MB,后将虚拟内存禁用,重启电脑后,进入游戏测试,帧速率已跃升为26-30帧左右,基本保持平均20帧左右,效果好明显,如果大家有同样问题的可以试下这个方法。

 

          

posted @ 2008-11-25 17:38 蓝箭GZ 阅读(347) 评论(1) 编辑


2008年11月21日

posted @ 2008-11-21 12:32 蓝箭GZ 阅读(251) 评论(0) 编辑

posted @ 2008-11-21 12:28 蓝箭GZ 阅读(81) 评论(0)  编辑


2008年10月3日

共分三部分:

 

一、主程序:index_json.asp

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<link rel="stylesheet" type="text/css" href="ext2/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="ext2/examples/examples.css" />  
<script type="text/javascript" src="ext2/adapter/ext/ext-base.js"></script>  
<script type="text/javascript" src="ext2/ext-all.js"></script>
<script type="text/javascript" src="ext2/source/locale/ext-lang-zh_CN.js"></script>
 
<script type="text/javascript">
 

Ext.onReady(function(){  

//定义表头
var cm = new Ext.grid.ColumnModel([
    {header:'学号',dataIndex:'Stu_id'},
    {header:'姓名',dataIndex:'Stu_name'},
    {header:'性别',dataIndex:'Stu_sex'},
 {header:'生日',dataIndex:'Birthday'},
 {header:'电话',dataIndex:'Phone'},
    {header:'地址',dataIndex:'Address'},
 {header:'class_id',dataIndex:'Class_id'}
]);
cm.defaultSortable = true;


//从后台取由jsondata.asp动态生成的json格式数据
var proxy=new Ext.data.HttpProxy({url:'jsondata.asp'}); 
          var reader=new Ext.data.JsonReader(  
            {
  totalProperty:'mytotal',       //记录总数
        root:'root',  
        id:'Stu_id'          
            },[  
                {name: 'Stu_id'},  
                {name: 'Stu_name'},  
                {name: 'Stu_sex'},   
                {name: 'Birthday'},  
                {name: 'Phone'},  
                {name: 'Address'},             
                {name: 'Class_id'}             
            ])  
    //构建Store     
        var ds=new Ext.data.Store({  
          proxy:proxy,  
          reader:reader  
       });  
    //载入  
 
ds.load({params:{start:0,limit:15}}); //向后以传入参数并开始取数据  


//显示数据
var grid = new Ext.grid.GridPanel({
 stripeRows: true,
    el: 'mydiv',
    ds: ds,
    cm: cm,
 height :450, // 高度
 width:Ext.get("mydiv").getWidth(),
 title :'学员信息表', // 表格的标题
 bbar: new Ext.PagingToolbar({
        pageSize: 15,
        store: ds,
        displayInfo: true,
        displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
        emptyMsg: "没有记录"
    })
});

grid.render();
 

});
</script>


</head>

<body>

<div id='mydiv' style="width:720px"></div>

</body>
</html>

 

二、后台程序

jsondada.asp

 

 

<!-- #include file=conn.asp -->
<!-- #include file=jsonclass.asp -->
<%
set json = new jsonclass
json.sql = "select * from student"
json.root = "student"
response.charset="utf-8"
'取得客户端传过来的开始记录号和每页记录数
start = cint(request("start"))
limit = cint(request("limit"))

'start = 100
'limit = 20
'输出从start开始到start+limit(类中已加入判断,如果start+limit大于总记录数,就输出到最后一条记录为止)的json格式的所有记录!
response.Write((json.getjson(start,limit)))

%>

 

 

三、asp生成json格式文字的类

jsonclass.asp

 

 

<%
'---------------------------------------
' jsonclass类
' 将select语句的执行结果转换成json
'
'json标准格式:

'{mytotal:100,root:[{"id","123","name","张三"},{"id","456","name","李四"}]}
'
'或
'
'{mytotal:100,root:[{id,"123",name,"张三"},{id,"456",name,"李四"}]}
'
'------------------------------------------
class jsonclass
' 定义类属性,默认为private
dim p_sqlstring ' 用于设置select
dim p_root ' 返回的json对象的名称
dim rs,conn

private sub class_initialize()
sqlstring = ""
json = ""
'初始化conn和rs
call initconn(conn)
call initrs(rs)
end sub

private sub class_terminate()
'清除conn和rs
call clearconn(conn)
call clearrs(rs)
end sub

' 可以外部调用的公共方法
public function getjson(x,y)

dim rs
dim returnstr
dim i
dim onerecord
dim start
dim limit
dim mycount
dim json
dim ls
start=x
limit=y

'计算记录总数
set rs88= server.createobject("adodb.recordset")
rs88.open sql,conn,1,1
mycount=cint(rs88.recordcount)
'response.write(mycount)
rs88.close
set rs88=nothing

'判断start+limit是否大于记录总数
ls=cint(start)+cint(limit)
if ls>=mycount then
ls=mycount
end if

' 获取数据
set rs= server.createobject("adodb.recordset")
rs.open sql,conn,1,1

' 生成json字符串
if rs.eof=false and rs.bof=false then
json=cstr("{mytotal:"& mycount & ",root:[")
   
for i = start+1 to ls
rs.absoluteposition=i     '将记录指针移到i--记录开始的位置

'读取记录中的各列数据
onerecord="{"
for j=0 to rs.fields.count -1
onerecord=onerecord & chr(34) & rs.fields(j).name&chr(34) &":"
if j=rs.fields.count-1 then  '是最后一列,就不加逗号
onerecord=onerecord & chr(34) & rs.fields(j).value&chr(34)
else
onerecord=onerecord & chr(34) & rs.fields(j).value&chr(34) &","
end if

next
onerecord=onerecord & "}"

'去除最后一条记录后的","
if i <> ls then
            onerecord =onerecord + ","
        end if

'------------
json=json & onerecord
next
json = json +"]}"

'返回json格式字串
getjson=json
end if
end function

 

 

'私用方法,在类中使用
private function check()

end function

'数据库操作
sub initconn(conn)
set conn=server.createobject("adodb.connection")
conn.mode=3
conn.open connstr
end sub

sub clearconn(conn)
conn.close
set conn=nothing
end sub

sub initrs(rs)
set rs=server.createobject("adodb.recordset")
end sub
sub clearrs(rs)
set rs=nothing
end sub

public property get sql
sql = p_sqlstring
end property

public property let sql(value)
p_sqlstring = value
end property

public property get root
root = p_root
end property

public property let root(value)
p_root = value
end property
'
end class
%>

 

四、其它

conn.asp 数据库连接

最后调试成功。如图:

 

 

参考文章:

Ext2.0框架的Grid使用介绍

 

posted @ 2008-10-03 23:00 蓝箭GZ 阅读(795) 评论(1) 编辑


2008年9月8日

posted @ 2008-09-08 02:02 蓝箭GZ 阅读(868) 评论(1) 编辑


2008年6月9日

posted @ 2008-06-09 16:35 蓝箭GZ 阅读(1219) 评论(0) 编辑


2008年5月31日

posted @ 2008-05-31 11:49 蓝箭GZ 阅读(635) 评论(1) 编辑


2008年5月24日

摘要: ◎Vbs脚本编程简明教程之一—为什么要使用Vbs?在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排...阅读全文

posted @ 2008-05-24 21:36 蓝箭GZ 阅读(2674) 评论(2) 编辑

posted @ 2008-05-24 21:26 蓝箭GZ 阅读(516) 评论(0) 编辑


posts - 25, comments - 70, trackbacks - 0, articles - 2

Copyright © 蓝箭GZ