如何部署三层结构

万物霜天竞自由 2013-04-29 02:35:18
按典型的三层结构,除了winform(或web),还生成了BLL DAL Models动态库。
如果都装在客户端,那和一般的调用动态库没有不同。
如要将BLL和DAL装在服务器上,winform如何能调用到?是否要采用web service或remoting,有没有详细资料?
...全文
282 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
昨天没上网,现在才看到了1234的很长的回帖。我原来的问题是个小石头,引出了金玉良言,也是大收获。 1234的相关工作我没有做过,不敢妄言。我做的多限于制造业,算生产流程再造吧,不过都不算大。过去在用6.0开发一个项目时,曾经看到绿鸟的材料讲的分布式系统和3(N)-tier架构,颇有启发,就在项目中用了,当时用户只要求单机使用,也只是按思路分了层,还是在一个工程中,但合理的分层给后来的维护工作带来了未料到的好处。现在有个分布式的需求(只是局域网),不知道怎样才能让客户端访问到服务器上的 BLL.dll,这就是我的问题的初衷。 其实软件的分层,并不是为了分而分,而是一个需要,当分就分嘛,跟工程的复杂与否是无关的。客户端运行的是winform(Webform),服务器上运行的是商业逻辑和数据存取,可以DLL形式存在,如果解决方案中只有一个cs文件,哪应该只能生成一个装在客户端应用程序?
引用 7 楼 sp1234 的回复:
所谓web service或者remoting,可能业余的程序员更容易从.net入门书上看到则写。但是传统上使用基本的tcp、http之类的更加成熟的系统(比如电信业有无数的硬软件直接处理sip指令)更多更加实用。比如说你写一个QQ服务器或者一个ArcGis服务器,宗旨是专业的业务服务器或者企业服务器,而不是简单地OA开发人员眼中的服务器,那么我没有见过以web service或者wcf为出发点的。以web service或者wcf为服务器设计通讯网关组要手段的,基本上都是业余开发人员。
我没有足够的大的项目支持“写一个QQ服务器或者一个ArcGis服务器”,这几天通过了解,也未见到其他的公司做这样的工作,倒多是采用web service或者wcf,也都能满足用户的需求,可能是没有你玩的大的缘故吧。
引用 8 楼 sp1234 的回复:
你应该开发一个真正的业务TcpListener服务器。
糟了,知识不够了,TcpListener是.net里用于支持开发TCP/IP通讯的一个类,TcpListener服务器是什么概念?
devmiao 2013-04-30
  • 打赏
  • 举报
回复
此三层非彼三层。我们说的三层是指客户机,中间件和数据库而你的中间件的三层架构则是PL BLL和DAL。
  • 打赏
  • 举报
回复
引用 2 楼 pc_based 的回复:
现在的问题是:如何部署,才能使Winform.exe可以访问服务器上的Trial.BLL.dll?
你应该开发一个真正的业务TcpListener服务器。
引用 2 楼 pc_based 的回复:
另外:“你写在一个cs文件中”是什么思路?
你可以把你三个工程中的代码全都写在一个工程里,甚至写在一个cs文件里。 分为多个文件我倒是可以理解,而分为三个或者四个工程,每一个工程都只有那么简单的东西,这样分解过多的工程太无聊了。我比较反感这种弄许多工程的八股形式。 在我们的一个普通的服务器程序解决方案中,有着20多个工程。但是每一个都是因为涉及不同的类型的复杂业务而分开的。你这种分法,我们岂不是要超过80个以上的工程了?
  • 打赏
  • 举报
回复
比如说所谓的web service或者remoting,你说有还是没有人用它来模拟最底层的某个关系数据库的增删改查简单操作么?当然有。微软也有这样的东西,仅仅用来做那些操作的。 所谓web service或者remoting,可能业余的程序员更容易从.net入门书上看到则写。但是传统上使用基本的tcp、http之类的更加成熟的系统(比如电信业有无数的硬软件直接处理sip指令)更多更加实用。比如说你写一个QQ服务器或者一个ArcGis服务器,宗旨是专业的业务服务器或者企业服务器,而不是简单地OA开发人员眼中的服务器,那么我没有见过以web service或者wcf为出发点的。以web service或者wcf为服务器设计通讯网关组要手段的,基本上都是业余开发人员。
  • 打赏
  • 举报
回复
只要的UI代码不直接访问什么关系数据库,那么基本上就符合三层的概念。不管你想如何部署。 而c/s分布,是因为业务的需要,而并不是为了分层而部署。例如我们的手机要跟别的手机通讯,那么需要用到移动公司的庞大的交换器、服务器、软件群(例如计费系统)等等。这并不是为了体现什么分层而部署的。 我建议你不要纠结在“什么层怎么摆放文件夹”这个角度。多干点实际的产品设计吧,那时候你会自然地分层的。
qldsrx 2013-04-30
  • 打赏
  • 举报
回复
服务器端分为: 1、数据库交互层 2、实体层 3、业务处理层(附客户端访问接口) 客户端分为: 1、实体层 2、服务端接口交互层(该层可以直接嵌入到用户界面中)
  • 打赏
  • 举报
回复
引用 3 楼 qldsrx 的回复:
......实际到了联机版后,就有5层了,其中服务端3层,客户端2层。
这五层是怎么分的,就是分别是哪几层
qldsrx 2013-04-30
  • 打赏
  • 举报
回复
一般采用web service的较多,因为那个兼容性好。 你看的只是单机版的三层结构,而实际到了联机版后,就有5层了,其中服务端3层,客户端2层。
  • 打赏
  • 举报
回复
按照三层的设计,商务逻辑层BLL和数据访问层DAL部署在服务器上,各个客户端上是用户界面表示层USL。
我不知道怎样配置,能使得USL访问BLL。
目前解决方案试着搭建如下,每层各自在一个项目中。

生成的文件是

Winform.exe会访问Trial.BLL.dll,在单机时自然不是问题。
现在的问题是:如何部署,才能使Winform.exe可以访问服务器上的Trial.BLL.dll?

另外:“你写在一个cs文件中”是什么思路?
  • 打赏
  • 举报
回复
你写在一个cs文件中也可以。当然在不同的工程中也可以。如果你没有所谓“分开部署”的需求,那么为什么要分开呢?

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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