三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了“高內聚,低耦合"的思想。
1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。
3、數據訪問層(DAL):該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等。
注:(內聚:一個模塊內各個元素彼此結合的緊密程度;耦合:一個軟件結構內不同模塊之間互連程度的度量)
優缺點
優點:
1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利于標準化;
5、利于各層邏輯的復用。
6、擴展性強。不同層負責不同的層面,如PetShop可經過簡單的配置實現Sqlserver和oracle之間的轉換,當然寫好了也可以實現B/S與C/S之間的轉換
7、安全性高。用戶端只能通過邏輯層來訪問數據層,減少了入口點,把很多危險的系統功能都屏蔽了。
8、項目結構更清楚,分工更明確,有利于后期的維護和升級
缺點:
1、降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼
3、增加了代碼量,增加了工作量
三層架構是:
一:界面層
界面層提供給用戶一個視覺上的界面,通過界面層,用戶輸入數據、獲取數據。界面層同時也提供一定的安全性,確保用戶不用看到不必要的機密信息。
二:邏輯層
邏輯層是界面層和數據層的橋梁,它響應界面層的用戶請求,執行任務并從數據層抓取數據,并將必要的數據傳送給界面層。
三:數據層
數據層定義、維護數據的完整性、安全性,它響應邏輯層的請求,訪問數據。這一層通常由大型的數據庫服務器實現,如Oracle 、Sybase、MS SQl Server等。
------
從開發角度和應用角度來看,三層架構比雙層或單層結構都有更大的優勢。三層結構適合群體開發,每人可以有不同的分工,協同工作使效率倍增。開發雙層或單層應用時,每個開發人員都應對系統有較深的理解,能力要求很高,開發三層應用時,則可以結合多方面的人才,只需少數人對系統全面了解,從一定程度工降低了開發的難度。
三層架構屬于瘦客戶的模式,用戶端只需一個較小的硬盤、較小的內存、較慢的CPU就可以獲得不錯的性能。相比之下,單層或胖客戶對面器的要求太高。
三層架構的另一個優點在于可以更好的支持分布式計算環境。邏輯層的應用程序可以有多個機器上運行,充分利用網絡的計算功能。分布式計算的潛力巨大,遠比升級CPU有效。
三層架構的最大優點是它的安全性。用戶端只能通過邏輯層來訪問數據層,減少了入口點,把很多危險的系統功能都屏蔽了。
另外三層架構還可以支持如下功能:Remote Access(遠程訪問資料),例如可透過Internet存取遠程數據庫;High Performance(提升運算效率)解決集中式運算(Centralize)及主從式架構(Client-Server)中,數據庫主機的運算負擔,降低數據庫主機的Connection Load,并可藉由增加App Server處理眾多的數據處理要求,這一點跟前面講到的分布式計算提高運算能力是一個道理;Client端發出Request(工作要求)后,便可離線,交由App Server和DataBase Server共同把工作完成,減少Client端的等待時間;這個功能我覺得應用場合不是很多,自己感受也不是很深刻,從理論上是成立的。
1、volley 項目地址 https://github.com/smanikandan14/Volley-demo
(1) JSON,圖像等的異步下載;
(2) 網絡請求的排序(scheduling)
(3) 網絡請求的優先級處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯動(Activity結束時同時取消所有網絡請求)
2、android-async-http 項目地址:https://github.com/loopj/android-async-http
文檔介紹:http://loopj.com/android-async-http/
(1) 在匿名回調中處理請求結果
(2) 在UI線程外進行http請求
(3) 文件斷點上傳
(4) 智能重試
(5) 默認gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences
3、Afinal框架項目地址:https://github.com/yangfuhai/afinal
主要有四大模塊:
(1) 數據庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(2) 注解模塊:android中的ioc框架,完全注解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網絡模塊:通過httpclient進行封裝http數據請求,支持ajax方式加載,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
FinalBitmap可以配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等。FinalBitmap的內存管理使用lru算法,
沒有使用弱引用(android2.3以后google已經不建議使用弱引用,android2.3后強行回收軟引用和弱引用,詳情查看android官方文檔),
更好的管理bitmap內存。FinalBitmap可以自定義下載器,用來擴展其他協議顯示網絡圖片,比如ftp等。同時可以自定義bitmap顯示器,
在imageview顯示圖片的時候播放動畫等(默認是漸變動畫顯示)。
4、xUtils框架項目地址:https://github.com/wyouflf/xUtils
主要有四大模塊:
(1) 數據庫模塊:android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過注解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請注解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動加載外鍵關聯實體,支持延時加載;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
(2) 注解模塊:android中的ioc框架,完全注解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
(3) 網絡模塊:支持同步,異步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返回文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。
(4) 圖片緩存模塊:加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持加載網絡圖片和本地圖片;
內存管理使用lru算法,更好的管理bitmap內存;
可配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等...
5、ThinkAndroid項目地址:https://github.com/white-cat/ThinkAndroid
主要有以下模塊:
(1) MVC模塊:實現視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全注解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 數據庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數據請求,支持異步及同步方式加載。
(5) 緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview加載圖片的時候無需考慮圖片加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
(7) 配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日志打印模塊:可以較快的輕易的是實現日志打印,支持日志打印的擴展,目前支持對sdcard寫入本地打印、以及控制臺打印
(9) 下載器模塊:可以簡單的實現多線程下載、后臺下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
(10) 網絡狀態檢測模塊:當網絡狀態改變時,對其進行檢
6、LoonAndroid 項目地址:https://github.com/gdpancheng/LoonAndroid
主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內的application既可)
(2) 圖片加載框架(多重緩存,自動回收,最大限度保證內存的安全性)
(3) 網絡請求模塊(繼承了基本上現在所有的http請求)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 數據庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類
其中的 volley ,13 年有研究過,擴展性非常好,個人比較喜歡的風格。其他如 android-async-http、Afinal 也相當不錯。
JeeWx, 敏捷微信開發,簡稱"捷微".
捷微是一款免費開源的JAVA微信公眾賬號開發平臺.

平臺介紹:
一、簡介
jeewx是一個開源,高效,敏捷的微信開發平臺 , 采用JAVA語言它是基于jeecg這個企業級快速開發框架實現的。 jeewx的目的是最大化的簡化微信開發的流程,使用開發者能把最好的精力放到微信具體業務開發,并能以最快的時間完成。把一些常規而頻繁的工作交由jeewx來處理即可,平臺兼備的代碼生成器,在線開發,可以快速的完成企業應用。為此jeewx提供了詳細的二次開發文檔,關鍵代碼里還是相關的注釋說明。jeewx采用插件的方式實現微信功能,不同的插件實現不同的微信功能。
主要特性
1、基于快速開發平臺jeecg 3.4.4最新版本,采用SpringMVC+Hibernate4+UI庫+代碼生成器+Jquery+Ehcache等主流架構技術 2、支持企業快速開發,完善的用戶組織機構,報表,強大的代碼生成器快速有效的提高開發效率
2、開源免費,jeewx遵循Apache2開源協議,免費提供使用。
3、支持多用戶多公眾號管理
4、詳細的二次開發文檔,并不斷更新增加相關開發案例提供學習參考
5、微信功能插件化開發,更易于定制和二次開發
6、提供豐富的微信插件下載安裝使用,總有一些是符合或接近你的需求
主要功能
1、微信接口認證
2、菜單自定義
3、文本管理和回復
4、關注歡迎語
5、關鍵字管理
6、文本消息管理
7、圖文 消息管理
8、微信賬號管理
9、用戶管理
10、角色管理
11、菜單管理
12、微信支持多用戶多公眾號
后續發布功能:
1、微信大轉盤
2、微信刮刮樂
3、微信CMS
4、周邊
5、 微信群發
6、 微信關注用戶分組
7、微信關注用戶、
8、微信掃描登錄
9、會員管理
最低系統需求
Tomcat6.0 或更高版本。
MySQL 5.0 或更高版本。
MyEclipse8.5或其他版本。
源碼下載地址:
https://code.csdn.net/zhangdaiscott/jeewx
文檔下載地址:
鏈接: http://pan.baidu.com/s/1i3LxLmH 密碼: j3co
系統安裝
1、將jeewx壓縮包解壓并上傳到服務器。
2、首次在瀏覽器中訪問 http://localhost:8080/jeewx/,默認admin登錄,一個賬號只能配置一個微信公眾賬號。
3、按照安技術文檔完成安裝,如果有問題請訪問官網討論區尋求幫助。
4、服務器配置
Token: jeecg
5.云服務平臺建議,可以采用MoPaaS
聯系方式:
QQ 群 : 287090836,129190229,175449166
官網: http://www.jeewx.com
郵箱: jeecg@sina.com
系統首頁展示:


在項目開發期間難免遇遭使用的jar包在Maven的中央倉庫里沒有,比如那個固執的Oracle,這家伙始終不愿意把ojdbc驅動提交到Maven倉庫,這件事很郁悶,Maven又不支持引入本地jar文件如果用IDE強行引入在Maven編譯的時候又無法通過。
Maven官方提供導入本地jar文件到本地倉庫的maven-install-plugin,可是要用的時候又得苦逼的去找命令,用起來也比較麻煩,因此,本文詳細介紹一下maven-install-plugin插件的使用,可以導入任意數量的jar文件到本地倉庫,是不是很開心那!
配置POMMaven插件maven-install-plugin
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<inherited>false</inherited>
<executions>
<execution>
<id>install-artifacts.1</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>validate</phase>
<configuration>
<file>${basedir}/libs/ojdbc14.jar</file>
<groupId>org.oracle</groupId>
<artifactId>oraclejdbc</artifactId>
<packaging>jar</packaging>
<version>14</version>
</configuration>
</execution>
<execution>
<id>install-artifacts.2</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>validate</phase>
<configuration>
<file>${basedir}/libs/foundation-1.0.jar</file>
<groupId>org.bg</groupId>
<packaging>jar</packaging>
<artifactId>foundation</artifactId>
<version>1.0</version>
</configuration>
</execution>
</executions>
</plugin>
執行導入
在經過Maven的validate階段時自動導入安裝,在executions里指定插件的goals和maven的phase。
直接執行命令 mvn install:install-file
插件屬性
如果要在導入時生成pom文件,增加配置屬性:
<generatePom>true</generatePom>
指定自己的POM文件:
<generatePom>false</generatePom>
<pomFile>${basedir}/dependencies/someartifact-1.0.pom</pomFile>
如果JAR自帶POM文件無需指定此屬性,會自動安裝。
http://www.cnblogs.com/xguo/archive/2013/06/04/3117894.htmlhttp://www.cnblogs.com/xguo/archive/2013/06/01/3113146.html更多詳細配置:
http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html最后提示一句,其實Maven生命周期中的每一個階段都是一個插件來實現的,而且都可以單獨拿出來根據你的使用需要來配置。
詳細請查看http://maven.apache.org/plugins/
或者
另一篇Maven相關文章http://www.cnblogs.com/xguo/archive/2013/06/01/3113146.html。