当前位置: 首页 > news >正文

.NET企业级应用架构设计系列之应用服务器

本文属spanzhang(张友邦)原创,发布地址为:http://blog.csdn.net/spanzhang。转载或引用请注明原文之出处,谢谢!

.NET企业级应用架构设计系列之开场白

.NET企业级应用架构设计系列之技术选型

这里要说到的是关于三层架构中的应用服务器。对于电子商务网站来说,成熟的架构基本上都是采用分层式的。分层的结构一方面适合人脑的思维方式,另一方面在解决扩展性方面非常有效。目前市面上的各大解决方案提供商在电子商务和一般WEB应用领域都有相应的分层解决方案,软件架构设计在这一方面几乎不存在多少争议。

出于对可扩展性以及可维护性的考虑,对业务逻辑的解耦得到的便是应用服务器。这样的情况在软件系统中非常常见,在任何情况下都能通过额外一层间接来获得灵活性,但可能会引入潜在的性能问题。在Windows Server 2008问世之前的.NET平台没有应用服务器的专门产品,架设应用服务器可以有多种可选的方案。常用的.NET应用服务器方案有:
A) 使用IIS驻留ASP.NET Web Service
B) 使用.NET Remoting提供远程对象
C) 使用Enterprise Services (COM+)提供跨进程对象调用

这三种方式中,采用TCP/Binary通道的.NET Remoting是三个方案中性能最好的,而采用ASP.NET Web Service则能提供更多的跨平台特性。在性能对比上,ASP.NET Web Service大约是TCP/Binary .NET Remoting的60%左右(和传递的数据有关),这中间的差异来自于网络传输上,ASP.NET Web Service会花费较多时间在大对象的数据串行化(Serialization)上。二进制格式的Remoting实现也提供了对象级(包括单件——singleton特性)的支持,在性能要求占主导地位的方案中较多采用。

面对这个情况,最好的解决方法是在实现的时候提供一个更加灵活的架构来随时调整策略而让调整的代价保持在最小。也就是说,把系统的核心逻辑实现为一个对象群,然后通过facet方式以最小的努力适配到不同的调用接口上。当然,最初是以SOA的方式发布WEB服务给客户端调用,以尽量实现可移植的环境。如果发现这种模式成为了系统中的性能瓶颈,则改为TCP/Binary .NET Remoting的方式发布对象

总的来说,应用服务器的架构是一个演化模型,可以随着需求和实际负载的变化实行平滑过渡。当应用服务器的横向扩展也无法应付更大的负载的时候,实际的性能瓶颈已经转移到了系统的其它地方,比如磁盘访问或接入带宽等。

相关文章:

  • 概率题怎么使用计算机计算,计算机系统结构计算问题答案.ppt
  • 上海电子信息职业技术学院计算机网络技术,【五月校考考纲】2018年上海电子信息职业技术学院-计算机应用...
  • 英雄会精彩片段-电梯演讲和云计算,创业论坛
  • 为什么我手机的科学计算机算的不对,“手机计算机和科学计算机算出来答案不一样,我到底该信哪个哈?”...
  • 深入探索Symbian多视图程序开发
  • summernote html标签,关于summernote编辑器代码段html的插入问题
  • JavaEE下的测试驱动 乱弹
  • html替换标题工具,TEReplace插件快速替换Typecho标题/内容关键字
  • 忙碌并快乐的2008北京春季之旅
  • 山西师范大学数学与计算机学院宿舍,山西师范大学数学与计算机学院介绍
  • 地大计算机学校2020考研大纲,【2020-2021】院校计算机考研初试科目变动情况统计...
  • 北交计算机考研保护一志愿吗,09我的考研之旅(北交计算机)
  • 2010年秋 江苏计算机二级,2011年秋江苏省计算机二级考试参考答案公布(10月15号考试)...
  • Microsoft Announcing Windows Mobile 6.1 from LAS VEGAS April 1, 2008
  • 计算机系统精品课,计算机系统-攀枝花学院精品课程网.ppt
  • [译]CSS 居中(Center)方法大合集
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 0x05 Python数据分析,Anaconda八斩刀
  • 3.7、@ResponseBody 和 @RestController
  • fetch 从初识到应用
  • gops —— Go 程序诊断分析工具
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mysql数据库的条件查询语句
  • Redis 懒删除(lazy free)简史
  • swift基础之_对象 实例方法 对象方法。
  • VUE es6技巧写法(持续更新中~~~)
  • zookeeper系列(七)实战分布式命名服务
  • 初识 beanstalkd
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 聊聊redis的数据结构的应用
  • 如何实现 font-size 的响应式
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 优化 Vue 项目编译文件大小
  • ​2020 年大前端技术趋势解读
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (poj1.3.2)1791(构造法模拟)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (TOJ2804)Even? Odd?
  • (第61天)多租户架构(CDB/PDB)
  • (蓝桥杯每日一题)love
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)RocketMQ初步认识
  • (转)3D模板阴影原理
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能