c# WINFORM 分布式系统架构疑问

问题描述

开发公司内部管理系统,综合考虑各方面因素,最后放弃B/S,采用C/S分布式开发。数据库服务器单独,放总部。分公司通过CLIENT,通过中间层访问数据库。但是我有疑问,中间层比如我用WEBSERVICE,我如何做部署?WEBSERVICE服务器我是放分公司本地好还是放总部好?WEBSERVICE除了作为一个通用访问数据库函数,具体还起到哪些具体作用?比如缓存怎么缓的?性能上怎么提高的?谢谢!!!

解决方案

解决方案二:
CSLA.NET框架不知道如何
解决方案三:
这个比较严重,sevice当然放总部,分公司有多个,你只要对服务器端做一次部署都可用嘛而且这个方式可以慎重,搞不好,性能,安全两个都没了,比较难控制,b/s多好
解决方案四:
webservice当时是发在总部的了!部署在总部服务器IIS上!现在不是都在网bs上转吗,咋弄成cs了!你可以学习下wcf,这是专门针对与分布式系统的!
解决方案五:
B/S的确是好,但是我们业务很复杂,用户对于操作性要求非常强大,当然B/S也可以做到,但是开发成本太高了。
解决方案六:
该回复于2011-09-14 10:24:29被版主删除
解决方案七:
我们之前系统就这么做的而且客户端还是delphi开发的ws放服务器端,只提供对一些数据库封装操作(比如一张数据表指定数据的下载上传操作)和用户校验等不适用ssl的话,ws基本上就是透明的,如果你打算提供直接的数据库操作类比如sqlhelper的ws功能,至少把sql语句进行加密后作为参数使用吧ws本身安全机制采用自定义SoapHeader和自己实现的用户令牌(类似CookieBasedSession)来实现的性能方面由于应用服务器只提供函数级应用,比一般的web服务器要好些页面级缓存之类基本上是不需要用到的,数据缓存就按照asp.net处理就行不过我们当时没用到另外,根据cpu核数配置web园数量,对性能提升比较大就这些了,希望有用
解决方案八:
我们当时也是客户端的操作太多所以只把数据交互的步骤用ws来做现在已经转向bs了花了一年多时间才改过来
解决方案九:
webservices提供了三个属性Namespace:此属性的值包含XMLWebService的默认命名空间。XML命名空间提供了一种在XML文档中创建名称的方法,该名称可由统一资源标识符(URI)标识。如果不指定命名空间,则使用默认命名空间http://tempuri.org/Name:此属性的值包含XMLWebService的名称。在默认情况下,该值是实现XMLWebService的类的名称。Description:此属性的值包含描述性消息,此消息将在XMLWebService的说明文件(例如服务说明和服务帮助页)生成后显示给XMLWebService的潜在用户这个也算webservices的作用吧
解决方案十:
引用4楼kebixiong111的回复:

B/S的确是好,但是我们业务很复杂,用户对于操作性要求非常强大,当然B/S也可以做到,但是开发成本太高了。

确实b/s性能的确比c/s好但是相对来说成本高很多其实LZ说的数据库放在总部还是分公司好这个问题这个要据情况而定
解决方案十一:
如果分公司和总部处于局域网,那怎么都好说,如果不是,webservice是必然的选择。上面都说了不少,至于安全性么,是必然要考虑的,比如说限制IP或者验证机制等等,我之前用的比较多的是动态口令的方式,原理就是提供一个初始化的口令,然后每次访问后都会生成一个新的口令给客户端,然后客户端下次调用时提供的口令不符合就拒绝。这个其实比较简单,但是也会存在局限性,例如如果知道初始密码以后就畅行无阻了,不过还好。因为不可能就这一个参数,另外的参数你可以传递复杂的内容,例如自定义的xml或者加密文件包,都可以
解决方案十二:
或者限制客户端mac或者绑定cpu一类更BT的方式……
解决方案十三:
引用9楼zyloveyrf的回复:

引用4楼kebixiong111的回复:B/S的确是好,但是我们业务很复杂,用户对于操作性要求非常强大,当然B/S也可以做到,但是开发成本太高了。确实b/s性能的确比c/s好但是相对来说成本高很多其实LZ说的数据库放在总部还是分公司好这个问题这个要据情况而定

++服务器当然放总部好,在这种系统来说还是B/S好点吧
解决方案十四:
引用12楼chenyingshu880603的回复:

引用9楼zyloveyrf的回复:引用4楼kebixiong111的回复:B/S的确是好,但是我们业务很复杂,用户对于操作性要求非常强大,当然B/S也可以做到,但是开发成本太高了。确实b/s性能的确比c/s好但是相对来说成本高很多其实LZ说的数据库放在总部还是分公司好这个问题这个要据情况而定++服务器当然放总部好,在这种系统来说还是B/……

说过了啊,B/S我也知道好啊,但是客户端操作要求很高。用B/S很难得到用户的使用要求。用户第一,用B/S还是C/S我们是做过详细调研才得出的结论,所以也不用告诉我B/S好,我也知道的。
解决方案十五:
引用楼主kebixiong111的回复:

中间层比如我用WEBSERVICE,我如何做部署?

只要是SOA,它必定是将服务器组放在一个相对隐蔽的位置,然后所有其它子系统都是访问这个系统的应用程序服务,而不是什么关系数据库。几乎可以说,在跨路由器的范围内,不考虑c/s数据库客户端。
解决方案:
如果你要用WEBSERVICE作为通用的数据查询,还不如直接使用SQLSERVER的XML查询,它可以通过HTTP访问。可以考虑使用邮件系统作为通信渠道,这样你们总公司和分公司可以物理上不直接相连,只要都可以收发邮件即可,可大大增加系统安全性,详细方案,请
解决方案:
webservice放在总部,不但可以处理访问数据库,还可以处理需要部署在服务器的其它逻辑。
解决方案:
引用楼主kebixiong111的回复:

WEBSERVICE除了作为一个通用访问数据库函数,具体还起到哪些具体作用?比如缓存怎么缓的?性能上怎么提高的?

从通讯角度,webservice只要是给业余开发人员使用的,它只能支持get/post类似的操作。而如果你要开发一个c/s通讯程序,其实往往需要考虑双向通讯,就好象一个最简单的网络游戏也要考虑双向通讯而不是什么webservice一样。真正的软件,大部分的设计核心都是活动,特别是真正好的软件总是对于Get和Push方式的信息操作的比例不会高于2:1的。简单地举例比如说有一些人正在讨论一个项目计划,那么这个场景中所谓的Get操作都有哪些?可能有人会说:“需要获取讨论组、获取这个讨论组的主管、获取它的管理员、获取它的成员、获取它的消息、获取谁在邀请别人、获取针对自己的邀请信息、获取别人随时加入或者退出讨论组的信息、获取讨论组的各种操作权限分配”等等。然而这个人肯定不是真正的做过通讯软件的设计者,而只是一个编写中国风格的OA程序的。很简单,比如说你给别人发一个短信,不是说你的手机把短信保存到移动公司的数据库里然后别人的手机去查询短信;你给别人打电话时其技术设计更不是什么在数据库中对音频数据的什么增删改查。再看上面的所谓Get操作,从c/s软件设计角度,很多都首先是“不落地”的,如果以很低的线程优先级保存到保存到数据库也是为了后备、或者计费、或者营业统计分析等等。当一个成员邀请别人,或者一个成员发送消息给大家伙,消息就直接推送到大家的桌面上了,而不管它是否保存到数据库中。就算是调用webservice方式,那么消息如何立刻广播到加入同一个讨论组的桌面应用程序上,以什么样的方式推送什么样的实体数据,这些要在你动手写代码之前设计好(而很多小软件作坊那样学点webservice概念于是就动手编写程序了,那么很快就会因为没有实际的通讯设计架构,于是又回到了c/s数据库增删改查的老路)。好,回到你的问题,webservice服务设计可以不可以不纠结于什么关系数据库表的增删改查?可以不可能有好一点的性能?答案是首先你要把它作为一个企业服务,让那种基于数据库操作的设计思维渐渐地丝毫不纠结在设计文旦中,然后才会逐渐学会基于更加专业的双工操作、长期稳定的通讯方式来设计所谓的“分布式”系统。
解决方案:
引用17楼sp1234的回复:

引用楼主kebixiong111的回复:WEBSERVICE除了作为一个通用访问数据库函数,具体还起到哪些具体作用?比如缓存怎么缓的?性能上怎么提高的?从通讯角度,webservice只要是给业余开发人员使用的,它只能支持get/post类似的操作。而如果你要开发一个c/s通讯程序,其实往往需要考虑双向通讯,就好象一个最简单的网络游戏也要考虑双向通讯而不是什么webservi……

很认真的读了你的话,我觉得可能我还是没表达清楚。现状是这样:集团有20个分公司,总部在上海,总部人最多,其他地方的分公司人相对较少。现在需要规划新系统,做数据统一,操作统一,管理统一。所以最终想用C#开发WINFORM程序来实现。至于为啥选择WINFORM不选择WEBFORM这个我就不啰嗦了,和公司业务有关系。所以我想做过的朋友指点下,这种怎么架构?能够实现访问效率比较好?
解决方案:
现成产品能轻松达到这效果。
解决方案:
引用19楼atgo的回复:

现成产品能轻松达到这效果。

什么产品?
解决方案:
米人了啊?
解决方案:
楼主有兴趣可以直接找我要邮件通信系统的源码,我们实现了远程更新客户局域网数据的功能。
解决方案:
错误,中间层肯定不能用webservice,要用remoting,webservice在频繁的增删改查,效率超慢,用微软的remting就可以解决这个问题,基本上不慢,安全和性能全部解决了,

时间: 2024-09-20 00:22:35

c# WINFORM 分布式系统架构疑问的相关文章

服务器-关于在CDN上部署分布式系统的疑问

问题描述 关于在CDN上部署分布式系统的疑问 CDN上有不同的边缘服务器,每个服务器上会对内容进行同步.我的问题是:1. 每个服务器上都是一套独立的控制系统来响应用户请求,那做重定向的服务器应放在哪里?2. 每个服务器上都是一套独立的分布式数据库还是每个服务器上仅有一个数据库节点而已?如果可以请大神详细介绍一下CDN的基本架构,我发现很多对CDN的介绍只是给外行看的,细节上不详细.谢谢. 解决方案 你吓死我了........................... 解决方案二: 分布式系统之部署

一文读懂Hadoop、HBase、Hive、Spark分布式系统架构

机器学习.数据挖掘等各种大数据处理都离不开各种开源分布式系统,hadoop用户分布式存储和map-reduce计算,spark用于分布式机器学习,hive是分布式数据库,hbase是分布式kv系统,看似互不相关的他们却都是基于相同的hdfs存储和yarn资源管理,本文通过全套部署方法来让大家深入系统内部以充分理解分布式系统架构和他们之间的关系 本文结构 首先,我们来分别部署一套hadoop.hbase.hive.spark,在讲解部署方法过程中会特殊说明一些重要配置,以及一些架构图以帮我们理解,

分布式系统架构实战--简易版支付系统部署(单节点)

一.前期准备 1.MySQL数据库的安装:MySQL-5.6.22,自行安装 2.Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装 3.Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装 4.Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装 5.持续集成管理平台(SVN.Nexus.Maven.Hudson)的安装: Dubbo视频教程--基础篇--第11节至18节 6.Dubbo视频教程--高级篇--第21节

大型分布式系统架构

本文主要是从软件的质量属性的角度,来分析大型分布式系统通常采用的架构方法. 1. 性能 (Performance) 性能是指系统的响应能力,性能测试经常要使用基准测试(Benchmark Test). 提高性能的办法: 异步化 - 使用消息系统 和 batch处理 缓存 - 有多重缓存策略,本地缓存,分布式缓存同步,缓存服务器. 系统分割(水平和垂直分割)-  数据库读写分离 -  性能测试的办法:基准测试 2. 可靠性(Reliability) 是软件系统在应用或系统错误面前,在意外或错误使用

Web API应用架构在Winform混合框架中的应用(1)

在<Web API应用架构设计分析(1)>和<Web API应用架构设计分析(2)>中对WebAPI的架构进行了一定的剖析,在当今移动优先的口号下,传统平台都纷纷开发了属于自己的Web API平台,方便各种终端系统的接入,很多企业的需求都是以Web API优先的理念来设计整个企业应用体系的.Web API作为整个纽带的核心,在整个核心层需要考虑到统一性.稳定性.以及安全性等方面因素.本文主要介绍,Web API应用架构,在Winform整合中的角色,以及如何实现在Winform混合

亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用,最多了解一些集群相关的知识,大部分人都可以对缓存技术掌握到这个程度.然而,仅仅对缓存相关的技术掌握到这种程度,无论是对于开发复杂的高并发系统,或者是在往Java高级工程师.Java资深工程师.Java架构师这些高阶的职位发展的过程中,都是完全不够用的.技术成长出现瓶颈,在自己

从小站到大站的部署架构总结

- 今天給大家介绍下运维部署常见的架构模型,以及他们的演变过程.你所接触的站点用的什么部署模型呢?? ** 一.常见的网站部署架构模型 ** 一. 单机集中式 1.1 什么是单机集中方式? 单机-单个独立的系统实例化部署,也就是把所有的应用都堆积到一个实例上,实例常指:单个主机或者单个vps.  集中式-集中的什么?集中的应用(Application).文件(DATA).数据(File).  Application 包括一部分 app server 和应用程序代码.  File 常指静态类型的文

《分布式系统:概念与设计》一第3节 练习

前 言 在互联网和Web持续发展并且对我们社会的每个方面都产生影响的时候,这本教材的第5版问世了.本书的介绍性章节提到互联网和Web对诸多(如金融.商业.艺术.娱乐等)应用领域的影响以及对信息社会的普遍影响.它还强调了诸如Web搜索和多人在线游戏等应用领域中的需求.从分布式系统的角度出发,这些开发在应用的范围.多个现代系统所支持的工作负载和系统大小等方面正在对底层系统架构提出实质性的新需求.重要的趋势包括网络技术上不断增加的多样性和普遍性(包括不断增加的无线网络的重要性).移动和无处不在计算元素

《循序渐进学Spark 》Spark架构与集群环境

Spark架构与集群环境 本章首先介绍Spark大数据处理框架的基本概念,然后介绍Spark生态系统的主要组成部分,包括Spark SQL.Spark Streaming.MLlib和GraphX,接着简要描述了Spark的架构,便于读者认识和把握,最后描述了Spark集群环境搭建及Spark开发环境的构建方法. 1.1 Spark概述与架构 随着互联网规模的爆发式增长,不断增加的数据量要求应用程序能够延伸到更大的集群中去计算.与单台机器计算不同,集群计算引发了几个关键问题,如集群计算资源的共享