(1)WinForm和WebForm
如上所述,WinForm程序通常分为四层,而WebForm程序通常分为三层。
举例说明,winForm程序:
IEnumerable<BatchUpdateResult<string, HX.DHL.Common.Data.ResultSign>> rets = CustomerFacade.InterFaceImportForDispute(pLists.ToList()).ToList();
客户端UI层使用这个方法,但这个方法定义在Service里面,其中有接口和实现层。
public IEnumerable<BatchUpdateResult<string, HX.DHL.Common.Data.ResultSign>> InterFaceImportForDispute(List<CustomerDispute> lst) { using (ICustomersLogic customerLogic = new CustomersLogic()) { return customerLogic.InterFaceImportForDispute(lst); } }
而真正的实现在Service中引用了Logic中的方法。可能在应用中服务和逻辑有时候也需要分开写。所以设置了两层
public IEnumerable<BatchUpdateResult<string, ResultSign>> InterFaceImportForDispute( List<CustomerDispute> cusdisputeList){}
Logic中关于数据库的部分又使用DAL中定义好的方法。比如插入更新之类的方法。
WebForm程序:
var lgdata = this.LgService.GetAllLanguages(false);
UI层使用Service的一个方法,该方法就直接在Service层中实现:
public virtual IList<Language> GetAllLanguages(bool showInactive = false)
{
var query = _languageRepository.Objects.Where(q=>!q.Deleted);
if (!showInactive)
query = query.Where(l => l.Active);
query = query.OrderBy(l => l.OrderID);
return query.ToList();
}
而涉及到数据库仓储的部分交给Reposit处理。上述的_languageRepository定义:
private readonly IIdentRepository<Language> _languageRepository;
上述的IIdentRepository<Language>继承的类中包含了最基本的对数据库的操作。
综上所述,WinForm中的DAL和WebForm中的Resposit都是关于数据库仓储的。