zoukankan      html  css  js  c++  java
  • FastFrameWork 快速开发框架

    前言

          FastFrameWork 快速开发框架是一款基于敏捷并行开发思想和Microsoft .Net构件(插件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

          FastFrameWork 快速开发框架是适用于小型软件的一套快速开发解决方案。基于DevExpress16.1 开发,采用Ribbon UI设计风格,插件式扩展模块,配合Agile.Net数据访问组件与Agile.Net数据报表组件,能够快速的进行小型软件产品开发。

          FFW.Data.dll 是数据访问组件是支持多种主流数据库的ORM,详细介绍

          FFW.Report.dll 是数据报表组件提供报表打印、报表预览、报表设计、自定义报表数据源等二次开发功能,详细介绍

          FastFrameWork 快速开发框架项目,已经托管在开源中国码云平台(http://gitee.com/MuNet/FastFrameWork

          欢迎大家提意见,使用过程中如果有疑问或者想参与框架代码维护,请加入Agile.Net QQ交流群(10062867)。

    首先展示一下运行界面:

      

    项目代码结构:

     

    下面我们介绍一下开发案例:

    1.主界面设计

    2.插件窗体设计

     

    3.技术原理

          主界面采用Ribbon风格,通过控制反转(IOC)将配置的插件载入框架中,并将插件窗体载入到框架容器窗体MDI区,合并插件窗体的RibbonPage与RibbonControl到框架容器窗体。

    private void ribbon_Merge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
    {
        RibbonControl parentRRibbon = sender as RibbonControl;
        RibbonControl childRibbon = e.MergedChild;
        parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar);
    }
     
    private void ribbon_UnMerge(object sender, RibbonMergeEventArgs e)
    {
        RibbonControl parentRRibbon = sender as RibbonControl;
        parentRRibbon.StatusBar.UnMergeStatusBar();
    }

     4.配置文件

          每个插件可以包含多个窗体,每个窗体可以包含多个RibbonPage。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
        </sectionGroup>
      </configSections>
    
      <spring>
        <context>
          <resource uri="config://spring/objects" />
        </context>
        <objects xmlns="http://www.springframework.net">
          <description>An  example that demonstrates simple IoC features.</description>
          <!--name 必须要唯一的,type=类的全名称,所在的程序集-->
          <object name="用户管理" type="Plugin.Employee.ChildForm1,Plugin.Employee" />
          <object name="部门管理" type="Plugin.Dept.ChildForm2,Plugin.Dept" />
        </objects>
      </spring>
      
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="Lib;"/>
        </assemblyBinding>
      </runtime>
    
      <system.data>
        <DbProviderFactories>
          <remove invariant="System.Data.SQLite"/>
          <add name="SQLite Data Provider" invariant="System.Data.SQLite" description="ADO.NET Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
          <remove invariant="MySql.Data.MySqlClient"/>
          <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
          <remove invariant="Oracle.ManagedDataAccess.Client"/>
          <add name="Oracle Data Provider" invariant="Oracle.ManagedDataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess" />
          <remove invariant="IBM.Data.DB2"/>
          <add name="DB2 Data Provider" invariant="IBM.Data.DB2" description=".Net Framework Data Provider for DB2" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2" />
        </DbProviderFactories>
      </system.data>
    
      <!--数据库连接-->
      <connectionStrings>
        <add name="Default" providerName="Sqlite" connectionString="Data Source=|DataDirectory|Data.db;Version=3;"/>    
        <!--add name="Default" providerName="SqlServer" connectionString="Data Source=localHost;Initial Catalog=Agile;Integrated Security=SSPI;"/-->
      </connectionStrings>
    
    </configuration>

    5.数据访问类库的示例

    public class Business
        {
            public static DataTable GetAllGrade()
            {
                var context = new FFW.Data.DataContext();
                //方式1
                //DataTable grades = context.Select<DataTable>("ID,Class,Level").From("Grade").QuerySingle();
                //方式2
                DataTable grades = context.Script("Select ID,Class,Level From Grade").QuerySingle<DataTable>();
                return grades;
            }
            public static List<Student> GetAllStudent()
            {
                var context = new FFW.Data.DataContext();
                return context.Script("Select ID,Name,Age From Student").QueryMany<Student>();
            }
        }

    6.报表组件类库的示例

    var report = new FFW.Report.ReportEx();
    report.DataSources.Add("",Business.GetAllGrade());
    report.DataSources.Add("Student", Business.GetAllStudent());
    report.Parameters.Add("参数1",  "FastFrameWork 快速开发框架");
    report.Parameters.Add("参数2", DateTime.Now);
    report.LoadFrom(Path.Combine(Application.StartupPath, "Report", "test.frx"));
    report.Print();

    结语

    好了,通过以上简单的介绍后相信你对FastFrameWork 快速开发框架已经有一些认识了,如果你想对FastFrameWork 快速开发框架深入了解请下载完整源代码。

  • 相关阅读:
    非监督学习
    4.5_岭回归案例分析
    4.4_回归算法之岭回归
    4.3_回归性能评估与欠拟合|过拟合
    4.2_线性回归案例分析
    回归算法
    HDU 2105 The Center of Gravity (数学)
    HDU 2089 不要62 (数学)
    HDU 2036 改革春风吹满地 (数学)
    HDU 1840 Equations (数学)
  • 原文地址:https://www.cnblogs.com/MuNet/p/5740860.html
Copyright © 2011-2022 走看看