Pab*_*lli 1 c# architecture wpf entity-framework data-access-layer
我在WPF中开始一个新的应用程序,我希望它有一个良好的架构,以便它可以维护.我正在使用实体框架,到目前为止我计划的是.
•查看图层:一个项目(启动),包含启动视图和主菜单.每种类型的视图都有不同的项目,例如,如果我有与Books相关的视图,那么我将有一个名为BooksView的项目,其中包含所有视图.
•业务层:每种业务类的一个项目,例如BusinessBooks.每个人都有一个具有特定操作的存储库和任何帮助器,如果需要可以进行计算.
•数据访问层:它包含一个名为Entity Framework的文件夹,其中包含DBContext和T4生成的类以及一个名为ContextCreator的类,其中包含以下代码:
public class ContextCreator : IDisposable
{
private MesaOperativaDB context;
public ContextCreator()
{
context = new MesaOperativaDB();
}
public MesaOperativaDB getContext()
{
return context;
}
public void Dispose()
{
context.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,视图将使用所需的业务层的任何项目的静态存储库,并且此存储库将使用上面的类来获取DBContext并使用它如下所示:
public static List<Novedades> GetNovedades()
{
using (ContextCreator db = new ContextCreator())
{
IQueryable<Novedades> novedades = db.getContext().Set<Novedades>().AsQueryable();
return novedades.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
这种做法有什么好处吗?提前谢谢你们.
虽然我不太确定你的应用程序规模,但我觉得你已经开始走上正确的道路来分离关注点了.
但是,如果为每个视图类别创建单独的项目不会引入不必要的复杂性,则可能需要重新考虑.
我不确定你是否是WPF的新手,但是对于View层来说,为了更好的可维护性,松耦合和可测试性等,MVVM是组织现场的最佳选择模式.为了获得MVVM,您可以从头开始手动编码所有内容,或者有很好的框架,例如:
此外,如果您计划使用相对较大的(外行术语!!)/企业级应用程序,并且由于您正在寻找高度可维护,灵活的应用程序,您可以考虑使用Microsoft的PRISM框架.棱镜指导和可下载的PDF等
完成View部分后,您需要关注应用程序的Validations以及是否要在ViewModel或域对象中实现验证.Assisticant框架内置了一些很好的以域为中心的验证机制.
对于数据访问层,由于您选择使用EF,根据我的理解,到目前为止,工作单元存储库模式将极大地帮助您获得可扩展性,可测试性等功能.
如果您计划对应用程序的单元可测试性和松散耦合进行高度计划,则需要考虑使用适当的框架来控制和依赖注入的反转.
在这里,您可以检查WPF应用程序框架,以了解如何以分层方法组织WPF应用程序的不同区域.
希望这可以帮助你进一步挖掘.
| 归档时间: |
|
| 查看次数: |
4207 次 |
| 最近记录: |