当前位置:编程学习 > C#/ASP.NET >>

三层架构,调用webservice放哪一层

有个程序,在表示层有好多个页面都有个按钮事件,此按钮事件中包含一个webservice,现要把这个按钮事件的主体封装成一个方法供各aspx调用,之前都封装在了中间层,但是这样会导致中间层也会调用webservice引用。按三层架构,调用webservice时,是不是尽量不放在中间层?
对于多个aspx页面调用含有webservice的封装,怎么个处理比较合适?谢谢。
我考虑放common供调用,不知这样是否合理? 三层 webservice --------------------编程问答-------------------- 呵呵,你本来就是为页面写的东西,你说他是在那一层??

你既然是为页面写的专用服务,他还能在那一层。我喜欢吃臭豆腐配红酒,酒店给我特地上了这么两东西。博客园的家伙们非要说这不是我的特殊要求,这是大众口味,难道大家都喜欢这口吗?

所谓中间层,是无关个人口味的大众化要求,而你对每个页面的定制的服务,那就是臭豆腐配红酒,如果你把每个人的特殊需求都叫中间层,嘿嘿,很快你那个中间层就啥都不是了,成了一垃圾箱了 --------------------编程问答-------------------- 看你怎么定义你的分层。 --------------------编程问答-------------------- 不要以为培训班学的那种用个代码生成器3分钟炮制出来的就叫分层了。 --------------------编程问答-------------------- 还封装个屁。人家vs生成的web service的客户端代理程序,就是非常“厚重”的封装了。你的客户端程序任何地方调用它,就调用人家生成的class,实例化之后调用其方法就行了。

难道人家不管怎么样地封装之后,你都要自己再封装一次,才叫做三层? --------------------编程问答-------------------- 如果你的UI页面非常复杂或者灵活,你可以以模块化的方式来设计它们,几十个模块之间具有依赖和依赖倒置、引用和被引用、调用和事件通知等关系,许多东西都是在以后开发的(例如一个自动产生树形菜单的程序根据以后才会开发出来的数据实体模型而动态产生菜单),这可以说是你根据模块而分层。不过我想那种整天纠结于“三层”的人还搞不懂开发一个客户端UI程序内部需要如何分模块(并且分层)吧。 --------------------编程问答-------------------- 中间层只是一个统称而已,楼主问这个问题的时候有没有思考过
所谓的分层的作用是什么,简单来说就是解耦
针对具体的应用,还是应该具体划分的,没有死的三层
怎么样能够解耦,就怎么分,根据你项目情况,还是放你所谓的中间层(虽然不知道你的中间层和我理解的是不是一个概念),但楼主也可以新建一个Service层(子层),把WebService和其它的逻辑分开 --------------------编程问答-------------------- 比如说打印机程序是个通用的程序,它负责把要打印的内容变为通用的指令并解析,然后把解析出来的东西给了底层,并最终打印出来。这时候开发人员就会写一个非常原始、简陋的“底层”设备模拟器,来验证打印结果。以后,很多年,逐步地,上万、上十万的打印机驱动都会按照适配这个打印机程序的接口而开发。

那么有一种人,他想不明白为为什么底层程序可以抽换,他硬说“你必须给我堆api,好让我这个HP 8000打印机的驱动程序调用,这样才叫三层程序啊!”。实际上,通用的打印机程序是把数据给这个HP 8000打印机程序让它加工,而不允许底层反过来调用高层。而那些被“三层架构”吧脑袋困死的人,总是不理解层次高低是可以根据不同公司、不同项目条件、不同人手而反过来架构的。

还有一种人,它以为什么都应该以白手起家的东西为最好。假设恰好遇到了asp.net webform比较垃圾这种情况,需要javascript开发人员的时候,他就说“你看,我早就说控件开发、拖拖拉拉控件的开发方式难以为继吧!”。实际这也就是钻了微软在处于web开发前端的asp.net平台这些年太缺乏创造力、仅仅把一点点精力用于抄袭10年前别人所谓的web服务器mvc架构的空子而已。 --------------------编程问答-------------------- 考虑到易用性,没必要封装按钮事件吧,你调用了webservice里面的方法,本来就是封装过的 --------------------编程问答-------------------- 架设你的界面,全都是“给他一个数据模型,他就自动产生界面”的形式,也就是说你有通用组件确实非常有用,那么你就把这个东西嵌在这里!但是假设你没有,假设你有更加有效率的其它东西,你何必纠结于什么“中间层不中间层”的呢?

比如说一个“树形菜单配置页面”,它就可以支持你在界面上直接录入web service的名称,然后它就反射调用它来产生属性菜单。你也可以封装十个层次隐藏起这个机制,但是有必要吗?

希望你自己做决定。好的架构师就是会坚持一种分层机制,也会立刻倒转分层机制,这就够了。 --------------------编程问答-------------------- 我通过都会用一个类库重新封装一下 --------------------编程问答-------------------- Web Service应当是单独的一个项目,放单独的一个网站里 --------------------编程问答-------------------- 感谢各位教导了。

当前我有6个aspx页面,每个aspx页面都有提交操作,只是根据类型不同,提交时传递的参数类型不同而已。
每个提交分3步:1:insert A表,2:调用webservice WS,3:根据调用webservice返回的结果update B表。

当前我把此3步操作都封装成了一个函数,放在了business层。这样就在business层引用了webservice,指导老师说不要在business层再调用同表示层的webservice了。(这样表示层和business层都引用了相同的webservice)

我比较疑惑的是,如果要表示层调用,那么每个aspx页面中的提交都要写3次调用执行(1调用insert A表的方法,2调用webservice,3调用update B表),如此的话每个ASPX页面代码不是重复性太多了。原来只要调用一个business层的方法就可以解决,现在要调用3次类似代码。

抛开3层结构,上述情况常规处理是怎么样的?
A:每个aspx页面提交时调用business中的一个方法,在business层调用webservice
B:每个aspx页面提交时调用2个business层的方法,1个webservice(表示层引用webservice) --------------------编程问答-------------------- 除
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,