精华内容
下载资源
问答
  • 动态Web services

    千次阅读 2003-08-27 09:01:00
    动态Web services 作者: Atul Saini在今天的商业环境中,重要信息存在与企业的许多异构系统中。其包括:•客户关系管理(CRM)系统•金融会计系统•企业资源安排(ERP)系统•Web servers•遗留系统这些信息必须...

    动态Web services             作者: Atul Saini<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    在今天的商业环境中,重要信息存在与企业的许多异构系统中。

    其包括:

    客户关系管理(CRM)系统

    金融会计系统

    企业资源安排(ERP)系统

    •Web servers

    遗留系统

    这些信息必须通过多触点访问,这些系统已典型地演变为内部隔离的机构。他们注重与产品线和部门职能而不是客户的需要,虽然如此,这些系统还是包含有战略性数据。

    包含了重要信息的额外系统通常需要组合,所以商家极力寻找集成和商业过程管理(BPM)解决方案,这能扩展先前投资的寿命和增加投资的生产力。

    现在有几个平台能实现Web services——最著名的不同卖方的J2EE应用服务和微软的 .NET Web services 都能提供基于标准的企业内或跨企业的数据存取方案。基于Web services 的实现集成解决方案允许企业动态减少与企业应用集成相关的传统高额费用,这是因为Web services解决方案是基于工业标准的,不需要应用和产品所有者的特定知识。就因为此,许多企业愿意为EAIBPM采取基于Web services的解决方案。

    EAI的平台需要

       不是所有的Web services平台能被用于EAIout-of-the-box。这些问题包含在实现分布式EAIBPM的解决方案中,在潜在的平台中增加特殊的需要。这节剩下部分就要讨论该需要,其是高效性和可扩展性所必需的。

    完全分布式、对等网络、基于事件的架构

       真实的商业过程是典型的多应用、多硬件和多软件系统的分布式的;他们也是基于事件的,这是因为这些过程是典型的通过一系列事件连接在一起的。因此,一个平台应能努力实现企业内和跨企业需要的商业过程集成,它需要在完全分布式节点上运行这些过程。一个有效的EAI/BPM平台必须需要一个对等网络的架构,用软件引擎方法来开发,强调其各种安全性,控制权,动态访问和灵活性。该平台必须是对称的,这意味着同样基于事件基础结构的软件需要执行在企业内的所有机器上。大部分EAIBPM解决方案通过中央系统控制商业过程,这样,应用的改变或增加新的应用,就需要在中央系统改变。这种拓扑就存在效率低不够灵活性,从而导致在分布式系统中瓶颈的存在。

    过程路由透明

    一个EAI基础架构平台应该在组成解决方案的不同过程中提供完全透明的信息流。为了提供不用任何编程的灵活的改变管理能力,系统内各组件对过程的信息路由应该是无须考虑的。

    基于service-架构的灵活性

    一个EAI平台应该保证其易于部署、管理和能改变参与的过程。这意味着一个基于组件的架构,在这个架构中的应用是由粗糙的组件松散组合的,它们通过基于事件的消息相互束缚,每个service潜在地运行在分离过程中。这容许一个快速的部署模型,减少实现解决方案的引导时间。这个架构提供对飞速修改的过程的支持工具,所以分析员能改变和即时重部署过程以满足商业需求的改变。

    远程部署、监测和管理

    一个EAI基础架构平台应该能提供在网络上的部署、管理和监测的方法。它也应该支持对数据和事件的实时监测,这将明显减少时间和分布式商业过程的部署花费。

    企业标准支持

       为了对数据交换、消息传送支持,现存的企业标准和BPM能动态减少EAI基础架构的整个花费。它无须考虑特定的需要或在部署方案中特定的知识,因为在商业伙伴之间需要交换的内容,扩展标记语言(XML)消息和文档就是所期望的格式。大部分的商家欲用已存架构中的消息、组件、services、企业数据、轻权路径访问协议(LDAP)路径服务、e-mail系统,等等来开发系统。所以一个EAI平台需要保证容易实现这些标准。

     

    现在Web services架构存在的问题

    虽然为了EAIWeb services的兴趣很高,但是现在的Web services平台对实现EAI还存在一些问题。这些已存Web services平台的原则问题(包括基于J2EE应用服务和微软的 .NET)是:

    请求/答复语义效率低

    现存的Web services平台是典型的基于请求/答复语义的,每个Web services通过使用简单对象访问协议(SOAP)请求联系,然后模块等待,直至结果返回给调用者。平台是基于投票表决和需要人工编码来获取Web services的输出的,并把它传递给不同的Web services或在工作流内的应用。在Web services内的数据流缺少事件总线,从而使得EAI解决方案中以存的Web services平台效率低下。

    集中、不可升级的架构

        现在的EAI解决方案通过中央系统控制商业过程,应用的改变或新的应用就需要改变中央系统。而且,在应用间的所有数据交换需要经过中央系统,这种拓扑结构将导致分布式系统的瓶颈,并且引起明显的效率低和不灵活。

    缺少远程部署、监测和日志

        典型的分布式系统有许多services运行在跨网络的不同机器上,如果任何这些services服务失效,在这系统上的其它组件应该被提醒。一个EAI平台应该要为这样的分步式的监测提供services的建构,还要加上远程跟踪和日志设施。在远程节点上自动部署Web services的另一个目的是可以减少维护和实现的费用。存在的中央Web services平台没有对远程service部署的支持,这是因为网络的刹车没有为部署提供基础架构级别的支持,导致为了解决方案的开发和部署增加了时间。

     

    使用services操作平台

    现在Web services基础结构平台不能解决相关EAIBPM的核心问题,这些问题最好是采用事件方式的Web services解决,即我们所提到的动态Web services。最好在完全分布式情况下实现,有事件的基础架构我们称之为services操作平台(SOP)。SOP便于分布式的企业应用使用可视化工具进行合成、部署、和修改。一个强大的SOP就在于它能为公司的EAIB2B集成、BPM、合作和通用分布式计算需要提供一个单一整体平台。

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-8-261251130.png

    1所示为一个典型SOP节点的架构。在一个典型企业中,基于这种架构的每个网络节点都运行着一个daemon,这些daemon通过消息总线相连接,就如图2所示。从图1中可以看到,一个SOP提供为基于事件的消息、透明过程路由、远程监控跟踪和日志、时序安排、现场和可用性、安全和远程部署提供构建支持。

    一个SOP是个纯粹的基础架构平台,它允许任何种类软件的services实现,包括Web services。它不同于现存的Web services实现就在于它需要一个完全的分布式的对等网络的使用消息的基础架构,而不是一个中央请求/答复的基础架构。一个SOP能为客户提供这些优点。

    CSDN_Dev_Image_2003-8-261251132.png

    基于services的应用合成

     部署在SOP上的应用是由一个或更多的services(或组件)复合而成的,每个service随意运行在分离的进程中。Services可能是任何语言编写的并通过XML消息相互通信。这允许该结构是灵活的且易于修改的系统。

    在飞速的商业过程中部署和改变

    SOP上的动态Web services实现是粗糙的services,它们很理想是易于改变和替代,而且在SOP上的services实现是很明显的在services距离间路由。这使得它商业过程的飞速的修改动态服务替换或增加变得简易。一个SOP也支持执行期services的部署,允许改变商业过程为通过网络的即时部署,与传统的解决方案相比这将是数量级上地降低部署费用。

    错误容忍性、可测量性,可靠性

          SOP对称的对等网络的结构提供了高可测量可靠的平台,它没有一个单点的失误,缺少中央系统给予了应用开发者在所需services之间直接路由数据而定义网络的拓扑选择上以最大的灵活性。

    组件级别的安全

         一个SOP给予管理员以完全控制是哪个services被执行,在哪执行,同时确保安全。

    SOP让管理员为每个services设定任何数量上的安全属性,并且提供工具配置在任何网络上的点服务的安全设定。

    执行期监测、跟踪和日志

          一个SOP为执行期监测、跟踪和日志包含自身、服务级别支持。所有的services能通过可视化工具进行监测。跟踪级别能在已部署的services上动态改变,并且调试日志能被在任何节点上的软件工具路由传送。这些特点大大简化了在SOP运行的分布式应用的开发、部署和调试。

     支持可视化过程合成和改变管理工具

    一个SOP包含应用程序接口(API)以支持软件工具的开发,它允许分布式应用的迅速合成,通过使用拖和点services面版上的可视图标来构建应用设计者的商业过程。这同一环境也允许监测所有分布式网络上的所有services

    支持企业标准

    一个SOP使用基于标准的Java 消息服务(JMS)与标准的XML进行消息交换,使用XSLT数据能被翻译成Tifosi  SOP和其它任何应用或服务格式。一个组件解决开发包(SDK)让使用者能连接任何使用SOP的已存在的组件或服务。其它企业标准,例如简单邮件协议(SMTP)和简单网络管理协议(SNMP),使得其能与其它企业系统进行集成。

    支持通用目的的services

    一个SOP也支持不是实现为特定Web services的组件集成。一个通用目的的service能有任何不变数量的输入和输出端口,而一个Web service逻辑上仅有一个输入和一个输出端口。在他们的集成努力下,通用services为企业提供额外的灵活性。经常,它较容易模型化遗留程序代码为通用目的的软件service而不是特定的Web service

     

    结论

    EAIBPM和相关企业问题以存的方法不能完全满足这些问题对潜在基础结构的需求。基于service的结构,在完全分布式、对等网络、事件驱动系统上的实现,为企业平台空间带来了整个新级别的通用性。

    SOP实现了这种方式,阐述了BPM在应用和人们交互级别上的需要。它在企业内或跨企业的、跨领域的(包含被不同传统解决方案服务的领域)阐述了这些需要。为了所有的分布式计算的需要,为了节省时间和金钱,为了增加跨部门的处理效率,一个SOP保证允许一个企业建立一个统一的计算基础架构。

     

     

    About the Author

    eAI Journal • April 2003 19

    Atul Saini is CEO

    and chief technical

    officer of Fiorano

    Software. Through his

    leadership, the company’s

    flagship product,

    FioranoMQ, has

    become a leading

     

     

     

    展开全文
  • 作为一种资源的组织和表达机制,Web已成为Internet主要的信息传送媒介。因此Web的性能已经成为判断一个网站成功与否的一个重要评估标准。而Web Server则是决定Web性能的重要环节。Web系统在现在网络中广泛使用,而...
  • Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式: 1. 内联样式表:即直接设置元素的style属性 2. 嵌入样式表:即在html页面上写一个<style>……..</style> 代码段,然后设置元素的c...
    Posted on 2012-03-23 11:21 祥叔 阅读(2886) 评论(6) 编辑 收藏

    Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式:

    1.       内联样式表:即直接设置元素的style属性

    2.       嵌入样式表:即在html页面上写一个<style>……..</style> 代码段,然后设置元素的class 属性

    3.       外部样式表:即写一个独立的.css 文件,然后再html页面上引入该文件,然后设置元素的class属性

     

    具体如何操作,这里就不说了。不懂的去百度一把,绝对会出现一大坨。

     

    同样的,在WP7开发中,也有类似以上几种方式设置控件的样式——开发平台可以千差万别,编程思想都是大同小异的。

     

     一,内联样式:

    直接设置控件的Height WidthForegroundHorizontalAlignmentVerticalAlignment 等属性。以设置一个Botton控件的样式为例,如:

    复制代码
        <Grid x:Name="ContentPanel" >
                <Button Content="Button" Name="btnDemo" 
                        Height
    ="72" 
                        Width
    ="150" 
                        Foreground
    ="White" 
                        Background
    ="Blue" 
                        HorizontalAlignment
    ="Left" 
                        VerticalAlignment
    ="Top" 
                        Margin
    ="170,132,0,0" 
                        Grid.Row
    ="1" />
              </Grid>
    复制代码

     这种方式比较简单,但是代码不能复用。

     

     二,嵌入样式:

    在页面<phone:PhoneApplicationPage.Resources> 节点下添加样式,然后在需要的控件上设置Style 属性。还是以上面那个Botton控件为例。 

         1,在页面<phone:PhoneApplicationPage.Resources>节点下添加一个Key值叫“BtnStyle”的样式

    复制代码
      <phone:PhoneApplicationPage.Resources>
            <Style x:Key="BtnStyle"  TargetType="Button">
                <Setter Property="Height" Value="72" />
                <Setter Property="Width" Value="150" />
                <Setter Property="Foreground" Value="White" />
                <Setter Property="Background" Value="Blue" />
                <Setter Property="HorizontalAlignment" Value="Left" />
                <Setter Property="VerticalAlignment" Value="Top" />
            </Style>
        </phone:PhoneApplicationPage.Resources>
    复制代码
          2, 设置Botton 控件的Style 属性为"{StaticResource BtnStyle}" 
       <Grid x:Name="ContentPanel" >
                <Button Content="Button" Name="btnDemo" 
                       Style
    ="{StaticResource BtnStyle}"
                        Margin
    ="170,132,0,0"  />
       </Grid>

     

    解释一下,TargetType="Button" 指定了该样式适用于Botton类型的控件Key="BtnStyle" 如果不设置该值,则该样式将适用于所有的Botton 控件,而设置了其值为“BtnStyle,则只用于设置了  Style="{StaticResource BtnStyle}" Botton控件。这就好比CSS中的元素选择器和类选择器。

     

    这种方式可以使得单个页面上的控件能够复用一个样式,比第一种方式面向对象了一步。 

    三,外联样式:

    1,新建一个.xaml资源文件,/Resources/BtnStyle.xaml

    2, BtnStyle.xaml文件里编写样式代码

    复制代码
    BtnStyle.xaml: 
    <ResourceDictionary
      
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:System
    ="clr-namespace:System;assembly=mscorlib">
        <Style x:Key="BtnStyle" TargetType="Button">
            <Setter Property="Height" Value="72" />
            <Setter Property="Width" Value="150" />
            <Setter Property="Foreground" Value="White" />
            <Setter Property="Background" Value="Blue" />
            <Setter Property="HorizontalAlignment" Value="Left" />
            <Setter Property="VerticalAlignment" Value="Top" />
        </Style>
    </ResourceDictionary>
    复制代码

        
        3,在App.xaml文件的<Application.Resources>

                 或者普通页面的<phone:PhoneApplicationPage.Resources>

                 或者用户控件的 <UserControl.Resources>  节点下

                添加相应的ResourceDictionary,配置引用BtnStyle.xaml:

    复制代码
    app.xaml:
        <Application.Resources> 
            
             <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources/BtnStyle.xaml"/>
                <!--<ResourceDictionary Source="Resources/BtnStyle2.xaml"/>
                    <ResourceDictionary Source="Resources/BtnStyle3.xaml"/>
    -->
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
            
        </Application.Resources>
    或者MainPage.xaml:
    <phone:PhoneApplicationPage.Resources>

            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources/BtnStyle.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>

    </phone:PhoneApplicationPage.Resources>
    复制代码

     <ResourceDictionary.MergedDictionaries>节点下可以添加多个资源文件

    这种方式相比前面两种使得样式和结构又更进一步分离了。

    App.xam引用,是全局的,可以使得一个样式可以在整个应用程序中能够复用。在普通页面中引用只能在当前页面上得到复用。


         4, 
    设置Botton 控件的Style 属性为"{StaticResource BtnStyle}" 和上面的一样。

     

     四,用C#代码动态加载资源文件并设置样式

         1,新建资源文件:同上面的12两步。

        2,在后台编写代码           

         ResourceDictionary resourceDictionary = new ResourceDictionary();

         Application.LoadComponent(resourceDictionary, new Uri("/PhoneApp1;component/Resources/BtnStyle.xaml", UriKind.Relative));
         Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
         //以上几行代码表示将我们自定义的样式加载到应用程序的资源字典中。
         this.btnDemo.SetValue(Button.StyleProperty, Application.Current.Resources["BtnStyle"]);

    转载于:https://www.cnblogs.com/changbaishan/p/3361627.html

    展开全文
  • 作为一种资源的组织和表达机制,Web已成为Internet最主要的信息传送媒介。因此Web的性能已经成为判断一个网站成功与否的一个重要评估标准。而Web Server则是决定Web性能的重要环节。Web系统在现在网络中广泛使用,而...
  • Echarts + Web实现大屏展示效果(一)图片资源,方便为大家实现Demo,主要包括按钮图片,背景图片和动态图片
  • 请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet,(也就是点击form表单的提交发出请求,请求由设定的action处理)2)js中...

    【总结可以发起请求的阶段:
    请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action
    1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet,(也就是点击form表单的提交发出请求,请求由设定的action处理)
    2)js中获取xmlHttpRequest对象,由该对象发出请求,[包括,请求路径,设定处理的action,]

    请求静态资源:直接请求服务器中的资源,在web.xml中没有匹配的aciton,defaultServlet处理该action
    3)html标签中的(img或其他标签如Script----src属性会自动请求资源,但是请求的是静态的资源,[一个路径下的资源])


    zzy:经过测试,每一个src都会再次向服务器发出请求,所以拿Servlet捕获action时 src发出的请求也是可以捕获的,同时如何Servlet中没有捕获Src的action那么他的内容也是不会自动响应的,

    所以在编写html页面时,其实Src属性是一种公认的异步请求


    src 和 href 的区别:引入和引用。
    href 表示超文本引用(hypertext reference),在 link和a 等元素上使用。
    src 表示来源地址,在 img、script、iframe 等元素上。
    src 的内容,是页面必不可少的一部分,是引入。
    href 的内容,是与该页面有关联,是引用。区别就是,引入和引用。

    转载于:https://www.cnblogs.com/yu-xia/p/zzy.html

    展开全文
  • 关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术楔子Web 生而具有极其灵活的动态化基础能力,诸如:动态插入script标签执行任意脚本逻辑...

    ed9d8c70a7d08613f58acd0fc385445d.png

    关注「前端向后」微信公众号,你将收获一系列「用原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术

    楔子

    Web 生而具有极其灵活的动态化基础能力,诸如:

    • 动态插入script标签执行任意脚本逻辑

    • 动态插入style标签引入任何 CSS 样式规则

    • 通过iframe标签嵌入整站

    • 以上标签均可直接加载网络资源

    • 承载这些内容的 Web 页面部署在远程服务器,可随时动态更新,并且能立即生效

    一直以来的探索和实践似乎只是在不断地发掘动态化能力的工程价值,为其寻找更合适的应用场景,比如早期的frameset,如今的微前端/微应用

    而移动端正好相反,生而具有许多灵活性限制:

    • 原生不支持动态执行逻辑代码

    • 构成移动应用程序的关键资源大都要打入安装包中(动态库例外)

    • 应用程序安装在用户设备上,安装包更新需经应用商店审核,用户重新安装才能生效

    移动业务的发展不断地对动态化能力提出更高的要求,但苦于缺少动态化的基础能力,所以一直在探索更灵活的技术方案,像早期的热修复/热更新,到如今的小程序

    实际上,二者在动态化技术能力上所要解决的工程问题是一致的,比如动态加载依赖库、视图组件、甚至整个应用。所以不妨开个脑洞,假定 Web 不支持动态化,以 Native 的业务诉求来推演 Web 动态化技术的发展轨迹

    伊始:原生 WebAssembly

    0061 736d 0100 0000 0187 8080 8000 0160
    027f 7f01 7f03 8280 8080 0001 0004 8480
    8080 0001 7000 0005 8380 8080 0001 0001
    0681 8080 8000 0007 9080 8080 0002 066d
    656d 6f72 7902 0003 6763 6400 000a ab80
    8080 0001 a580 8080 0001 017f 0240 2000
    450d 0003 4020 0120 0022 026f 2100 2002
    2101 2000 0d00 0b20 020f 0b20 010b

    从前,Web 应用程序只能被打包成这种wasm的二进制格式,发布到各大浏览器应用商店。期间,不仅要等待数天的审核,通过之后还要等用户主动安装更新,等到新版本真正“生效”(覆盖大多数用户),可能已经是数月之后了

    版本更迭慢,无论是战略性的重要功能还是十万火急的问题修复,都无法及时触达用户。即便线上着火了,最快速的救火方案也要几天甚至几周之后才能起到作用

    为了能够更快地修复问题、降低风险,热修复方案的探索就此展开

    浪花:为热修复引入脚本语言 JavaScript

    热修复意味着要加载并运行(安装包之外的)逻辑代码,所以有人直接从 WebAssembly 模块加载机制入手,研究出了一些 Hook 方案,能够动态地换掉某些模块/文件

    也有人沿着这个方向走得更远,权衡时效性、性能、兼容性与稳定性,通过编译插桩、工程配套设施、运行时框架等手段解决了模块依赖、版本管理、差量更新等问题,将应用程序的各个功能模块插件化

    还有人另辟蹊径,引入轻量级的脚本语言运行时(如 JavaScript 引擎),并在浏览器原生 WebAssembly 与 JavaScript 世界之间架起一座桥梁,允许通过 JavaScript 调用原生的系统平台能力,从而扩展出了动态化的基础能力

    动态化漾起了一道波纹,紧接着是呼啸而来的动态更新浪潮

    海啸:基于 JavaScript 的动态更新

    往动态化方向迈出第一步之后,离全面动态化的大好前景也就一步之遥了:

    Any application that can be written in JavaScript, will eventually be written in JavaScript. —— Jeff Atwood

    (摘自The Principle of Least Power)

    全面动态化意味着要:

    • 将应用程序中所有能够动态化的部分全都迁由 JavaScript 实现

    • 将庞大的 JavaScript 代码按功能模块组织起来,并管理好功能模块之间的依赖关系

    从而实现以功能模块为单位的快速迭代,相当于将热修复技术应用到问题修复之外的需求迭代上,既不用发版,免去了审核周期,也不需要等待用户主动安装,新功能得以动态发布并迅速覆盖到活跃用户

    堤坝:容器概念形成

    随着动态化程度的不断提升,JavaScript 在应用程序中的占比越来越高,最终仅剩余无法动态化(或没有必要动态化)的部分仍由 WebAssembly 实现,包括:

    • 系统平台能力桥接

    • 基础 UI 控件、交互能力

    • 视图层框架(历史栈管理、生命周期支持等)

    • 特定业务领域能力(例如多媒体内容生产、IM SDK 等)

    • 通信机制(广播、状态共享等)

    这些部分形成了容器(原生外壳),相当于运行在浏览器中的一个动态化运行时,在容器圈定的能力范围内,业务能够充分利用动态优势,实现快速修复、快速发布、快速触达、快速迭代

    但随容器概念一同出现的,除了赋能业务跑得更快之外,还有动态业务与容器之间的依赖问题:

    • 如何解除二者之间的强耦合,如路由、混合视图容器等场景?

    • 如何识别出二者之间的依赖关系?

    • 如何保障依赖关系是可控的,比如禁止将依赖新能力的动态业务发布到旧容器中?

    通过工程配套设施将依赖管束起来之后,接下来的首要问题是想办法保证动态业务所依赖的底层容器的可靠性

    边界:HTML、JavaScript、CSS 构成容器标准

    隔离变化的惯用手段是加一层抽象,将变化的部分置于抽象层之下:

    • BOM API:对系统平台、视图层框架能力以及通信机制的抽象

    • Native Module API:对特定业务领域能力的抽象

    • DOM API:对基础视图渲染能力的抽象

    • JS API:对 JavaScript 运行时的抽象

    • CSS:对样式、布局能力的抽象

    • HTML:对基础 UI 控件、交互能力的抽象

    抽象出的这些标准确立了稳固的容器边界,边界之内,动态业务能够肆意发挥,边界之下,容器同样能够不断精进、丰富容器能力,将边界拓宽。同时,具有标准定义的 API 能够以结构化的形式维护起来,对于开发体验大有裨益

    云海:浏览器支持加载网络资源

    另一方面,在标准化的过程中,一些动态化业务实践也沉淀到了容器之中,例如:

    • 动态脚本:script支持加载网络资源

    • 动态样式:style支持加载网络资源

    • 动态路由:浏览器支持直接通过 URL 载入、或通过iframe嵌入网络应用程序

    虽然从热修复开始就能够从CDN拉取 JS 文件,运行时动态解释执行了,但容器标准不仅对这种方式提供了便捷支持,还将动态化的基础能力从逻辑扩大到了视图、样式、静态资源等等

    至此,动态化最关键的基础能力已经完备了。迁至 JavaScript 的功能模块甚至能够进一步部署到云端,实现离线集成、在线托管两种模式的灵活切换

    一色:同步、异步模式切换自如

    完备的动态化基础能力解锁了许多新玩法,例如:

    • 模块化(加载器)

    • 代码拆分

    • SSR

    • Hydration

    • lazy 组件

    • Suspense

    将业务模块(bundle)进一步拆分成功能模块(chunk),并将非核心模块异步出去,实现动态按需加载,例如第三方 JS SDK、jQuery 插件、以及分享/评论/城市选择等重磅组件

    对于内容呈现的偏静态场景,还可以通过 SSR 在服务端完成(大部分)页面渲染工作,加快首屏内容展现

    另一方面,Hydration、lazy 组件、Suspense 等运行时特性使得在线的动态部分能够与离线的非动态部分充分融合,实现更细粒度的业务动态化,让在线托管真正成为一种部署选项

    与此同时,动态业务自身的组件化程度也在不断加深,前端开发的核心工作从页面、模块开发转向了组件、编排逻辑开发

    流云:数据驱动的前端应用程序

    组件体系趋向成熟之后,一个由来已久的概念终于彻底浮出水面——数据驱动

    从前后端分层的数据协议,逐渐演变成数据驱动,这里的数据包括 3 部分:

    • 后端业务域数据

    • 前端状态数据

    • (基于后端业务域数据的)前端衍生数据

    将这些数据填入业务组件,即可渲染出完整的功能模块(无论是在客户端还是服务端),再将其放置到视图容器中合适的坑位里,就完成了一次组件级的“发布”过程

    这种模式涉及 5 个重要环节:

    • 业务数据(包括后端业务域数据和前端衍生数据)的生产

    • 业务组件(包括前端状态数据)的生产和维护

    • 组件的渲染(业务数据 + 业务组件 = 功能模块)

    • 坑位的生产

    • 功能模块的投放

    其中,业务组件、坑位是进一步动态化的关键,可分为 4 个阶段:

    • 一个萝卜一个坑:静态业务组件 + 静态坑位

    • 一个萝卜到处扔:静态业务组件 + 动态坑位

    • 多个萝卜轮番扔:动态业务组件 + 静态坑位

    • 多个萝卜到处扔:动态业务组件 + 动态坑位

    要达到多个萝卜到处扔的组件级动态化终极目标,就要求能够动态发布业务组件、动态发布坑位

    交融:动态业务组件 + 动态坑位

    从端和云的视角来看,业务组件也可以看作数据(云)的一部分,相比之下坑位与端的关联更为紧密,而动态化的唯一手段就是将端侧的东西搬到云上去,所以要解决的关键问题是如何实现坑位的动态化

    有 2 个思路:

    • 干掉坑位的概念:将坑位的概念从组件级扩展到页面级,一个页面容器(一个 URL)即一个坑位

    • 将坑位组件化:提供标准的坑位组件,就像iframe

    页面是一种天然的动态坑位,可打开一个新的页面容器加载任意 URL

    对于除页面之外的其它布局容器,如对话框、消息条、Banner 位、腰封等等,可以将坑位标准化成容器组件,与业务组件一并动态发布,将坑位的租赁关系维护在服务端,作为数据驱动的数据之一

    至此,前后端分层的界限几经重新定义,终于迎来了 JSP/PHP 融合数据与模板的黄金年代……

    参考资料

    • Android 插件化和热修复知识梳理

    • 全面插件化:RePlugin 的使命

    • 外卖客户端容器化架构的演进

    联系我      

    如果心中仍有疑问,请查看原文并留下评论噢。(特别要紧的问题,可以直接微信联系 ayqywx )

    展开全文
  • 关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术楔子Web 生而具有极其灵活的动态化基础能力,诸如:动态插入script标签执行任意脚本逻辑...
  • Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式:1.内联样式表:即直接设置元素的style属性2.嵌入样式表:即在html页面上写一个…….. 代码段,然后设置元素的class 属性3.外部样式表:即写一个...
  • 在传统的web开发中通常使用jsp页面,首先需要在pom文件中引入springmvc相关的包,然后写springmvc的配置文件(包括访问资源的路径解析),之后还需再web.xml中配置访问路由。这无疑太麻烦了,每次开发前都需要编写...
  • Web基本概念

    2020-08-13 08:12:36
    Web开发的相关知识 ...一个Web应用程序包含多个静态web资源和动态web资源包括例如:java程序、JSP文件、html文件、cs文件、js文件、支持jar包、配置文件等。 web应用程序开发完成后,若想要被外界
  • 而且,我们已经看到在Web开发人员社区中发布了越来越多... 其中一些资源包括一组流行的纯CSS接口,一个用于动态显示CSS渐变的JS库和一个PHP库,该库可让您使用自己的域名生成短网址, 点击获取更多资源 .no-js ...
  • Java动态爬虫自动化测试系统(selenium+web Magic)

    千次阅读 多人点赞 2019-12-26 16:01:49
    这套系统能做什么: ... 2:跟以往静态爬虫不同,以往的curl获取资源再解析和Xsoup/Jsoup等爬虫都只能够爬取网页上已展示出来的静态页面,动态...这套系统能爬取任意一种触发条件后出现的动态数据(包括滚动,懒加载,...
  • 一、基本概念1、Web开发的相关知识静态Web:指任何时间访问内容都一致的Web界面动态...所有动态Web资源开发技术统称为JavaWeb2、Web应用程序一个Web应用程序包含多个静态web资源和动态web资源包括例如:java程序、...
  • 刚才在折腾的时候,发现applicationContext.xml中配置了 />后,能访问静态资源,却不能...找了些资料都说,如果把web.xml中将DispatcherServlet配置为拦截所有请求,包括静态和动态的,像下面这样: servlet> s
  •  Web服务器是Web资源的宿主,它需要处理用户端浏览器的请求,并指定对应的Web资源返回给用户,这些资源不仅包括HTML文件,JS脚本,JPG图片等,还包括由软件生成的动态内容。为了满足上述需求,一个完整的Web服务器...
  • 刚才在折腾的时候,发现applicationContext.xml中配置了<mvc:default-servlet-...找了些资料都说,如果把web.xml中将DispatcherServlet配置为拦截所有请求,包括静态和动态的,像下面这样: <servlet> ...
  • java web

    2021-03-07 16:07:09
    动态web资源开发的技术的统称。 1.2 web应用程序 a.html 、b.html 可供浏览器访问的程序;包括: html、css、js jsp、servlet Java程序 jar包 配置文件(Properties) web应用程序编写完毕后需要一个服务器来统一...
  • 提出 了基于应用服务提供商的动态联盟制造资源管理系统的体系结构,该系统体系结构包括基础 数据层、系统层、系统管理层、制造资源管理应用服务层、WEB门户层、用户层6个层次;并对 基于应用服务提供商的...
  • 初识Web

    2016-08-22 17:15:51
    一、Web资源: 1、静态资源:客户端(就是浏览器)能够解析的服务器端资源,当客户端访问服务器时,服务器直接响应。... ...JavaWeb的动态资源包括:JSP,servlet。 二、Web服务器: 1、Web服
  • 我本身是学C++的,突然要写一个java项目,顿时感觉无从下手,首先找度娘,可是查了好多,都没有全篇搭建过程,走了第一步就不知道怎么走下一步了,现在...网上查了好多,说网页既有动态资源也有静态资源的话,最好...
  • java web 开发入门

    2018-09-13 12:08:00
    Java web,是java技术用来解决web互联网领域的技术总和。Java web技术主要包括客户端和服务端,java在客户端的服务有java applet,不过用的非常少...Web资源主要分为静态web资源和动态web资源。 静态web资源:指...
  • WEB应用

    2019-06-23 23:53:42
    服务器端资源包括: JSP 服务器端类 静态文件(HTML,图片等) 客户端applets和beans 配置和部署信息 二:什么是Servlets和JSPs Servlets: 提供相应HTTP请求的Java类 通过编程产生内容的方式扩展Web服务器的...
  • 后来人们不再满足于只从互联网获取静态的资源,便出现了通过Web服务器动态获取资源的技术,例如:JSP,ASP,PHP。而JSP,ASP,PHP等动态内容需要通过Web服务器的接口交给其它程序去处理,这个程序就是Web应用服务器...
  • web包括web服务器和web客户端两部分。从事Java web开发需要掌握以下技术:基于页面的前端技术,如:HTML、CSS、JavaScript、JQuery;动态语言技术,如:Java、JSP;数据库技术,如:Oracle、MySQL、Sql Server;工具...
  • 文章目录1. 什么是 Web应用?2. 配置Web应用虚拟目录1. 在`server.xml` 文件中配置虚拟目录2....一个 Web应用由多个Web资源或其他文件组成,其中包括 html文件,css文件、js文件,动态 Web页面、java程序、支持jar包、配置
  • Java Web学习总结

    2016-11-11 22:53:00
    一、 Java WEB开发中几个重要的概念 ...一个完整的HTTP请求包括:一个请求头、若干... 2.Servlet:Servlet是sun公司提供的一门用于开发动态WEB资源的技术。sun公司在其API中提供了一个Servlet接口,用户若想开发一个动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 804
精华内容 321
关键字:

动态web资源包括