1、一直很不解,為什么一個c#項目要拆分成DAL一個項目,UI一個項目,service一個項目,然后相互引用,類似下圖的這種結構。
![]()
直接把ui,dal,service全部放到一個項目不也好了,用文件夾區分不就好了,為什么還要新建項目呢???,網上說是為了模塊化、分層。
其實我看了也是略懂略懂~
我個人的理解是對於小項目,我個人是不喜歡分層的,直接寫到一個項目里面就好了。但是對於一些大項目,分層的必要性就出來了。
比如:一個項目中,有頁面的操作、有api、還有一個其他的。有人喜歡把頁面跟api合並到一起放到一個項目中(當然這樣也可以)。對於一些大的項目,最好把頁面和api作為兩個項目分開來。
這時,頁面的操作和api肯定有重復操作的部分了。重復部分怎么辦呢?不可能在頁面操作寫一份,api也寫一份吧?(多麻煩)。所有這時候的模塊化就出來了,把重復的部分抽出來,寫到一個項目中(例如dal)。然后頁面操作與api直接引用這個dal就好。
其實這個跟Java的maven項目是差不多的,maven項目也是把dao、service、web層分為三個項目,然后dao、service最終打包成一個jar包給web使用。當然,dao和service也會互相引用。
其實對於一些工具類,幾乎好多的項目/小程序都會用到的,比如數據庫的連接,這些東西可以直接抽出來作為一個項目的,然后給其他的項目直接引用即可。這樣挺方便的。
下面我寫了個小例子
1、新建一個winform項目


然后新建一個DAL的庫(右擊解決方案-》新建項目-》選擇下圖的)

隨便寫點

然后在UI項目中引用
點擊引用-》添加引用

找到DAL即可

然后在UI中就可以直接使用了

