![](/img/trans.png)
[英]Rest Architecture: Data Access Layer as Model, REST purpose is to call Business Logic Layer that calls DAL
[英]WPF Architecture with Business Layer and DAL
我在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();
}
}
然后,视图将使用需要的业务层任何项目的静态存储库,并且该存储库将使用上面的类来获取DBContext并像这样使用它:
public static List<Novedades> GetNovedades()
{
using (ContextCreator db = new ContextCreator())
{
IQueryable<Novedades> novedades = db.getContext().Set<Novedades>().AsQueryable();
return novedades.ToList();
}
}
这种方法好吗? 预先谢谢你们。
虽然我不确定您的应用程序规模如何,但是对我来说,您似乎已经开始了分离关注点的正确道路。
但是,如果为每种视图类别创建单独的项目不会引入不必要的复杂性,则可能需要重新考虑。
再次,我不确定您是否是WPF的新手,但是对于View层来说,它具有更好的可维护性,松散的耦合以及因此的可测试性等,因此MVVM是组织适当内容的最佳选择。 为了安装MVVM,您可以从头开始手动编码所有内容,也可以使用不错的框架,例如:
另外,如果您打算开发一个相对较大的(企业术语!)/企业类应用程序,并且由于您正在寻找高度可维护,灵活的应用程序,则可以考虑使用Microsoft的PRISM框架 。 棱镜指南和可下载的PDF等
在“视图”部分上完成后,您需要关注应用程序的验证以及是否要在ViewModel或域对象中实现验证。 辅助框架内置了一些良好的以域为中心的验证机制。
对于数据访问层,由于您选择使用EF,根据我的理解,到目前为止, 带存储单元的工作单元模式将极大地帮助您获得可扩展性,可测试性等功能。
如果您计划在单元可测试性和应用程序的松散耦合方面进行高规划,则需要考虑使用合适的框架来进行控制反转和依赖注入。
在这里,您可以检查WPF应用程序框架,以了解如何以分层方式组织WPF应用程序的不同区域。
希望这可以帮助您进一步挖掘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.