近来在做公司ERP产品的升级。
对于架构的选择,十分纠结。原来的系统是CS架构的,并且是胖客户端模式。在客户端上安装时即要安装客户端程序及.NET FRAMEWORK,又要安装DIAPI,数据库访组件,甚至还有EXCEL组件等。为了安装,专门建立了一个文件夹,取名为“泰信软件安装前提”,好是不爽。
尽管在项目的实施中,我们实现了客户端软件的自动升级,每次启动前自动检查客户端版本与服务器版本,自动更新,但是初次安装还是给用户带来不小的麻烦。
于是,在我们的2.0版本中,我们考虑采用UDP通讯的方式,在客户端只需要安装.NET FRAMEWORK和客户端应用程序,甚至只安装一个SMARTCLIENT就可以了。当然这个客户端是支持自动升级的。客户端只负责收集命令,比如登录,那么点击“登录”按钮时,客户端向服务器端发送一个命令,LoginRequest,并且,把用户名、用户密码,作参数传递给服务器端的UDP接收程序,当然,客户端的IP地址和端口,会自动地传递给服务器端;服务器端收到消息后,根据消息内容,分析消息类型,得知用户请求登录,作出反应,查找并验证此用户,然后根据用户名和客户端的IP地址等信息,生成一段加密的认证字符串,回传给客户端。客户端收到这个认证字符串后,登录成功!其它的操作与此类似。这样的话,客户端就可以只运行一个简单的命令收集和界面展现的“瘦客户端”了。从而降低了客户的安装部署的复杂性,提高了客户端的兼容性。
但是经过与一些技术牛人讨论过之后,被他们一致否定,让我写成BS架构,或者写成WEBSERVICE通讯。我个人还是愿意坚持我的意见,一、CS的客户端更可控,更适合ERP类软件的用户操作;二、使用UDP(或TCP)自己创建协议,比WEBSERVICE更具有主动性,比如服务器端可以向客戾端“推送”公告消息等。
现在经过一番讨论之后,我也几乎无法确定该采用何种架构了,请各位大侠多给些指导意见吧。