Java富客戶端企業(yè)應(yīng)用框架發(fā)布

          基于Java富客戶端的數(shù)據(jù)庫應(yīng)用難于開發(fā),難在哪里:界面開發(fā)是個大麻煩,如何快速方便的開發(fā)界面?
          如何處理界面的數(shù)據(jù)綁定?如何方便的與服務(wù)器端通訊?如何部署客戶端?這些基本的問題阻礙了Java富客戶端數(shù)據(jù)庫應(yīng)用的推廣,soyframework的出現(xiàn)對這些問題和企業(yè)應(yīng)用的各個方面問題給出了完善的解決方案。

          1.如何快速方便的開發(fā)界面?
           使用awt/swing來開發(fā)界面是比較麻煩的一件事情,基本上有兩種方法:
           a.手工編寫代碼設(shè)定布局管理器和繪制界面,這就要求開發(fā)人員對Swing的布局管理機制和控件非常的熟悉,難度較大。b.使用IDE提供的輔助設(shè)計界面的功能,主流IDE如:JBuilder,Eclipse的VE插件,NetBeans都有提供,其中NetBeans的界面設(shè)計功能無疑是最好的,但會生成大量的繪制界面代碼,用戶基本不能維護,只能靠NetBeans來維護。
          soyframework摒棄傳統(tǒng)的界面開發(fā)方式,使用組件化的方法開發(fā)界面,客戶端提供大量的表示層組件和控件,極大的方便了界面的開發(fā),用戶只需使用框架提供的組件和調(diào)用API,框架會自動布局控件繪制界面。用戶無需依靠任何插件在快速開發(fā)的同時不失靈活性。
          表單開發(fā)的代碼示例:
              ModelForm form = new ModelForm(Orders.class);//構(gòu)造訂單表單
              String hqlCS = "from ChainStore c where c.code like ?";
              
          //往表單加入文本控件,維護流水號
              form.appendWidget(new Text(0,"serialNO").setReadOnly(true));
              
          //往表單加入外鍵控件,維護所屬門店
              form.appendWidget(new Foreign(0,"chainStore",
                          hqlCS,
          "code,name","name"));
              
          //往表單加入日期時間控件,維護最遲配送時間
              form.appendWidget(new DateTime(0,"deliveryTime",true));
                  
              form.appendWidget(
          new Text(1,"customerName",true));
              form.appendWidget(
          new Text(1,"customerAddress",true));
              form.appendWidget(
          new Text(1,"customerPhone",true));
              
          //    往表單加入下拉框,維護訂單狀態(tài)
              form.appendWidget(new List(2,"orderState",
                          OrderState.values(),
          true));
              
          //往表單加入數(shù)字控件,維護重量體積
              form.appendWidget(new Decimal(2,"quantity"));
              form.appendWidget(
          new Decimal(2,"weight"));

           以上代碼將生成如下表單:


           表格開發(fā)的代碼示例:  
          BaseHqlTable table = new BaseHqlTable(HqlTablepage.this, Orders.class) {
                  
          //配置表格按鈕動作
                  @Override
                  
          protected BaseTableAction[] getAddationalActions() {
                      
          return null;
                  }
                  
          //指定表格查詢的HQL語句,將訂單按照流水號升序排列
                  @Override
                  
          public String getHql() {
                      
          return "FROM Orders o ORDER BY o.serialNO ASC";
                  }
                   
          //配置需在表格中顯示的訂單的屬性
                  @Override
                  
          public Column[] getColumns() {
                      
          return new Column[]{
                          createColumn(
          "serialNO"),
                          createColumn(
          "createdUser"),
                          createColumn(
          "customerName"),
                           
          //訂單狀態(tài)列,使用枚舉格式化器
                          createColumn("orderState",new
                           Formatter.getEnumFormat(OrderState.values())),
                          createColumn(
          "quantity"),
                          createColumn(
          "weight"),
                          createColumn(
          "volumn"),
                          createColumn(
          "chainStore.name"),
                           
          //生效日期,使用日期格式化器
                          createColumn("activedDate",
                           Formatter.getDateFormat()),
                           
          //最遲配送時間,使用日期時間格式化器
                          createColumn("deliveryTime",
                           Formatter.getDatetimeFormat()),
                          createColumn(
          "deliveried"),
                          createColumn(
          "remarks"),
                      };
                  }
                  
              };
              table.showDefaultButton  
          = false;
              table.showScrollBar 
          = true;

            以上代碼將生成如下表格:

          2.如何處理界面的數(shù)據(jù)綁定?
          傳統(tǒng)使用PB,Delphi,VB等工具在開發(fā)數(shù)據(jù)庫應(yīng)用時如果想插入一條記錄,無非是千篇一律的遍歷表單中所有的控件獲得最終用戶的輸入,拼接SQL語句,在客戶端直接連接數(shù)據(jù)庫,執(zhí)行SQL語句,修改記錄時需要將數(shù)據(jù)查詢出來然后將數(shù)據(jù)綁定到對應(yīng)的控件中。使用java開發(fā)也不例外。
          soyframework提出新解:soyframework分為服務(wù)器端和客戶端兩部分,服務(wù)器端使用Spring+hibernate的輕量級架構(gòu),在客戶端只需調(diào)用IModel ormMappingModel = ModelForm.triggerCommit()將表單的輸入值綁定到業(yè)務(wù)對象(ORM映射對象)中,調(diào)用Server.store(ormMappingModel)即可將業(yè)務(wù)對象序列化到服務(wù)器端保存。修改時調(diào)用ModelForm.bindModel(IModel ormMappingModel)將業(yè)務(wù)對象輕松綁定到表單進行修改。極大的方便了數(shù)據(jù)綁定。
          3.如何方便的與服務(wù)器端通訊?
          soyframework底層使用Spring極力推薦的httpinvoker來遠程調(diào)用服務(wù)器端方法,經(jīng)soyframework封裝后在客戶端調(diào)用服務(wù)器端方法如同調(diào)用本地方法。
          4.如何部署客戶端?
          soyframework使用java web start來啟動客戶端,啟動客戶端時自動檢測客戶端是否安裝JRE,如果沒有安裝會自動為客戶端下載并安裝JRE客戶端。需升級客戶端時只需在服務(wù)器端將客戶端的依賴包更新,客戶端便會自動更新,盡量做到客戶端的零部署。
          以上問題的解決為Java富客戶端的數(shù)據(jù)庫應(yīng)用掃清了障礙,但是一個完整的企業(yè)應(yīng)用框架需要解決的問題遠不止這些,表現(xiàn)層開發(fā),業(yè)務(wù)邏輯開發(fā),報表,權(quán)限,日志,國際化,部署等一個都不能少,而這一切soyframework都給出了完善的解決方案。
          Java富客戶端企業(yè)應(yīng)用框架在線演示中心:http://www.soyframework.com

          posted on 2008-03-05 14:57 knight-glory-ggg 閱讀(4126) 評論(1)  編輯  收藏

          評論

          # re: Java富客戶端企業(yè)應(yīng)用框架發(fā)布 2011-11-29 20:02

          請問soyframework那里還有下載,官網(wǎng)打不開了  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          主站蜘蛛池模板: 溆浦县| 邯郸市| 九江县| 福建省| 临洮县| 阿克陶县| 大庆市| 漳浦县| 化德县| 静安区| 和顺县| 稷山县| 色达县| 民勤县| 林州市| 页游| 临澧县| 溧阳市| 平江县| 澜沧| 三门县| 景宁| 井冈山市| 渭源县| 武宁县| 铅山县| 谢通门县| 阿城市| 古田县| 塔城市| 东光县| 额尔古纳市| 昂仁县| 吉隆县| 台东县| 广河县| 瑞丽市| 武冈市| 章丘市| 忻州市| 乐东|