求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
构建基于AgileEAS.NET应用开发平台的简单应用程序
 

2010-09-30 作者:CallHot 来源:CallHot的blog

 

一. 摘要

首先非常感谢各位朋友的大力支持,我会努力的写好本系列,本系列主要是以我在使用AgileEAS.NET应用开发平台中经验的总结,个别认识不足之处还请大家多批评指出,我就先选择一个简单的应用来看看如何使用AgileEAS.NET应用开发平台,从开发者角度,能够快速上手开发出自己想要的应用,究竟这个平台能给我们的开发带来什么样的开发成果,能为我们提供什么样的解决方案,可能这是我们最关心的。

闲话,之前写的部分文章可能条理性也不是特别清楚,特别参考博客园部分大牛的组织形式来书写,通过清晰的文章结构,不但能让自己写文章的时候思路清晰,更能为看到这篇文章的朋友理解我讲解的目的,这就是最好的结果啦。

二. 本文提纲

  • 1.摘要
  • 2.本文提纲
  • 3.AgileEAS.NET应用开发平台回顾
  • 4.准备工作
  • 5.第一个简单程序
  • 6.经典的程序+数据库模式
  • 7.本文总结
  • 8.源码下载

三. AgileEAS.NET应用开发平台回顾

AgileEAS.NET应用开发平台自动提供了ORM技术,代码生成器工具,基本的权限管理功能[中级讲解],基本的系统配置管理[中级讲解],系统缓存功能、快速的业务开发,统一版本发布,快速的程序部署,智能客户端等工具。

AgileEAS.NET应用开发平台作为一个应用平台,已经封装了底层相关代码功能,平台采用插件化的敏捷开发思想,不断的迭代,将新开发的模块功能集成到平台中去,通过对模块的权限管理,完成对模块的配置。

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

四. 准备工作

AgileEAS.NET安装包下载了完整的组件包之后,该程序包中基本上包含了AgileEAS.NET平台的所有的组件DLL,程序中只要引用相应的Dll就能使用该组件提供的功能。

主要的程序集名称及功能如下:

EAS.Data.dll 主要提供数据访问的服务内部集成ORM服务的相关功能,可用来二次开发。

EAS.Kernel.dll 该组件提供了平台底层的相关服务例如:序列化,加密,安全,集合等其他服务。

EAS.Logger.dll 该组件提供了功能强大而丰富的日志管理的服务。

EAS.Session.dll 该组件提供了客户端与服务器交互的上下文回话资源管理服务。

EAS.IOCContainer.dll 该组件提供了系统运行时的容器服务,包括平台本身的服务提供给运行在容器中的系统服务,也包括插件的服务管理,生命周期,权限等等。

更多。。。请点击下载相应的组件使用说明使用文档.CHM下载

目前我们构建的简易程序将主要基于EAS.Data.dll,EAS.Kernel.dll ,EAS.Session.dll ,EAS.IOCContainer.dll 来完成基本的程序功能。

五. 第一个简单程序

  我们这里讲解的实例都是2010的解决方案,但是看看代码其实都是都是.net framework2.0版本的,所以大家可以放心使用,不会有版本的问题,我这里是因为只有2010目前。

一、新建一个工程,引入这几个dll。EAS开头的这四个核心Dll。

  image

上篇我们将结果如何通过代码生成器来生成Model与数据访问层的代码,具体的业务代码并没有生成。

如果还不知道如何使用ORM模型设计器请看:第一章:ORM设计工具的使用。

如果使用代码生成器生成的代码与自己写的ORM代码有些区别的地方在于,代码生成器生成的文件的组织结构不同。

如下图:

image

这是代码生成器生成的代码,里面有个文件夹Generat,里面的文件与具体的类名之间的关系是通过partial关键字区分。意思就是说,Generat文件夹中的每个类都与跟目录下的类文件一一对应,我们来举个例子看看类文件的内容有什么不同吧

image 

我们已IProduct为例吧,与之对应的是

Generat文件夹中IProduct.Generator.cs

IProduct.Generator.cs中代码的内容:一般包含具体的实体信息代码

public partial interface IProduct:EAS.Data.ORM.IEntity

{

  /// <summary>
  /// 记录编号 。
  /// </summary>
  int Idn
  {
get;
set;
  }

  /// <summary>
  /// 产品编码 。
  /// </summary>
  string Code
  {
get;
set;
  }

  /// <summary>
  /// 产品名称 。
  /// </summary>
  string Name
  {
get;
set;
  }

  /// <summary>
  /// 产品规格 。
  /// </summary>
  string Spec
  {
get;
set;
  }

  /// <summary>
  /// 大包装 。
  /// </summary>
  string Bigunit
  {
get;
set;
  }

  /// <summary>
  /// 小包装 。
  /// </summary>
  string Smallunit
  {
get;
set;
  }

  /// <summary>
  /// 包装规格 。
  /// </summary>
  int Packrulr
  {
get;
set;
  }

  /// <summary>
  /// 说明 。
  /// </summary>
  string Description
  {
get;
set;
  }
   }

IProduct.cs中的代码

/// <summary>
/// 实体接口 IProduct(Product)。
/// </summary>
public partial interface IProduct
{
}

由此可见这是AgileEAS.NET应用开发平台一个设计的技巧之处,以后为该业务实体添加相应的业务代码时,IProduct.Generator.cs与IProduct.cs修改的内容是分离的,虽然只是物理文件上的分离

image

这是我自己手写的代码工程文件:

public interface IProduct : EAS.Data.ORM.IEntity
   {
   }

当然就没有那么多文件了,但是所有的东西都要自己写。具体的写法与代码生成器中的写法基本类同。数据访问层的代码类同,不过这里面有个需要注意的地方,就是所有的业务实体类在定义实体时,必须定义一个与该实体相对应的实体表,默认情况下,查询统计等功能都是基于这个实体表来实现的。

如何在实体表中定义查询方法呢?这个我想大家都明白,肯定是在接口中定义查询方法,然后实现层实现这个查询方法,在业务实现的时候,就可以调用相应的查询方法去实现相关的业务功能。

这一步主要是完成接口层与业务层之间的实体基本信息与相关的业务操作方法。

二、如何实现自己的查询业务。

上面简单介绍了如何定义自己的查询方法,下面我就一步步的演示如何来做。

例如我再Iproduct实体对应的IproductList实体表上新建一个查询方法GetList()可以没有参数,没有返回值,默认情况下为void。因为这种情况下,默认返回的是系统提供给实体的一个默认List列表,该列表是个DataTable的形式,可以通过foreach循环来循环表中的实体。实体都是对应一个DataRow。

我们来看一般情况,就是有查询条件的查询方法的定义。

  /// <summary>
  /// 没有返回值
  /// </summary>
  void GetList(string name,int classID);//产品名称,产品分类进行检索,没有返回值,默认提供LIST集合。

image

condition是AgileEAS.NET应用开发平台提供给开发人员一个通用的WHERE条件类,该类中提供了丰富的方法。详细您在使用的过程中会慢慢的发现其中的奥秘。 condition.AddElement("数据库列名", "参数名", EAS.Data.ORM.ElementType.EqualTo);每个方法都有相应的说明。

最终的代码形式如下:

image

这里只是演示如何基于实体表书写查询方法。

三、书写UI层,调用已有的业务代码,完成简单业务功能。

image

直接带代码中书写业务代码:

image

上面都有详细的代码注释说明,相信大家都能看明白。

其他的业务代码的形式就和大家平时书写的业务代码的形式相同。

四、除了查询之外的相关操作【添加、编辑、删除】。

image

例如以产品编辑为例:

image

这里已大家最常见的窗体间传值来做下面是实体的相应操作:

image

具体的详细代码,请下载相应源码。源码最后提供下载。

六. 程序模式配置

image

上图中的生命周期的解释有误,singleon的意思代表单例的意思。

七. 本文总结

这篇文章讲的概念也不是很多,但是作为基础篇,也希望大家能引起注意,因为没有它,我们后面的相应教程也无从谈起。通过这篇文章,我们必须要对这个平台有一个感性和理性的认识。最重要的是要认清他的使用方法及这个平台给我带来的相应帮助,当然今天的例子也只是平台开发应用中的的最简单的一个实例,但是我们要养成思考的习惯,比如其他的开发平台中的做法是怎么样的开发模式,而自己在项目过程中又是什么样的开发模式,开发平台给我们做程序的过程中带来了什么,改进了什么,或者您认为对目前这个开发平台有更好的意见和建议都可以提出来,当然由于本人才疏学浅,可能很多地方没有讲清楚,如果有误之处还希望各位能够批评

指正!

希望对该平台感兴趣的朋友们,可以有个简单的认识,深刻的认识请持续关注。

八. 源码下载

这里只是提供项目的使用中的简单实例,具体的业务代码并没有书写,大家如果想更深入的了解使用,请持续关注本系列,本系列将会越来越深入的讲解具体的使用。

源码下载

更多平台文档

更多链接

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

AgileEAS.NET官方网站

敏捷软件工程实验室

AgileEAS.NET平台官方交流QQ群:116773358 作者:CallHot 出处:http://www.cnblogs.com/hegezhou_hot/
关于作者:专注于微软平台项目架构、管理和企业解决方案。熟悉设计模式、极限编程、架构设计、敏捷开发和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。如有问题或建议,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过hegezhou_hot@163.com  联系我,非常感谢。 其他联系方式: 系统架构交流群:9105332



使用decj简化Web前端开发
Web开发框架形成之旅
更有效率的使用Visual Studio
MVP+WCF+三层结构搭建框架
ASP.NET运行机制浅析【图解】
编写更好的C#代码
10个Visual Studio开发调试技巧
更多...   


.NET框架与分布式应用架构设计
.NET & WPF & WCF应用开发
UML&.Net架构设计
COM组件开发
.Net应用开发
InstallShield


日照港 .NET Framework & WCF应用开发
神华信息 .NET单元测试
北京 .Net应用软件系统架构
台达电子 .NET程序设计与开发
赛门铁克 C#与.NET架构设计
广东核电 .Net应用系统架构
更多...