當前我的應用程序的UI層與我的DAL dll耦合。 Dal初始化如下:從用戶界面刪除數據訪問層耦合
//Initialize Data Access for AS400
Dal = JDE8Dal.Instance;
Dal.conString = Properties.Settings.Default.conAS400;
DAL被設定爲單身人士。我認爲強制應用程序有一個實例是一個好主意。
DAL:
public class JDE8Dal
{
public string conString { get; set; }
private static readonly JDE8Dal _instance = new JDE8Dal();
private JDE8Dal()
{
}
public static JDE8Dal Instance
{
get { return _instance; }
}
// Methods
}
我BLL會是這個樣子:
namespace YLA.Barcode
{
public static class YlaBarcodeUtil
{
public static string LotStripZeroes(string str)
{
var ret = str;
if (str.Trim().StartsWith("00"))
{
ret = YlaGeneralUtilities.StripLeadingNumofChars(str, 2);
}
return ret;
}
}
public class BarcodeBLL
{
//DAL INIT HERE?
}
}
現在,我需要建立更多的應用程序,我需要移動到3層架構,並開始閱讀DDD 。
1)如何在BLL中移動DAL處理?只需在我的BLL部分添加初始化?
2)我應該保持我的DAL設計爲單例或不?
我建議你開始閱讀DDD之前試圖想出一個實施。特別是,藍皮書和DDD很快就有關於分層體系結構的一章,可能會有所幫助。調查存儲庫也可能是一個好主意。 – guillaume31
@ guillaume31我真的被迫走向ioc嗎?我的意思是特定的dal不會改變,因爲改變意味着新的ERP和新的erp意味着完全重新設計。所以我認爲在我的情況下,IoC不是必須的 – e4rthdog
根據應用程序的大小和複雜性,如果您想要正確測試代碼,IoC/DI可能是必需的。看到我的答案。 – guillaume31