zoukankan      html  css  js  c++  java
  • 第二章 设计程序架构 之 分布式应用

    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,用多个服务器并行处理用户请求。

  • 相关阅读:
    UVA 12697 Minimal Subarray Length
    学渣乱搞系列之后缀数组
    HDU 3518 Boring counting
    NYOJ 832 合并游戏
    如何在SAP里创建configurable material物料主数据
    在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
    使用SAP C4C rule editor动态控制UI上某个按钮是否显示
    ABAP SICF服务和Java Servlet的比较
    一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍
    Java实现的有道云笔记图片批量下载工具
  • 原文地址:https://www.cnblogs.com/stone_lv/p/4598340.html
Copyright © 2011-2022 走看看