精华内容
下载资源
问答
  • WEB应用程序B/S与C/S架构的比较

    千次阅读 2005-04-22 10:37:00
    这段时间颇为郁闷, 感觉做程序这行实在是太枯燥,而且似乎生活圈子越来越小。索性就以前所接触到一些项目写点东西,也算是...)从这些应用程序常规架构上来说,一般可分为C/S或B/S两种,其中B/S是当前比较流行采用

          这段时间颇为郁闷, 感觉做程序这行实在是太枯燥,而且似乎生活圈子越来越小。索性就以前所接触到的一些项目写点东西,也算是做一个总结与纪念。

           当前很多的厂商都试图使用基于WEB的应用程序进行企业管理(例如:企业资源规划ERP、项目管理EPM、客户关系管理CRM、物料需求规划MRP。。。)从这些应用程序的常规架构上来说,一般可分为C/S或B/S两种,其中B/S是当前比较流行采用的形式,那么我就先总结一下这种WEB浏览器为客户端的优点所在:

          ·使用此种架构开发的应用,无须专门购置或开硬件终端,只要有PC和能上网的地方就可以使用。

         ·软件的升级、维护工作只须在服务器上进行,无须对每台客户端进行维护。

         ·与C/S相比教,有更为开放的标准,更容易实现跨平台。

         但也不是说使用C/S就是属于落后过时的,以下是我总结的使用C/S的一些优势:

         ·不受IE或其他WEB浏览器的限制,可以更好的与操作系统结合,比如能实现对周边硬件的控制等。

         ·某些功能可以在客户端机器上运行,不像B/S的程序,功能全部都要请求服务器处理。

         ·不一定需要上英特网,数据相对稳定与安全。

          总的来说,两种架构都各有其优缺点,主要是看具体开发什么类型的应用了。

    展开全文
  • 作者从云计算环境下应用的特点出发,分析了在云计算环境下应用程序开发设计的一些新变化。根据这些特点,本文提出一个“自我感知应用...在传统的Web应用设计,我们在架构上一般采用基于多层架构的设计,在Web层大量
  • 具体来说,在Web应用中主要通过调用现成API来完成这个功能。而且使用这些技术时,基本上没有什么技术含量。因为在具体工作中使用这些技术都是采用基本固定格式。命名技术就是其中一个典型代表。在这篇文章中...

    与传统的CS(客户端与服务器端)架构相比,J2EE Web程序服务器提供了很多额外的技术支持。而且这些技术是一般Web应用程序都需要用到的,但是Web程序开发人员不需要再另行开发,只需要直接拿过来使用即可。具体的来说,在Web应用中主要通过调用现成的API来完成这个功能。而且使用这些技术时,基本上没有什么技术含量。因为在具体工作中使用这些技术都是采用基本固定的格式。命名技术就是其中一个典型的代表。在这篇文章中,笔者根据自己的经验,谈谈这方面使用过程中的注意点。
        一、 与传统架构之间的区别。
        在使用这个技术之前,笔者认为开发人员至少需要知道,在Web架构与CS架构之间的区别。只有如此,才能够更加全面的了解采用新技术所能够带来的优势。故笔者一开始就着重强调两者之间的差异。
        在应用程序开发中,如果一个类A需要调用另外一个类B,则类A需要知道类B的源程序,然后在其中新建一个类B的实例,才能够实现调用。而且当一个程序改变时,还需要重新编译。从这可以看出,类与类之间的连接需要通过实例来完成,他们之间的连接就比较混乱。
        而采用J2EE命名服务则不需要这么麻烦。简单的说,JE22命名服务器提供了应用构件程序的命名环境。如果采用了这种技术的话,那么实现类调用时,就可以不通过实例来完成。做一个形象的比喻,命名服务就好像是一个地址簿。当开发人员在程序开发时采用了新的构件或者新建了某个类,那么相关的信息就会都在这个地址簿中登记。作为开发人员的话,就不需要再去查找原始的类,只需要在这个地址簿中查找即可。显然这方面了我们日常的开发工作,可以缩短开发的周期,同时简化类之间的引用。最重要的是,如果以后被引用的类有变化时,不需要编译整个应用程序,而只需要重编译有变化的类即可。
        二、 命名服务的核心环节解析。
        J2EE命名服务提供各种应用构件程序的统一命名环境。其英文简称是JNDI。从这个英文名字中可以看到,这个命名服务包括两层含义:命名和目录接口。我们在了解这个技术的时候,如果从这两个角度去理解,可能会更加简单一点。JNDI简化了高级Web程序类之间的查找调用。
        从技术上来说,JNDI主要是通过API来实现的。JNDI API提供了Web构件进行标准目录操作的方法。举一个简单的例子,可以将对象属性和Java对象联系在一起,或者通过对象属性来查找Java对象。当我们在电话簿中查找某个电话的时候,会现在索引中找到某个人的名字。然后再从这个索引中打开对应的记录,查找这个人的电话、住址等联系信息。JNDI核心的工作思路就是如此。在上面笔者谈到过,这些技术都是采用基本固定的调用格式。也就是说,JNDI已经被标准化。为此应用程序可以通过使用JNDI来访问其他通用的命名服务。如支持常用的We命名协议、DNS等命名架构。笔者认为这点非常的重要。因为其支持多种命名结构,则可以与其他平台的应用系统,如C++等进行很好的系统的整合。


    三、 使用命名服务的注意事项。
        JNDI命名服务支持多种命名结构,如Web命名协议、DNS命名架构等等。那么到底该采用什么样的命名结构呢?这里面还是有比较大的学问。因为在以后系统维护中,可能要与其它应用程序进行整合。此时如果整合的系统采用相同或者类似的命名架购,那么以后整合的工作就会相对简单许多。一般来说,一家公司开发的产品,其采用的都是统一的命名架购。不管开发人员喜欢使用什么样的命名结构,公司都会要求其在后续的开发时采用公司规定命名架购,这也主要是为了方便后续与自己公司产品的集成。现在主要的问题是,如果公司接受的是客户委托授权的开发,同时又有与其他软件集成的内容在里面。那么对于这个命名架购可能需要特别的考虑。如要分析一下,企业现有软件所采用的命名架构。然后根据其采用的形式,来确定自己最终需要采用的命名结构。一般来说,在一个应用软件或者一个项目中,最好采用同一种命名架购,如采用的都是Web命名协议等等。这就好像在不同版本的电话簿中,采用的是同一个目录格式。这就会在很大程度上方便用户的查询。
        其次需要注意的是,虽然JNDI命名服务采用都是基本固定的格式,即已经采用了标准化的手段。但是从实际工作来看,开发人员往往需要结合实际情况,做出适当的调整。如需要考虑,命名的合理性。包括可读性、命名的长度等问题。虽然在具体的命名规则上,没有很严格的限制。但是如果设计合理、细节考虑周到,那么在很大程度上可以减少后续维护的压力。如在一个项目团队开发中,命名的规则需要经过项目成员的讨论通过,然后再进行强化培训。这对于后续项目成员按规则办事会有很大的帮助。再如,现在不少应用软件都是按模块来开发的。此时在命名规则设计时,也需要考虑到模块的分类。简单的说,一个模块一个目录。不要将不同模块的类存放在一起。这有利于后续应用软件的升级、二次开发等等作业。总之,虽然命名服务的使用比较简单,但是具体在设计时,还是有一定的难度。需要项目管理人员具有比较丰富的经验。一个合理的命名规则,对于应用程序的开发很有帮助。
        最后笔者需要强调的是,应用服务器定义的对象与用户自己定义的对象的区别。为了保障应用程序的正常运行,应用服务器往往会自动定义一些对象,如控制对象等等。而程序开发人员也会根据需要自定义相关的对象。这两种不同的对象对于JNDI命名服务来说,有什么区别呢?这里需要注意的是,JNDI在后台其采用的是多目录的形式,如其最上一层的目录是Java:Comp/env。后续的各种对象(包括应用服务器创建的和开发人员自己创建的),都放在这个目录下面。不过这里需要注意的是,两种不同形式创建的对象其所存放的目录是不同的。应用服务器创建的对象一般是存放在顶级目录中,一般目录的位置不能够改变。相反,用户自定义的对象,则可以分别根据所建立对象的特点来分门别类的建立目录。最常见的还是根据构件的类别和源代码所处的模块来建立目录。这方便了用户的查找。例如Ejb对象可以放在env/ejb目录中。然后在这个目录下面,再根据应用系统的模块创建几个子目录,来进行分门别类的管理。
        总之,JNDI命名服务采用了标准化与固定格式的手段,降低了技术门槛。与传统的开发架购相比,简化了类之间连接的管理,不需要通过很多的源代码就可以实现类之间的调用。不过如果要使用好这个技术,也有不少的难度。笔者这里讲的难度,不是指技术上的。而是指经验上的。如如果选择合适的命名架构、设计合理的命名规则等等,这些都需要开发人员具有一定的项目背景。否则的话,很难做出正确的判断。

    展开全文
  • 具体来说,在Web应用中主要通过调用现成API来完成这个功能。而且使用这些技术时,基本上没有什么技术含量。因为在具体工作中使用这些技术都是采用基本固定格式。命名技术就是其中一个典型代表。在这篇文章中...

         与传统的CS(客户端与服务器端)架构相比,J2EE Web程序服务器提供了很多额外的技术支持。而且这些技术是一般Web应用程序都需要用到的,但是Web程序开发人员不需要再另行开发,只需要直接拿过来使用即可。具体的来说,在Web应用中主要通过调用现成的API来完成这个功能。而且使用这些技术时,基本上没有什么技术含量。因为在具体工作中使用这些技术都是采用基本固定的格式。命名技术就是其中一个典型的代表。在这篇文章中,笔者根据自己的经验,谈谈这方面使用过程中的注意点。
    一、与传统架构之间的区别。
      在使用这个技术之前,笔者认为开发人员至少需要知道,在Web架构与CS架构之间的区别。只有如此,才能够更加全面的了解采用新技术所能够带来的优势。故笔者一开始就着重强调两者之间的差异。
      在应用程序开发中,如果一个类A需要调用另外一个类B,则类A需要知道类B的源程序,然后在其中新建一个类B的实例,才能够实现调用。而且当一个程序改变时,还需要重新编译。从这可以看出,类与类之间的连接需要通过实例来完成,他们之间的连接就比较混乱。
      而采用J2EE命名服务则不需要这么麻烦。简单的说,JE22命名服务器提供了应用构件程序的命名环境。如果采用了这种技术的话,那么实现类调用时,就可以不通过实例来完成。做一个形象的比喻,命名服务就好像是一个地址簿。当开发人员在程序开发时采用了新的构件或者新建了某个类,那么相关的信息就会都在这个地址簿中登记。作为开发人员的话,就不需要再去查找原始的类,只需要在这个地址簿中查找即可。显然这方面了我们日常的开发工作,可以缩短开发的周期,同时简化类之间的引用。最重要的是,如果以后被引用的类有变化时,不需要编译整个应用程序,而只需要重编译有变化的类即可。
    二、命名服务的核心环节解析。
      J2EE命名服务提供各种应用构件程序的统一命名环境。其英文简称是JNDI。从这个英文名字中可以看到,这个命名服务包括两层含义:命名和目录接口。我们在了解这个技术的时候,如果从这两个角度去理解,可能会更加简单一点。JNDI简化了高级Web程序类之间的查找调用。
      从技术上来说,JNDI主要是通过API来实现的。JNDI API提供了Web构件进行标准目录操作的方法。举一个简单的例子,可以将对象属性和Java对象联系在一起,或者通过对象属性来查找Java对象。当我们在电话簿中查找某个电话的时候,会现在索引中找到某个人的名字。然后再从这个索引中打开对应的记录,查找这个人的电话、住址等联系信息。JNDI核心的工作思路就是如此。在上面笔者谈到过,这些技术都是采用基本固定的调用格式。也就是说,JNDI已经被标准化。为此应用程序可以通过使用JNDI来访问其他通用的命名服务。如支持常用的We命名协议、DNS等命名架构。笔者认为这点非常的重要。因为其支持多种命名结构,则可以与其他平台的应用系统,如C++等进行很好的系统的整合。
    三、使用命名服务的注意事项。
      JNDI命名服务支持多种命名结构,如Web命名协议、DNS命名架构等等。那么到底该采用什么样的命名结构呢?这里面还是有比较大的学问。因为在以后系统维护中,可能要与其它应用程序进行整合。此时如果整合的系统采用相同或者类似的命名架购,那么以后整合的工作就会相对简单许多。一般来说,一家公司开发的产品,其采用的都是统一的命名架购。不管开发人员喜欢使用什么样的命名结构,公司都会要求其在后续的开发时采用公司规定命名架购,这也主要是为了方便后续与自己公司产品的集成。现在主要的问题是,如果公司接受的是客户委托授权的开发,同时又有与其他软件集成的内容在里面。那么对于这个命名架购可能需要特别的考虑。如要分析一下,企业现有软件所采用的命名架构。然后根据其采用的形式,来确定自己最终需要采用的命名结构。一般来说,在一个应用软件或者一个项目中,最好采用同一种命名架购,如采用的都是Web命名协议等等。这就好像在不同版本的电话簿中,采用的是同一个目录格式。这就会在很大程度上方便用户的查询。
      其次需要注意的是,虽然JNDI命名服务采用都是基本固定的格式,即已经采用了标准化的手段。但是从实际工作来看,开发人员往往需要结合实际情况,做出适当的调整。如需要考虑,命名的合理性。包括可读性、命名的长度等问题。虽然在具体的命名规则上,没有很严格的限制。但是如果设计合理、细节考虑周到,那么在很大程度上可以减少后续维护的压力。如在一个项目团队开发中,命名的规则需要经过项目成员的讨论通过,然后再进行强化培训。这对于后续项目成员按规则办事会有很大的帮助。再如,现在不少应用软件都是按模块来开发的。此时在命名规则设计时,也需要考虑到模块的分类。简单的说,一个模块一个目录。不要将不同模块的类存放在一起。这有利于后续应用软件的升级、二次开发等等作业。总之,虽然命名服务的使用比较简单,但是具体在设计时,还是有一定的难度。需要项目管理人员具有比较丰富的经验。一个合理的命名规则,对于应用程序的开发很有帮助。

    展开全文
  • 1、web应用架构的发展历程 现代网络架构由最开始的单体架构渐渐演变: 单体架构(MVC) 单体架构,所有的代码都是写在JSP里面。一个典型的单体架构就是一个应用、一个数据库、一个web容器。(如下图) 一般...

    1、web应用架构的发展历程

    现代网络架构由最开始的单体架构渐渐演变:

     

    • 单体架构(MVC)

    单体架构中,所有的代码都是写在JSP里面。一个典型的单体架构就是一个应用、一个数据库、一个web容器。(如下图)

    一般在在企业发展的初期,为了保证快速上线,或者传统企业中垂直度较高,访问压力较小的业务需求会采用这种架构风格。最初这种单体架构开发,开发速度快,成本低,但随着业务的发展,逻辑越来越复杂,代码量越来越大,代码得可读性和可维护性越来越低。用户的增加,访问量越来越多,单体架构的应用并发能力十分有限。

    • 垂直架构(MVC架构模式)

    在单体架构发展一段时间后,为了应对更大的流量,将系统进行MVC分层,每个层级有对应的职责,UI层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和数据库进行数据交换和存储。如下图

    • SOA(Service-Oriented Architectur)

    SOA即面向服务架构,它是一套松耦合的架构,服务的拆分原则是:服务内部高内聚,服务之间低耦合。将系统根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。这样使整个系统切分成很多单个服务组件来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。

    SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

    2、什么是微服务

    基于SOA(面向服务开发的架构),渐渐产生了微服务架构,微服务可以说是SOA的一种升华,它更加强调服务个体的独立性、拆分粒度更小。微服务的架构的就是将项目拆分成各个子项目,进行解耦操作,提供外部访问接口。比如:把淘宝网订单系统,商品系统,购物车系统,账户系统,支付系统等等分成一个个不同的子项目,每一个子项目就是一个微服务。

    微服务优点:

    • 微服务架构强调业务系统需要彻底的组件化和服务化,将复杂的业务拆分成多个小的业务,一个组件就是一个服务。
    • 微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。
    • 服务间采用HTTP协议通信,服务与服务之间完全独立。
    • 微服务不再强调传统SOA架构里面比较重的ESB企业服务总线
    • 微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。
    • 微服务的切分粒度会更小

    微服务带来的问题:

    • 分布式系统的复杂性:

    系统应用由原来的单体变成几十到几百个不同的工程,会所产生例如包括服务间的依赖,服务如何拆封,内部接口规范,数据传递等等问题,尤其是服务拆分,需要团队熟悉业务流程,懂得取舍,要保证拆分的粒度服务既符合“高内聚,低耦合”的基本原则,还要兼顾业务的发展。

    • 部署,测试和监控的成本问题

    对于分布式系统,部署,测试和监控都需要大量的中间件来支撑,而且中间件本身也要维护。

    • 分布式事务和CAP的相关问题

    原先单体应用很简单的事务问题 ,转到分布式环境就变得很复杂,分布式事务是采用简单的重试+补偿机制,还是采用二阶段提交协议等强一致性方法来解决,就要取决对业务场景的熟悉加上反复的权衡了,相同问题还包括对 CAP 模型的权衡,总之微服务对团队整体的技术栈水平整体要求更高。

     

     

     

     

     

     

    展开全文
  • 目前市面上各大解决方案提供商在电子商务和一般WEB应用领域都有相应分层解决方案,软件架构设计在这一方面几乎不存在多少争议。 出于对可扩展性以及可维护性考虑,对业务逻辑解耦得到...
  • .NET企业级应用架构设计系列之应用...目前市面上各大解决方案提供商在电子商务和一般WEB应用领域都有相应分层解决方案,软件架构设计在这一方面几乎不存在多少争议。 出于对可扩展性以及可维护性考虑,对业务
  • 并且一直采用单页面应用(Single Page Application)方式来进行开发。这种开发方式是在之前一年做一个创业项目经验和思考,一直想写篇博客来总结一下。 个人认为单页面应用的优势相当明显&#...
  • 当我们在开发设计大型软件应用时,我们一般都会采用分层的架构模式,比如,在WEB应用程序,下面这种架构是我们最为常见设计模式 在这样一个分层架构中,我们可以看到应用被分成了web层、业务层、数据层。在...
  • 网络应用系统---系统设计架构示例

    千次阅读 2007-07-30 10:00:00
    数据访问层一般封装数据库中的选择、添加、更新、删除操作,同时还为Web展示层提供访问数据库接口和函数。系统架构本系统采用ASP.NET应用程序最基本两层架构模式,其结构如图4-4所示。各层功能介绍
  • 互联网架构演变

    2019-07-06 23:26:28
    但随着浏览器出现便产生了web应用web应用的特点是界面部分是显示在浏览器,服务处理是在服务容器中的,页面显示一般用css+js+html技术来处理,而后端可以用java、php等语言,这就产生了前后端分离。...
  • 数据库中的XML应用实例

    千次阅读 2000-12-21 12:44:00
    数据库的XML应用实例作者:我们在该例介绍如何实现数据库和XML结合。您将可以看到,该例实现对一般的关系数据库进行查询等操作,并将...您可以在此基础上进行许多扩充的开发,特别是服务器/客户端架构的Web应用
  • 汉光HV-SCADA-WEB系统完全基于互联网技术架构采用先进设计理念,采用分层分布式模块化结构,从功能上划分为:主站监控管理层、中间采集通讯接口层、现场设备间隔层三层,前端数据基于通信接口读取,仪表装置...
  • 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcatservlet另一种运行方式 244 7.4 与servlet配置相关元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...
  • 采用W3C互联网组织机构规定的WEB标准:XHTML CSS构建,完全通过W3C互联网组织机构验证,实现结构(Structure)、表现(Presentation)、行为(Behavior)分离。友好界面、高效国际化内核的应用,可在不同浏览器、...
  • SSH 为 Struts+Spring+Hibernate一个集成框架,是目前较流行一种Web应用程序开源框架。其中使用Struts作为系统整体基础架构,负责MVC分离,在Struts框架模型部分,控制业务跳转,利用Hibernate框架对持久...
  • Web是一种分布式应用架构,旨在共享分布在网络上各个Web服务器所有互相连接信息。Web采用客户/服务器通信模式,各户与服务器之间用http协议通信。Web使用HTML来连接网络上信息。用户可以通过浏览器获取Web...
  • SSO-WebDemo

    2013-08-12 20:25:57
    样例包含一个身份认证服务器和两个简单的Web应用,使得这两个 Web应用通过统一身份认证服务来完成Web-SSO功能。此样例所有源代码和二进制代码都可以从网站地址http://gceclub.sun.com.cn/wangyu/ 下载。 ...
  • 一般网站有哪些常见漏洞?

    千次阅读 2018-09-26 18:13:03
    Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务统称。随着互联网广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问,大多数...
  • 我想这也是为什么很多公司、或外包公司依然维护这样一套架构的主要原因。 <p><strong>总结 这几年的飞速发展,为我们节约了大量的经历、降低了开发者和开发过程的门槛,极大提升了开发效率和迭代速度&#...
  • 该系统采用客户端/服务器架构,通过在嵌入式设备内建一个嵌入式Web服务器,可使得相应嵌入式设备直接接入Internet。同时用户可使用标准网络浏览器,通过网络对此设备进行访问、控制和管理。  随着Internet...
  • 被广泛运用于Web领域,下面来介绍一下MySQL从启动到执行一条SQL语句大致过程首先从整体上来看:MySQL采用客户端到服务器端的架构,分为服务器端和客户端,它们都是计算机进程,一般采用TCP/IP作为它们通信网络...
  • 用 Quartz 进行作业调度Quartz API 采用多面方式在 Java 应用程序进行任务调度简介:Quartz 是个开放源码项目,提供了丰富作业调度集。在这篇文章,软件工程师 Michael Lipton 和 IT 架构师 Soobaek Jang 对 ...
  • Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件方式设计。即整体功能是通过组件方式拼装完成。另外...
  • 1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发...
  • 本篇文章先简单介绍了互联网架构的演变,进而介绍了服务化,最后再介绍微服务,微服务是服务治理的升级也是互联网架构的...mvc架构但随着浏览器的出现便产生了web应用web应用的特点是界面部分是显示在浏览器,...
  • 服务治理与微服务

    2018-02-02 09:21:00
    互联网架构演变 一体架构 ...但随着浏览器出现便产生了web应用web应用的特点是界面部分是显示在浏览器,服务处理是在服务容器中的,页面显示一般用css+js+html技术来处理,而后端可以用jav...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

web应用中一般采用架构的是