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