如何实现N层架构,以Forums中完成修改密码是这样的:
页面层:ChangePassword.aspx, 主要是使用MasterPage:~/Themes/MasterPage.ascx来搭建页面的Layout,具体的功能是通过控件来实现的。
与之对应的(复合)控件:AspNetForums.Controls.ChangePassword,继承自控件SkinnedForumWebControl,主要实现Skin,因为Skin可以自定义,产生修改密码的页面要素:输入的TextBox,提交按钮等,产生相应的事件,调用逻辑层的具体方法。
逻辑层的类:AspNetForums.Components.User提供修改密码的业务处理ChangePassword(string password, string newPassword, string salt,bool isRequestFromPassport),这个方法才调用数据层的数据库操作,实现真正的修改密码。
数据库层的类:AspNetForums.Components.ForumsDataProvider是类的方法UserChangePassword,因为其是abstract类,在这里是子类AspNetForums.Data.SqlDataProvider来实现的。主要是为了实现支持多个类型的数据库。