我想获得一个3层架构:UI< -BLL< -DAL。
我的DAL是一个“超级”对象,可以处理不同的数据库技术,如sql server,mysql,ecc ..
这就是我认为的业务逻辑层:
/// <summary>
/// Customer entity
/// </summary>
public class Account
{
public String Username;
public String Email;
}
public class AccountService<T>
where T : Account
{
IEntitymanager entityManager;
public AccountService(IEntitymanager entityManager)
{
this.entityManager = entityManager;
}
public void Register(T account,
String confirmPw,
String verificationEmailBody)
{
// Validate parameters...
// Check email uniqueness...
// then write account to db...
if (entityManager.Save<T>(account))
{
// Send verification email whit GUID
}
}
public void Verify(String guid)
{
T account = entityManager.Get<T>(new Parameter("Guid", guid));
// Verify account
}
}
现在我对此有一些疑问:
答案 0 :(得分:0)
您可以通过实现Repository模式(即每个RDBMS数据访问组件可以实现的一组公共接口)来实现对多个RDBMS技术的支持。
您的业务逻辑被隔离到一个单独的类中,但如果您不通过边界(即使用SOAP或REST)公开它们,那么您就没有真正的服务层。并非每个应用程序都需要服务层。这取决于您的要求和预计的系统未来增长。
验证可能具有挑战性。如果系统的输入仅来自UI,则UI中的验证应该足够。但是,如果您有服务层,那么您可能还需要将一些验证复制到业务层。
您可能需要参考本文以获得有关分层体系结构的更好视图 http://serena-yeoh.blogspot.com/2013/06/layered-architecture-for-net.html
您也可以从此处下载示例实现 http://layersample.codeplex.com/