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 快速開發框架深入了解請下載完整源代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM