以前我也产生过类似的迷茫,主要是还没真正的领悟三层。
三层只是一个统称,所谓三层并不一定只是三层也可能是4、5、N层。比如还会有缓存层、事务层之类的。
三层只是设计模式的一种应用,就好功夫一样,没有一种是不败的。适时的选择合适的方法才是重要的,生搬硬套是自寻烦恼。
问1:客户的需求很模糊,这就带来了数据库设计的困难,三层架构都说用实体层来进行数据传输,那么这么实体层应该怎么设计,其它层怎么设计(你的接口层定不下来),如果以后添加功能就得先改实体层然后一层层的修改?
答:设计是个迭代的过程,要确定客户的需求需要相当的技巧和经验。多出模型、多和用户沟通才是正确的。在确定需求在做设计,做设计的时候争取最大化客户需求,最小化功能设计,这样才能有良好的扩展。
问2:还是实体层,如果我其它两层设计成了Web Service那么这个层怎么设计,怎么传递?
答:三层不一定用实体层。如果一定要应用实体层在Web Service中可以把实体对象作为数组或XML传递,在使用时序列化。
问3:由于这个项目的客户需求说需要做到分担负载,于是项目经理就要求三个层必须要安装在不同的服务器上面,那么按照园子里面大多数人的想法(比如PetShop)每一层建不同的类库,那该怎么放在不同的服务器上面,他们之间怎么互相访问,如果其中一层还想分在不用的服务器上面呢?
答:分担负载有很多不同的方法,例如可以把数据库和逻辑处理层分开,再把前台页面放在一个独立的服务器。在程序设计上进行适当的接口编程。
问4:如果每一层设计成了Web Service,哪改怎么设计?怎么传实体层?到最后这么Web Service会不会变的很臃肿,好像看了园子里面很多资料都没有发现Web Service在三层架构中应用的例子,而且我试了一下发现Web Service不能返回工厂模式生成的接口,提示不能序列化接口。
答:每一层设计成Web Service不是不可以。具体要怎么就要看需求了。传送实体层前面一经说过,XML或数组、JSON等,方法很多。实践证明不能序列化是程序问题。另外工厂和调用生成接口的程序必须在一个服务器上。
over
回复 引用 查看