讨论一下,BLL的DTO设计吧。。视图(UI)有viewmodle,DAL层有DALMODEL,但是BLL的MODLE设计我有点犯傻了,救指点。。

xghabc 2015-04-15 04:07:10
如题。。我使用的是MVC,当然,这里没有太多的差别,

首先UI的viewmodel设计,非常简单,根据控制器+方法名 命名,viewmodel的属性都是UI要用的属性

DALmodel也非常简单,使用EF,跟数据库的表字段一一对应。

就是BLL的model设计不知道,昨弄了。。

首先我认为viewmodel不能传到BLL层去,因为这样的话,这个BLL的方法,就变成了,这个UI的特定方法。所以BLL需要一个MODEL,将VIEWMODEL通用 oro工具转换之后,将bll的model传给BLL

问题一, 但是每个BLL的方法需要的参数都是一样,是不是每个类的方法,都配一个MODEL昵。。这样会有很多MODEL
问题二,如果真的每个类的方法都配一个MODEL,那么这个MODEL如何命名规范昵。。
...全文
270 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
三层中的 model,是三层之间通讯用的实体。不是仅仅用来对应数据库表的。 因此model的设计出发点并不是对应数据库表。如果你只是从数据库表出发来考虑model设计,限制了你model的概念,设计不出来model了。 比如说,业务服务端要为(各种)客户端提供一个“给超市里准备完成某笔业务的顾客推荐打折商品”的api,这个服务功能返回的api不仅仅有当前顾客的VIP特殊资料,以及3、4种商品资料的集合,还有顾客最近买的2、3种商品的购买记录,还有商店最近的打折促销规定(例如某类商品在某日之前特卖),等等。一个model就是一个业务集合体,它可能需要从数据库中的7、8种数据表中计算出来,最后形成一个复杂的(属性中嵌入了其它model的)model实体。 这才是model。 而dal是比较低级的东西,它就是处理一堆的“平面的、二维的”数据库表。这跟本用不着过分强调什么mode,直接用你的BLL去调用通用的数据层驱动框架来进行增删改查(来产生内存中的model实体)就行了。 所以model对应的是内存中的复杂对象,而不是什么关系数据库的简单表。
  • 打赏
  • 举报
回复
BLL。。复杂的我直接用ef生成的数据库实体,简单的直接写参数。。。
xghabc 2015-04-16
  • 打赏
  • 举报
回复
没有人了啊。。
xghabc 2015-04-15
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
如果你是纠结方法参数是什么,我只能说你做的其实是对外服务层,而非BIL,当然这不能怪你,这只能怪当初petshop就是这么搞滴。
不是纠结参数是什么。。 是纠结,一个方法,就得配一个MODLE吗。。这样MODEL很多,命名起来也很难。。
wanghui0380 2015-04-15
  • 打赏
  • 举报
回复
如果你是纠结方法参数是什么,我只能说你做的其实是对外服务层,而非BIL,当然这不能怪你,这只能怪当初petshop就是这么搞滴。
wanghui0380 2015-04-15
  • 打赏
  • 举报
回复
BIL其实才是真正滴Model,他才是设计的核心,才是所有标准教材上讲的OO 所以OMT教材上告诉怎么对象建模滴,这里就怎么样做。 至于你两个问题。我这么回答“对象建模与你提供的对外服务无关(也就是你口里的方法,这个在标准建模中他是边界类,而不是核心逻辑对象)”
  • 打赏
  • 举报
回复
参数一样当然用同一个model了 你可以将BLL当做WCF的操作契约,然后实体对应WCF中的数据契约

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧