第二章 设计程序架构 之 分布式应用
作者:互联网
1. 概述
分布式应用是将程序的互相协作的各个模块放到不同的服务器上,从而提高程序的性能和可靠性。
本章内容包括:集成web service、设计复合应用、分布式环境的session管理 以及 web farms。
2. 主要内容
2.1 集成web service
可以使用Asp.Net MVC4 创建 REST(Representation State Transfer) 服务。
使用 ApiController来返回序列化的数据。这个Controller根据Html头的Accepts属性来决定返回Xml或者Json格式的数据。
* ASP.NET Web Services (ASMX)是微软之前的web服务技术,可以让调用者方便的调用其中的方法,但是不能定制化特定的部件,比如传输协议、安全性、编码方式。目前该技术已被WCF和Web API代替。
使用ASP.NET MVC4可以方便的从Rest url中获取数据:
private HttpService _httpService; public ArticleRepository() { _httpService = new HttpService(); } public IQueryable<Article> GetArticle s() { Uri host = new Uri("http://www.yourdomain.com"); string path = "your/rest/path"; Dictionary<string, string> parameters = new Dictionary<string, string>(); NetworkCredential credential = new NetworkCredential("username", "password"); XDocument xml = _httpService.Get(host, path, parameters, credential); return ConvertArticleXmlToList(xml).AsQueryable(); } private List<Article> ConvertArticleXmlToList(XDocument xml) { List<Article> article = new List<Article>(); var query = xml.Descendants("Article") .Select(node => node.ToString(SaveOptions.DisableFormatting)); foreach (var articleXml in query) { article.Add(ObjectSerializer.DeserializeObject<Article>(articleXml)); } return article; }
2.2 设计复合应用
复合应用就是一个应用程序分布在多个地方。随着各种云的推广普及,这种方式已经开始流行了。
有两种主要的复合模式
① 客户端中心模式:客户端负责决定在哪里调用服务。
这种模式容易编码,同时失败率也高。客户端和服务耦合度高。
② 系统中心模式:采用面向服务的架构(SOA),包含一个service bus(比如 Windows AppFabric),由它负责分发服务请求。
设计复合应用需要注意的事项:
① 弹性连接控制(Connection resiliency),要考虑连接中断后的恢复。
② 访问授权控制,需要管理多个域的访问控制。
③ 持久化和并发,需要考虑处理相继到来的消息及其生命周期。
2.3 分布式应用中的session管理
ASP.NET MVC4 是被设计为以无状态方式运行的。每次调用都可以传递所有需要的信息。
IIS支持三种session存储模式:InProc、StateServer、SqlServer。
2.4 Web Farms
web farms 是用来分担web请求的一组服务器。几个好处:
① 提高稳定性。
② 提高响应速度。
③ 提高可伸缩性。
需要注意的问题是,web farms 环境下,session存储要采用OutProc方式(StateServer or SqlServer)。
3. 总结
① web service 是一种通过Internet在多个系统间传递信息的传统架构。
ASMX服务使用WSDL同订阅者通信,包括 终结点、协议 和 信息格式。
WCF基于SOAP协议,是目前的主流。
ASP.NET MVC4 Web API 可以使用 MVC 模式来处理http请求。
② 设计分布式应用是一项非常复杂的任务。尤其是各个独立部署的部分之间的通信问题。
③ 分布式应用中,状态管理是需要考虑的核心问题。
④ 分布式环境可以提高程序 可用性、稳定性 和 可伸缩性。可以使用web farms,用多个服务器并行处理用户请求。
转载于:https://www.cnblogs.com/stone_lv/p/4598340.html
标签:Web,架构,web,分布式应用,farms,session,new,第二章 来源: https://blog.csdn.net/weixin_30332241/article/details/97367051