问题描述
如题,公司不是很专业的软件公司,但是鉴于手里这个工作不是很大的工作量,时间不是很着急,本着试一试正规软件开发的流程,想写的正规一点,看网上推荐用三层架构。软件主要实现流程:1、从工厂现场生产线读取数据问题:1.1我想同时保存采集到的数据到SQL数据库,还要同时把采集到的数据送到软件的数据处理模块进行处理,这个应该怎么做?我想的是线保存到SQL,在从里面读出来,但是感觉这个方法太笨了。。。2、对采集到的数据进行计算问题:2.1按照三层架构,我觉得应该写到业务层吧,这次实现的主要是一些统计、分析、平方之类的数学的数值计算,但是看网上三层架构的例子,都很简单,没有见到这种例子,难道是单独写成dll什么的,在业务层调用吗?3、领导要求,要实现一台电脑计算,可以同时有多个客户端的方法,问题:3.1从我的理解,我觉得是用C/S模式,网络没搞过,所以不想用B/S,是吗?3.2数据传输打算用远程SQL访问可以不?主要是客户端用来定时读取数据,显示数据画图用。3.3上面的画图中,主要是winform中画一些柱状图、折线图,请问是用graph画还是用Chart控件之类的?3.4如果还有客户端和数据库的交互,是不是必须用网络了,例如SOCKET了?非软件专业,想尝试着做的专业一点,问题比较琐碎,先谢谢大家的耐心回答!
解决方案
本帖最后由 u014710355 于 2016-06-20 20:32:50 编辑
解决方案二:
1、socket模块接收到数据就发送给客户端。2、三层架构(UI-BLL-DAL),你这些需求属于BLL,单独用个类库项目。3、c/s可以、b/s也可以;数据库可以用sqlserver存取数据,可以远程也可以本地;画图建议用chart控件画;客户端和数据库的交互通过ado.net。
解决方案三:
这个通常采用消息队列+发布/订阅采集队列存储模块订阅他处理模块同时订阅他其实这个无关3层,3层基于对象,而这个其实是传统的数据流导向,可以用的东西有RabbitMQ,ReactiveExtensions(rxnet),TPLdatalfow
解决方案四:
如果是我设计可能的设计方式是采集的数据先发给rx做的采集消息总线rxBus数据处理模块订阅rxbus的消息(收到消息后,处理模块可以继续rx也可以dataflow,这两东西本身设计是目标不同,但是完成的功能交叉覆盖,倒是可以互相配合转换)处理完的消息,可以用RabbitMQ分发给客户机
解决方案五:
这个和三层没有什么关系了,应该将任务放入队列,让后台作业服务去计算。
解决方案六:
传统的两层式的程序,是前端直接调用数据库驱动,从而没有使用多服务接口的方式来扩展系统。因此所谓“三层架构”,就是说你有一层数据计算服务,不管你用什么方式实现,反正你对前端屏蔽了这些数据服务的底层数据库,这就是准确的“三层”!“三层架构”其实非常简单直接。许多人满脑子只有DAL,所以他们忽悠DAL,仿佛DAL重要处理多少业务逻辑——而业务逻辑层则只做简单的数据传递——似地。那是13、14年前一些仿.net开源小项目PetShop式的所谓“三层”。实际上,你完全不用考虑这么多。只要你的数据服务是一个独立系统,甚至打算扩展授权模块、计费模块,打算对各种前端开放平台能力,那么没人敢再跟你这个系统提“三层”了。因为你这个系统不管怎么看,都有了强大的BLL层。反之,倒是一些刚写点asp.net单机(网站)小程序的人,才会过多地去讲“三层架构”要分成多少个目录、多少个文件、各种代码风格的规矩,之类的。
解决方案七:
纠结DAL的人,言必谈“数据库表”,所有操作只有从“增删改查”角度去考虑他才觉得心里有底。而“三层架构”,其实很简单,就是你先假设数据是“不落地的”,是在网络里可以保存几天、几个月,然后没用了就扔到的。数据库是备份、统计、找回资料的底层机制。但是数据库其实不是你设计一个强大的开放服务平台的思路出发点,而只应该是一个最终实现工具(其中之一)。
解决方案八:
有的时候一个人可能心里很想设计一个强大框架,然而一旦动起来之后没有2个月就怂了,就还是认为唯有数据库表是最让自己心里有底的东西了,所有其它的技术似乎都太难掌握、太慢应用、自己提不出具体的技术方案。其实这也正好说明了技术分层的作用。你若坚持那些中间件、(单向或者双向)通讯、查询缓存、大型计算模型、用户授权、统计图表、水平扩展系统接入服务器等等方面的框架,你便慢慢脱离了“增删改查”的思维定势。假设一个人去买菜,你可以说它是去“增删改查买菜订”;假设你一个人去医院体检,你可以说他是“增删改查病例资料”;假设一个人去约炮,你可以说他是去“增删改查”宾馆登记簿资料......当你把一开始的“工厂生产管理”最终完全往“增删改查”上套用的时候,你就没有创意,也不想去看看国内外最流行的7、8个小型生产系统是怎样设计的,只剩下懒惰了。你看你每一句话都在围绕着“sql、读写数据库、要不要dll文件”来考虑,这个思路没有从发布一个公司产品服务来考虑,而是从应付差事、为领导写个小程序的角度来考虑。