精华内容
下载资源
问答
  • web开发框架架构思想
    千次阅读
    2020-11-20 22:54:21

    在今天,Python里有很多开发框架用来帮助你轻松创建web应用。web开发框架存在的意义就在于可以快速便捷的构建应用,而不用去在意那些没必要的技术细节(协议、报文、数据结构)。

    到2020年为止,基于Python创建的的web应用已经非常多了,国外知名的有youtube.com、instagram、reditt、国内有知乎、豆瓣等等。这些网站分别用到了不同的web框架来实现的,我们今天会一一讲到。

    1. Django

    Django应该是Python最知名、最有代表性的Web框架了。它的名字来自于Django Reinhardt,一位法国作曲家和吉他演奏家。在2000年初有一个报社的两位程序员为了给报社的报纸开发线上应用,开始用 Python编写网站,最后把他们的工作总结出一套开源框架,就是今天的Django了。

    Django遵循了MVC开发模式,并将这个模式命名为MTV(MTV模式是Python中独有的)

    M Model(数据模型,用于后端数据库模型定义和处理模块)

    T Templates(模版,用于前端显示信息)

    V View(视图,用于接收客户端请求、处理Model、渲染返回信息给客户端等)

    (1) Django的优点和缺点

    优点:

    一站式开发解决方案,拧包入住

    各种组件集成高度成熟,配置齐全

    用户模型、权限认证体系健全

    ORM数据库管理功能简单方便

    自带后台管理功能

    缺点:

    配置相对复杂

    简单应用采用Django有一种杀鸡用牛刀的感觉

    (2) Django安装和初始化

    Django下载方式有两种:

    通过pip直接安装

    pip install Django==3.0.3

    通过源码下载并安装

    git clone https://github.com/django/django.git

    安装之后通过startproject参数创建一个新的django项目 test_django/

    django-admin.py startproject test_django

    cd test_django进入项目路径输入启动服务命令即可启动一个最简单的django服务。

    python manage.py runserver

    最后访问下默认路径 http://127.0.0.1:8000 看看django项目启动的效果。

    启动成功,现在可以编写你的Django代码了。

    2. Flask

    如果说Django是大而全的方案代表,那么Flask就是小而精的方案代表。

    Flask是基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的Web小应用。

    Flask这个框架相对比较灵活,核心思想是Flask只完成基本的功能,别的功能都是靠各种第三方插件来完成的,实现了模块高度化定制。

    (1) 常用的Flask插件如下:

    Flask-SQLalchemy:操作数据库;

    Flask-migrate:管理迁移数据库;

    Flask-Mail:邮件;

    Flask-WTF:表单;

    Flask-script:插入脚本;

    Flask-Login:认证用户状态;

    Flask-RESTful:开发REST API的工具;

    Flask-Bootstrap:集成前端Twitter Bootstrap框架;

    Flask-Moment:本地化日期和时间;

    Flask的两个主要核心应用是Werkzeug和模板引擎Jinja,除此以外,别的都是可以自由组装的,适合有洁癖的程序员。

    (2) Flask优缺点

    优点:

    项目结构和配置简单

    组件可以自由拆装

    小项目或临时性项目比较适用

    缺点:

    组件高度自定义带来的就是各种组件之间的兼容性问题严重大型应用不适合,例如蓝图(blueprint)机制跟Django的url配置比起来其实差得很远

    (2) Flask安装

    我们通过pip直接安装

    pip install flask

    在任意位置新建一个py文件,hello.py 。

    from flask import FlaskFlaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()

    输入启动命令:

    python hello.py* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

    最后访问默认地址 http://127.0.0.1:5000 打开flask默认启动页面。

    3. Tornado

    严格意义上来说Tornado不是一个Web框架,而是一个基于Python实现的异步处理框架,只是自带了WSGI处理相关的功能。

    tornado和Flask一样,除了基本的Web处理功能和模版之外,其他功能组件都需要自行拼装。

    (1) tornado的优缺点

    优点:

    短小精悍,性能比较好,不依赖Python多进程/多线程

    支持异步非阻塞IO处理方式

    支持websocket

    缺点:

    过于精简,只适用于纯接口化服务或者小型网站应用

    (2) Tornado安装

    同样使用pip进行安装。

    pip install tornado

    新建一个hello.py 代码文件。

    import tornado.webimport tornado.ioloopclass IndexHandler(tornado.web.RequestHandler): def get(self): self.write('hello world')if __name__ == '__main__': # 创建应用对象 app = tornado.web.Application([(r'/',IndexHandler)]) # 绑定监听端口 app.listen(8888) # 启动web程序 tornado.ioloop.IOLoop.current().start()

    最后执行 python hello.py启动tornado服务,通过http://127.0.0.1:8888访问初始化页面

    以上三种是Python开发中经常使用到的Web框架,还有一些不是那么常用的也一并给大家简单介绍一下。

    4. TurboGears

    据说豆瓣早期就是基于该框架进行开发的。

    TurboGears是在几个著名的Python项目上组装搭建起来的一个框架,由SQLAlchemy,WebOb,Repoze,Genshi组成。

    在某种意义上,TurboGears是将多个开源组件粘合在一起。和Django同样采用MVC架构。

    TurboGears的优点:

    支持聚合

    强大的对象关系映射器

    事务系统支持多数据库间事务

    多数据库支持

    以可重用的代码片段为模板

    具有很多的灵活性,可以对接非标准组件

    支持分片

    模板系统使设计师的设计更轻松

    5. Bottle

    Bottle和Flask一样,也是一个轻量级的Web开发框架。

    它不依赖于Python标准库外的任何库。于2009年被创造出来,它仅由包含模板、路由和一个WSGI抽象层的最小工具开始。对于程序员想寻找一个最轻量级的WSGI服务是一个很好的选择,用它可以最快速度的创建一个Web服务。

    Bootle优点:

    超轻量级

    内建模板引擎和对Jinja2,Mako和Cheetah的支持

    总结

    今天给大家介绍了各种Python的Web开发框架,我个人常用的框架主要包括Django、Flask、Tornado。别的框架涉猎较少,也是因为流行度和易用性的关系。

    针对于最常用的三种框架,我给大家一个使用建议:

    正式项目、大型项目,确定需要长期开发和维护的项目建议选择Django,一劳永逸,不用考虑太多。

    小型项目、临时性的项目,不怕折腾的,可以选择Flask。

    小型项目、临时性项目或者一些简单的接口服务,可以选择Tornado,因为Tornado天生支持异步,所以很多需要做异步IO服务的也可以选择Tornado,另外Django3.0之后也开始全面支持异步了,建议大家观望。

    更多相关内容
  • Furion Web开发框架是一个为了让 .NET 开发更简单,更通用,更流行的开发框架。 Furion框架特点: 全新面貌:基于 .NET5/6 平台,没有历史包袱 极少依赖:框架只依赖两个第三方包 极易入门:只需要一个 Inject() ...
  • 面对日益复杂的Web应用系统和变更频繁的用户需求,企业需要从纷繁复杂的开发框架中选出一套可行的解决方案以保持高效保质的开发工作,为此,本文采用J2EE分层架构思想构建了一个面向Web应用系统快速开发的开发平台,...
  • 收藏:30个Python Web开发框架介绍1. Bobo2. Bottle3. CherryPy4. Cyclone5. Flask6. Itty-Bitty7. Klein8. Morepath9. ObjectWeb10. Pecan11. Pyramid12. Tornado13. web.py14. Wheezy Web15. Falcon16. web2py17. ...

    1. Bobo

    Bobo是一个轻量级的框架,用来创建WSGI web应用。它的目标是简单易用,容易记忆。它强调两个方面的内容:

    1. 把URL映射到对象;
    2. 调用对象来生成HTTP响应。

    注意:Bobo并不具备模板语言、数据库集成层或是其他一些WSGI中间件或特定应用程序库所提供的功能。Bobo建立在其他框架之上,尤其是WSGI和WebOb。
    官方教程主页为:https://bobo.readthedocs.io/en/latest/
    Bobo web framework

    2. Bottle

    Bottle是一个快速、简单、轻量级的WSGI微型Python web框架。它仅包含单一文件模块,并且不依赖除了Python标准库以外的其他库。它支持类似Google App Engine、Python Paste这样的应用,还包含了对一些模板的支持,比如Cheetah和Mako。

    Bottle框架大致可以分为以下四个部分:

    • 路由:将请求路由给功能调用映射,并支持干净和动态URL。
    • 模板:快速和pythonic内置模板引擎,并支持mako,jinja2和cheetah模板。
    • 公共组件:用于提供处理请求相关的信息,例如表单数据、文件上传、cookies、请求头以及其他HTTP相关的元数据。
    • 服务:内置HTTP开发服务器,支持paste、bjoern、gae、cherrypy或任何其他支持WSGI的HTTP服务器。

    Bottle官方主页:http://www.bottlepy.com/docs/dev/
    Bottle web framework

    3. CherryPy

    CherryPy允许开发者以他们构建其他面向对象Python程序近乎同样的方式来开发web应用。这使得可以在更短的时间内开发出更精简的源代码。CherryPy允许你进行很多常规的Python编程,但是它并没有整合一个模板系统,你需要自己去找一个。(它支持大多数的模板)

    CherrPy非常适应默认的Python功能和结构,仅是能够以较少的代码开发Web应用程序之间的链接。CherryPy现在已有十多年的历史,并且已被证明非常快速和稳定。 从最简单到最苛刻的生产环境,许多站点都在使用它。
    CherryPy官网主页:https://cherrypy.org/
    CherryPy web framework

    4. Cyclone

    Cyclone是用于Python的Web服务器框架,该框架将Tornado API实现为Twisted协议。

    Twisted是一种适用于Python的事件驱动的网络编程框架,可追溯到2002年。它是最成熟的非阻塞I / O库,可供公众使用。 Tornado是FriendFeed的Web服务器的开源版本,它是Python最受欢迎,最快速的Web服务器之一,并具有用于构建Web应用程序的非常不错的API。
    这个想法是将Tornado优雅而简单的API桥接到Twisted的Event-Loop,从而实现大量受支持的协议。这种结合为构建混合服务器提供了基础,该混合服务器能够非常有效地处理HTTP,同时还可以同时服务或使用电子邮件,ssh,sip,irc等。

    除了这一丰富的功能集之外,Cyclone还解决了C10K问题。 有关更多信息,请访问http://www.kegel.com/c10k.html。
    Cyclone官方主页:http://cyclone.io/
    Cyclone web framework

    5. Flask

    Flask是一个轻量级的WSGI Web应用程序框架。它旨在使快速入门变得容易,并具有扩展到复杂应用程序的能力。基于Werkzeug WSGI工具箱和Jinja2 模板引擎,并已成为最受欢迎的Python Web应用程序框架之一。Flask提供了建议,但不强制执行任何依赖关系或项目布局。 由开发人员选择他们想使用的工具和库。 社区提供了许多扩展,使添加新功能变得容易。

    Flask使用BSD授权。 Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

    Flask官方主页:https://flask.palletsprojects.com/en/1.1.x/
    Flask web framework
    Flash使用示例:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return 'Hello, World!'
    
    $ export FLASK_APP=hello.py
    $ flask run
     * Running on http://127.0.0.1:5000/
    

    6. Itty-Bitty

    itty.py是一个小的具有实验性质,并试图以Sinatra的方式构造的微型框架,该框架的作用仅仅是有用的,仅此而已。注意:Sinatra是一门基于Ruby的领域专属语言,致力于轻松、快速地创建网络应用。具体参考:http://sinatrarb.com/intro-zh.html

    目前支持:

    • 路由
    • 基本响应
    • 内容类型
    • HTTP状态码
    • URL参数
    • 基本的GET/POST/PUT/DELETE支持
    • 用户定义的错误处理程序
    • 重定向支持
    • 文件上传
    • 标头支持
    • 静态媒体投放

    注意! 如果您正在寻找一个经过验证的,可用于企业的框架,那么您来对地方了,而且这确实很有趣。

    官方主页:https://github.com/toastdriven/itty
    itty-bitty web framework

    7. Klein

    Klein是一个使用Python来开发可用于生产环境web服务的微型框架。它基于使用非常广泛且经过良好测试的组件,比如Werkzeug和Twisted,以及近乎完全的测试覆盖率。

    Klein主页地址:https://github.com/twisted/klein
    Klein使用教程:https://klein.readthedocs.io/en/latest/
    Klein web framework

    8. Morepath

    Morepath是具有强大的能力的Python 微型web框架。Morepath是一个Python WSGI微型框架,应用程序由模型组成。每种类型的模型都发布在URL路径上。它使用路由,但是是针对模型的路由。Morepath是一个模型驱动,灵活的框架,这使得它富有表达力。

    Morepath具有如下特性:

    • Morepath不会妨碍使用者。
    • 它让使用者可以轻松表达自己想要的内容。
    • 它具有简单,一致且通用的扩展和覆盖机制,可扩展,支持可重用的代码。
    • 它了解有关生成超链接的信息。 网络是关于超链接的,Morepath实际上知道它们。
    • 视图是简单的功能。 所有视图都是通用的。
    • 它在盒子里提供了开发REST Web服务的所有工具。
    • Morepath有很多文档。

    Morepath主页地址:https://github.com/morepath/morepath
    Morepath使用教程:https://morepath.readthedocs.io/en/latest/
    Morepath web framework

    9. ObjectWeb

    ObjectWeb 是一个快速,极简的纯Python Web框架,不依赖任何的第三方库。它围绕Python进行设计,因为起初想要把它当做面向对象的编程语言来使用。ObjectWeb支持CGI和WSGI标准,而且有一个内置的开发服务器。注意:仅使用了Python 2.7对ObjectWeb Framework进行了测试和开发。

    ObjectWeb主页地址:https://github.com/aisola/ObjectWeb
    ObjectWeb web framework

    10. Pecan

    Pecan的创建填补了Python web-framework世界中的空白——一个非常轻巧的框架,它提供了对象分派样式路由(object-dispatch style routing)。 Pecan并非旨在成为“全栈”框架,因此不提供对会话或数据库之类的现成支持。 相反地,Pecan专注于HTTP本身。

    虽然它很轻巧,但是Pecan提供了广泛的功能集,可用于构建基于HTTP的应用程序,包括:

    • 对象分派,轻松路由
    • 全面支持REST风格的控制器
    • 可扩展的安全框架
    • 可扩展的模板语言支持
    • 可扩展的JSON支持
    • 简单的基于Python的配置

    虽然Pecan不提供对现成的会话或数据库的支持,但包含了一些教程,可以将它们自己集成到几行代码中。

    Pecan主页地址:http://www.pecanpy.org/
    Pecan使用教程:https://pecan.readthedocs.io/en/latest/
    Pecan web framework

    11. Pyramid

    Pyramid是一个非常通用的开源Python Web框架。 作为框架,其主要工作是使开发人员更轻松地创建任意Web应用程序。 创建的应用程序的类型不是很重要; 它可以是电子表格,公司内部网或社交网络平台。Pyramid足够通用,可以在多种情况下使用。

    Pyramid官方主页:https://www.trypyramid.com/
    Pyramid使用教程:https://docs.pylonsproject.org/projects/pyramid/en/1.10-branch/
    Pyramid web framework

    12. Tornado

    Tornado是一个Python Web框架和异步网络库,最初由FriendFeed开发。 通过使用非阻塞网络I/O,Tornado可以扩展到成千上万的开放连接,非常适合长时间轮询、WebSocket和需要与每个用户保持长期连接的其他应用程序。

    Tornado主页地址:https://github.com/tornadoweb/tornado
    Tornado使用教程:https://tornado-zh-cn.readthedocs.io/zh_CN/latest/
    Tornado web framework
    Tornado使用案例:

    import tornado.ioloop
    import tornado.web
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")
    
    def make_app():
        return tornado.web.Application([
            (r"/", MainHandler),
        ])
    
    if __name__ == "__main__":
        app = make_app()
        app.listen(8888)
        tornado.ioloop.IOLoop.current().start()
    

    13. web.py

    web.py是一个小巧灵活的Python框架,它简单而且功能强大。

    web.py的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。这样的优点是,框架给开发带来的限制少,可以根据自己的需求进行定制。缺点就是,很多东西都需要自己亲自动手开发。

    web.py主页地址:https://webpy.org/
    web.py web framework
    web.py使用案例:

    import web
            
    urls = (
        '/(.*)', 'hello'
    )
    app = web.application(urls, globals())
    
    class hello:        
        def GET(self, name):
            if not name: 
                name = 'World'
            return 'Hello, ' + name + '!'
    
    if __name__ == "__main__":
        app.run()
    

    14. Wheezy Web

    一个轻量级、高性能、高并发的WSGI web框架,具备创建现代,高效网络应用的关键功能。其特点如下:

    • 需要Python 2.4-2.7 or 3.2+.
    • MVC架构模式(基于推送)
    • 功能包括:路由、模型更新/验证、身份验证/授权、具有依赖项的内容缓存、xsrf/重新提交保护、AJAX+JSON、i18n(gettext)、中间件等。
    • 模板引擎,可与jinja2,mako,tenjin和wheezy.template集成,以及html小插件。

    它针对性能进行了优化,经过了充分的测试和记录。
    Wheezy.web主页地址:https://pythonhosted.org/wheezy.web/
    Wheezy.web framework

    15. Falcon

    Falcon是一个微框架,旨在快速构建API。它一直是已知且广泛使用的Python框架之一,不需要大量加载依赖项即可创建HTTP API。Falcon有助于更清洁地设计支持HTTP和REST体系结构的API。其特点如下:

    • 基于URI模板RFC的路由
    • REST-inspired的URI到资源的映射
    • Global,resource和方法钩子
    • 惯用的HTTP错误响应
    • 全面的Unicode支持
    • 直观的请求和响应对象
    • 与gevent等异步库配合使用效果很好
    • 编写安全API的攻击面最小
    • 全面的测试套件可实现100%的代码覆盖率
    • 不依赖其他Python包
    • 支持Python 2.7、3.5+
    • 与PyPy兼容

    Falcon主页地址:http://falconframework.org/
    Falcon使用教程:https://falcon.readthedocs.io/en/stable/
    Falcon web framework
    Falcon使用案例:

    # sample.py
    
    import falcon
    
    class QuoteResource:
        def on_get(self, req, resp):
            """Handles GET requests"""
            quote = {
                'quote': (
                    "I've always been more interested in "
                    "the future than in the past."
                ),
                'author': 'Grace Hopper'
            }
    
            resp.media = quote
    
    api = falcon.API()
    api.add_route('/quote', QuoteResource())
    
    $ pip install falcon
    $ gunicorn sample:api
    

    16. web2py

    web2py是一个免费的开源全栈框架,用于快速开发快速,可伸缩,安全和可移植的数据库驱动的基于Web的应用程序。它是Google在web.py基础上二次开发而来的,兼容GAE。Web2py框架源于RoR和Django思想的启发,奉行约定优于配置的想法,web2py中有很多合理的默认值,允许开发人员快速启动。Web2py宣称:提供全栈式解决方案,提供可能需要的一切模块

    Web2py框架自带了很多模块,比如内置服务器,生成HTML的帮助器,表单,验证器等等,但是Web2py多数据库引擎的支持很简单。其他内置的功能有:

    • juery和Ajax建站助手;
    • 调度程序和cron;
    • 双因子认证助手;
    • 文本消息发送器;
    • 事件工单系统,允许自动将生产环境中发生的问题分配给开发人员。

    web2py主页地址:http://www.web2py.com/
    web2py仓库地址:https://github.com/web2py/web2py/
    web2py web framework

    17. Quixote

    Quixote是使用Python编写基于Web的应用程序的框架。 它的目标是依次实现灵活性和高性能。 Quixote应用程序的结构往往类似于传统应用程序。 格式化网页的逻辑由Python类和函数组成。 表示逻辑(presentation logic)和“后端”逻辑的分隔不由Quixote强制执行。 相反,它鼓励您使用传统技术。 例如,一种解决方案是将表示逻辑放在其自己的子包中。

    Quixote主页地址:http://www.quixote.ca/
    Quixote web framework

    18. API Star

    API Star是一个新的Web微框架,只支持Python 3,其特性使用了Python 3.5中引入的类型提示。API Star使用内置的类型提示实现以简洁、声明式的构建验证模式表示,然后绑定这些模式来请求处理函数。可以使用它来构建静态文档,将其集成到Web框架中,或将其用作与其他API进行交互的客户端库。

    API Star是用于处理OpenAPI或Swagger模式的工具包。 它允许您:

    • 构建API文档,并提供一系列可用主题。
    • 验证API模式文档,并提供上下文错误。
    • 使用动态客户端库发出API请求。

    API Star另一个突出的特性是依赖注入机制。这是一个更强大、更智能中间件的替代品。比如可以编写一个所谓的Component,它将使用当前经过身份验证来提供给用户视图。在视图级别,只需要明确声明它将需要User实例,其他事情API Star就会在幕后自动完成。

    自动依赖注入优于常规中间件的优点是组件不会有其他未使用视图的开销。同样API Star也可以以更传统,同步性的,兼容WSGI的方式在asyncio上运行。

    最后与API Star捆绑在一起的其他模块都非常标准:比如使用jinja2,路由和事件钩子进行模板化扩展支持。

    apistar仓库地址:https://github.com/encode/apistar
    apistar web framework

    19. Twisted

    这是一个基于异步和asyncio的框架。Twisted是Python中最古老,最成熟的Python异步框架。Twisted最初产生于2002年,其核心是一个名为reactor的事件驱动网络引擎,用于调度和调用用户定义的回调。开始的时候开发人员必须通过定义函数并在操作成功和失败时分别传递它们来使用显式回调。

    后来Twisted引入了inlineCallbacks,用于编写异步代码程序,这些代码与常规同步代码一样简单易读。这个解决方案非常适合Python的语法,并且极大地影响了标准库asyncio中的现代异步工具包。

    Twisted框架的最大优点是虽然本身只是一个捆绑很少的引擎,但支持许多其他扩展可用于扩展其功能,比如从低级网络编程(TCP/UDP)和高级应用程序(HTTP,IMAP,SHH等)。所以,Twisted天然适合编写专业服务,但不适合常规Web应用程序。开发人员必须自己编写很多东西才能实现Django中自带那些功能。Twisted目前开发和维护还很活跃,正在努力迁移代码到Python 3,但许多第三方模块还存在兼容性问题。

    Twisted主页地址:https://twistedmatrix.com/trac/
    Twisted web framework
    Twisted使用案例:

    from twisted.web import server, resource
    from twisted.internet import reactor, endpoints
    
    class Counter(resource.Resource):
        isLeaf = True
        numberRequests = 0
    
        def render_GET(self, request):
            self.numberRequests += 1
            request.setHeader(b"content-type", b"text/plain")
            content = u"I am request #{}\n".format(self.numberRequests)
            return content.encode("ascii")
    
    endpoints.serverFromString(reactor, "tcp:8080").listen(server.Site(Counter()))
    reactor.run()
    

    20. Sanic

    Sanic是基于asyncio-Python的异步编程工具箱,与Python 3.4版本的标准库捆绑在一起。Sanic的开发基于Sanic需要掌握asyncio思想,涉及协程的理论知识,并发编程以及关于应用程序中数据流的推理Sanic在处理长连接时特别有用,比如WebSocket,如果需要支持WebSockets或进行大量持久的外部API调用,Sanic是个非常不错的选择。

    Sanic的另一个用例是编写 “glue-web App”,它可以作为两个具有不兼容API的子系统之间的代理。

    Sanic框架非常快。其中一个依赖项是Uloop,它用来替换asyncio的内置事件循环的替代品。 Uloop是libu的包装器,与Node.js相同的引擎。根据uloop官方文档,可以让 asyncio的效率提高了2-4倍。

    就功能方面Sanic模仿Flask,比如通过共享Blueprints的概念,微小的子应用程序,允许开发人员在更大的应用程序中拆分和组织其代码。对于光光是数据增删改查CRUD应用,Sanic也不是一个好的选择。

    Sanic是Python 3.6以上版本的网络服务器和网络框架,旨在快速发展。 它允许使用Python 3.5中添加的async/await语法,这使您的代码无阻塞且快速。
    该项目的目标是提供一种简单的方法来启动和运行高性能的HTTP服务器,该服务器易于构建,扩展和最终扩展。

    Sanic主页地址:https://sanicframework.org/
    Sanic使用教程:https://sanic.readthedocs.io/en/latest/
    Sanic仓库地址:https://github.com/sanic-org/sanic
    sanic web framework
    Sanic使用示例:

    from sanic import Sanic
    from sanic.response import json
    
    app = Sanic("App Name")
    
    @app.route("/")
    async def test(request):
        return json({"hello": "world"})
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=8000)
    

    21. Japronto

    在高性能编程领域,有著名的C10K甚至C10M问题,Python Web应用怎么实现每秒处理100W的请求呢?这就是Python把asyncio添加到标准库时想要实现的目标。Japronto是一个基于asyncio的微框架。通过使用uloop和PicoHTTPParser,Japronto实现了每秒处理100万个请求。 Uloop上面说了是基于libu的asyncio后端,而PicoHTTPParser是用C编写的轻量级HTTP头解析器。

    Japronto框架的所有核心组件也用C实现,还使用各种低层优化和技巧来调整性能。Japronto主要用于高性能特殊任务,它们无法通过大而冗余的主流框架实现。

    Japronto还为REST API的微服务开发提供坚实的基础,开发人员只需要设置路由并确定哪些路由应使用同步或异步处理程序。

    Japronto特点如下:

    • HTTP 1.x实现,支持分块上传
    • 全面支持HTTP流水线
    • 具有可配置reaper的Keep-alive 连接
    • 支持同步和异步视图
    • 基于分叉的Master-multiworker模型
    • 支持更改时重新加载代码
    • 简单的路由

    Japronto仓库地址:https://github.com/squeaky-pl/japronto/
    Japronto web framework
    Japronto使用案例:

    from japronto import Application
    
    
    def hello(request):
        return request.Response(text='Hello world!')
    
    
    app = Application()
    app.router.add_route('/', hello)
    app.run(debug=True)
    

    22. TurboGears

    TurboGears是一个数据驱动的全栈Web应用程序Python框架。它旨在克服各种广泛使用的Web和移动应用程序开发框架的不足之处。它使软件工程师能够以微不足道的设置开始开发Web应用程序。

    TurboGears使Web开发人员可以使用各种JavaScript开发工具来简化Web应用程序开发。您可以借助SQLAlchemy,Repoze,WebOb和Genshi等元素来开发Web应用程序,这比其他现有框架要快得多。它支持不同的数据库和Web服务器,例如Pylons。该框架采用MVC(模型-视图-控制器)设计,并结合了强大的格式,令人难以置信的对象关系映射器(ORM)和服务器和程序的Ajax。使用TurboGears的组织合并了Bisque,ShowMeDo和SourceForge。

    TurboGears特点:

    • 从微框架开始,然后扩展到全栈解决方案
    • 与编写函数一样自然的代码
    • 强大而灵活的对象关系映射器(ORM),具有真正的多数据库支持
    • 支持水平数据分区(又名分片)
    • 一个新的小部件系统,使构建AJAX繁重的应用程序更加容易
    • 支持多种数据交换格式
    • 内置可扩展的可插拔应用程序和标准WSGI组件
    • 设计者友好的模板系统,非常适合程序员

    TurboGears主页地址:https://turbogears.org/

    TurboGears web framework
    TurboGears使用案例:

     from wsgiref.simple_server import make_server
     from tg import MinimalApplicationConfigurator
     from tg import expose, TGController
    
     # RootController of our web app, in charge of serving content for /
     class RootController(TGController):
         @expose(content_type="text/plain")
         def index(self):
             return 'Hello World'
    
     # Configure a new minimal application with our root controller.
     config = MinimalApplicationConfigurator()
     config.update_blueprint({
         'root_controller': RootController()
     })
    
     # Serve the newly configured web application.
     print("Serving on port 8080...")
     httpd = make_server('', 8080, config.make_wsgi_app())
     httpd.serve_forever()
    

    运行命令:

    $ pip install TurboGears2
    $ python myapp.py
    

    23. BlueBream

    BlueBream是使用Python编程语言编写的免费开放源代码Web应用程序服务器,框架和库。 该工具提供了组件体系结构,事务对象数据库,紧密集成的安全模型和许多其他功能。 它是由Zope社区创建的,并由Zope基金会拥有。 Bluebream是根据与GSD兼容的BSD之类的BSD的Zope公共许可证获得许可的。该框架最适合分配到各种可重用和合适的部分中的中型和大型活动。

    BlueBream构建在Zope工具套件(ZTK)之上,该套件可满足“企业”应用程序对稳定性和可伸缩性的苛刻要求。 对于“关注点分离”,它使用Zope组件体系结构(ZCA),以便可以构建高度内聚的可重用组件(zope.component)。 它强调的模块化和可配置性是BlueBream的核心。 将其与用Python编写的功能强大且定义明确的Buildout系统结合使用,可轻松构建强大的应用程序。

    BlueBream使用Zope组件标记语言(ZCML)注册组件。 这种基于XML的配置语言(zope.configuration)提供了无限的灵活性。 事务性Zope对象数据库(ZODB)可确保强大且易于使用的持久性。 BlueBream具有使用Paste,PasteScript和PasteDeploy的Python Web服务器网关接口WSGI。还包括:

    • 一个对象发布者,用于在网络上发布Python对象,强调WSGI兼容性(zope.publisher),
    • 一种符合XHTML的模板语言(zope.pagetemplate),
    • 灵活的安全体系结构,为可插拔安全策略(zope.security)提供了一种通用机制,
    • 模式引擎(zope.schema),
    • 自动表单生成机器(zope.formlib),
    • 单元和功能测试框架(zope.testing和zope.testbrowser),
    • 以及更多经过良好测试的核心和第三方软件包。

    BlueBream主页地址:https://quintagroup.com/cms/python/bluebream
    BlueBream web framework

    24. Pylons

    Pylons Web框架旨在以简单明了的方式构建Web应用程序和站点。 它们的范围从最小的一个Python模块到用于较大和更复杂的Web应用程序的实质性目录布局。

    Pylons随附的项目模板可帮助引导新的Web应用程序项目,或者可以从头开始并完全根据需要进行设置。

    Pylons本身只有两千行左右的Python代码,不过它还附带有一些几乎就是Pylons御用 的第三方模块。Pylons只提供一个架子和可选方案,你可以根据自己的喜好自由的选择Template、ORM、form、auth等组件,系统高度可定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说Pylons就是一个用胶水语言设计的胶水框架。

    Pylons的特点:

    • 一个使用Python编写Web应用程序变得容易的框架
    • 利用基于组件的极简主义,使其易于扩展
    • 利用有关Python的现有知识
    • 可扩展的应用程序设计
    • 快速高效,每个请求的调用堆栈非常小,可提供最佳性能
    • 使用现有且经过良好测试的Python软件包

    Pylons主页地址:https://www.pylonsproject.org/
    Pylons仓库地址:https://github.com/Pylons/pylons
    Pylons web framework
    Pylons使用案例:

    from paste.httpserver import serve from pylons import Configurator, Response
    
    class Hello(object):
    	def __init__(self, request):
    		self.request = request
    	
    	def index(self):
    		return Response(body=”Hello World!”)
    
    if __name__ == ‘__main__’:
    	config = Configurator() config.begin() config.add_handler(‘home’,/, handler=Hello, action=’index’) config.end()
    	serve(config.make_wsgi_app(), host=0.0.0.0)
    

    25. repoze.bfg

    repoze.bfg是一个小型,快速,扎实的开源Python Web开发框架。 它使现实世界中的Web应用程序开发和部署变得更加有趣,更加可预测并且更加高效。

    repoze.bfg介绍地址:https://pypi.org/project/repoze.bfg/
    repoze仓库地址:https://github.com/repoze
    repoze.bfg

    26. Hug

    Hug是一个Python 3 API开发框架。 它的设计使软件工程师可以先开发一个API,然后在需要时再使用它。 Hug框架通过提供各种接口来简化API开发。 这就是为什么该框架被称为Python 3中最快的框架的主要原因。
    Hug的主要特点:

    • 支持自动文档
    • 注释驱动的验证
    • 内置版本管理
    • 遵守Cython
    • 可以用作Python库

    Hug框架包含尽可能少的集成和尽可能少的代码,保持功能正常并提供出色的性能。 另外,Hug的社区目前正在发展。 这表明该框架的需求,并证明只要出现问题,开发人员都可以找到帮助。

    Hug的主页地址:http://www.hug.rest/
    Hug的仓库地址:https://github.com/hugapi/hug
    Hug的Pypi地址:https://pypi.org/project/hug/
    Hug web framework

    Hug的使用示例:

    # filename: happy_birthday.py
    """A basic (single function) API written using hug"""
    import hug
    
    
    @hug.get('/happy_birthday')
    def happy_birthday(name, age:hug.types.number=1):
        """Says happy birthday to a user"""
        return "Happy {age} Birthday {name}!".format(**locals())
    

    运行:

    hug -f happy_birthday.py
    

    27. FastAPI

    FastAPI是基于Python的现代框架。 它最初被设计为易于使用,以确保最佳的开发体验。 迄今为止,FastAPI是使用Python 3.6+构建API最快的框架之一。

    该框架具有Flask的几个特征,包括其简单性。 整个框架基于Starlette构建,并包含其大部分功能(模板,WebSocket和GraphQL支持)。

    FastAPI框架提供:

    • 开发速度提高200%至300%
    • 减少40%的错误
    • 调试时间更少
    • 减少代码重复
    • 自动交互式文档

    FastAPI并没有与任何数据库紧密耦合。 但是,它支持您需要的数据库。 使用FastAPI,您可以自由地按需要构建项目,甚至可以使用Flask项目之一中的大多数相同文件。

    唯一的缺点是社区很小。 但这是因为FastAPI是一个相对较新的框架。

    FastAPI主页地址:https://fastapi.tiangolo.com/
    FastAPI仓库地址:https://github.com/tiangolo/fastapi
    FastAPI的PyPI地址:https://pypi.org/project/fastapi/
    FastAPI web framework
    FastAPI使用示例:

    from typing import Optional
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: Optional[str] = None):
        return {"item_id": item_id, "q": q}
    

    运行:

    $ uvicorn main:app --reload
    
    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO:     Started reloader process [28720]
    INFO:     Started server process [28722]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    

    28. Grok

    **Grok是一个基于Zope工具箱的全栈开发框架。**它是一个开放源代码框架,专门用于加速Web应用程序开发过程。开发人员必须使用敏捷开发,才能在Grok的帮助下完成工作。

    Grok将在独立网络库的帮助下帮助开发人员访问全面的网络。他们可以根据自己的任务要求选择一个。该框架带有与TurboGears和Pylons相似的UI。它具有组件体系结构,可以帮助开发人员减少应用程序开发的不可预测性。

    Grok的特点:

    • 支持Web自定义应用程序开发
    • 增强的Web应用开发
    • 提升核心技术

    Grok主页地址:http://grok.zope.org/
    Grok web framework

    29. Dash

    Dash是用于构建分析Web应用程序的开源Python框架。 对于对网络开发不太熟悉的Python数据科学家来说,这尤其有用。

    Dash有两个基本优点:

    • 它允许您仅使用Python代码构建高度交互的应用程序。
    • 使用Python工具的强大功能来处理数据非常简单。

    Dash应用程序是运行Flask并通过HTTP请求与JSON数据包通信的Web服务器,前端使用React.js渲染组件。

    使用Dash开发的应用程序将在Web浏览器中呈现,并且可以部署到服务器。 这也意味着Dash应用程序本质上是跨平台且可移动的。

    Dash开发人员可以访问基础的Flask实例及其所有可配置属性。 为了扩展Dash应用程序的功能,开发人员还可以使用丰富的Flask插件集。

    Dash主页地址:https://plotly.com/dash/
    Dash仓库地址:https://github.com/plotly/dash/
    Dash web framework

    30. Django

    Django和Larael最初都是借鉴了RoR的强大思想(动态、DDD、约定优于配置、低重复、及时反馈)。Django框架使用了类MC的MT(模型、视图、模板)模式,用Django ORM和数据库联系。
    DjangoMVC结构
    Django ORM内置的管理面板,可以轻松实现数据库内容的管理。使用很少的配置就可能,自动生成数据库模型。

    视图可以包括函数和类,视图的URL路由分配在urls.py文件中完成,可以设计出完美优雅的URL调度

    Django的模板的系统则相当简单,甚至不支持直接嵌入代码,需要预先生成Tag、Filter才能调用。

    Django支持强大的解决方案:

    • 全栈模式,内置了大量所有必须的模块cache、session、feed、orm、geo、auth。
    • 同时也支持"内置电池"(batteries included)模式。

    Django是典型的"大而全"的逻辑,这可以极大的方便大多数开发者。但是这就导致其灵活性不足。要引入其他更好的第三方优秀组件就基本上很难,比如想要在Django里用SLAlchemy或Mako,需要打上很多补丁,而且会导致管理面板,授权,会话处理或生成表单等功能都不能使用。

    当然Django最人性化的地方是其强大的社区支持和详细文档完美的文档。文档在安装后就完全嵌入系统的各个部分,使用非常方便,这使得其开发的入门门槛很低。

    使用Django,您可以制作从小型项目到复杂网站的任何Web应用程序。凭借其灵活性,Django也可用于制作MVP,从而使初创企业能够优化其时间和预算。

    Django主页地址:https://www.djangoproject.com/

    在这里插入图片描述
    Django使用示例:

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    

    参考资料:

    1. https://steelkiwi.com/blog/top-10-python-web-frameworks-to-learn/
    2. https://www.jiangweishan.com/article/houtduan1324321321.html
    3. https://blog.digitalogy.co/best-python-frameworks-for-web-development-2020/
    4. https://www.open-open.com/lib/view/open1392513977741.html
    展开全文
  • 一、MVC设计模式1.MVC的概念首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。...

    一、MVC设计模式

    1.MVC的概念

    首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

    64be7ebb5cdbe3af550dcf37cfdd7ff5.png

    2.MVC的详解

    虽然MVC并不是Java当中独有的,但是现在几乎所有的B/S的架构都采用了MVC框架模式,但是MVC在B/S架构中并没有完全地实现,其实我们根本不需要掌握未实现的部分。

    ·控制器Controller:控制器即是控制请求的处理逻辑,对请求进行处理,负责请 求转发;

    ·视图View:视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。

    ·模型Model:模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受视图数据的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。

    3.MVC模式的用武之地

    MVC模式被广泛用于Java的各种框架中,比如Struts2、Spring MVC等等都用到了这种思想。

    Struts2是基于MVC的轻量级的web应用框架。基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

    二、Javaweb经典三层架构

    1.Javaweb经历了三个时期

    ①JSP Model1第一代

    JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。

    cbdd5c4f54bc707c5653e26da0b018bf.png

    ②JSP Model1第二代

    JSP Model1第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。

    74dc3b1aaf9b97f35d8c26e94c0c9f4b.png

    ③JSP Model2

    JSP Model2模式已经可以清晰的看到MVC完整的结构了。

    ·JSP:视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;

    ·Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;

    JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

    b669a09b6e5f75e34f622188df45719f.png

    这就是javaweb经历的三个年代,JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发人员的技术要求也提高了。

    2.JavaWeb经典三层框架

    我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的!

    所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。

    ·WEB层:包含JSP和Servlet等与WEB相关的内容;

    ·业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;

    ·数据层:封装了对数据库的访问细节;

    注意,在业务层中不能出现JavaWeb API,例如request、response等。也就是说,业务层代码是可重用的,甚至可以应用到非Web环境中。业务层的每个方法可以理解成一个万能,例如转账业务方法。业务层依赖数据层,而Web层依赖业务层!

    d7033e4d5f35ce27ed1bfeada55cd650.png

    注:网上很多人在讨论MVC究竟是一种框架模式还是一种设计模式(百度百科中强行解释其为一种框架模式而不是一种设计模式),虽然Java中的23种设计模式里并没有MVC,但是我认为讨论这个问题没有太大的必要。我们大可将他作为一种思想,我们需要做的仅仅是理解它,应用它,掌握其中的思想,这才是我们需要做的。

    【编辑推荐】

    【责任编辑:武晓燕 TEL:(010)68476606】

    点赞 0

    展开全文
  • 近年来随着软件行业开发...于是在发展的历程中衍生出了一系列的前端架构思想,其中MVVM思想逐渐成熟并慢慢地作为了行业的主流架构以及架构规范。该文针对MVVM架构思想作一些深入的研究,并深度剖析MVVM架构的原理和实现。
  • web三层架构

    千次阅读 2022-04-10 11:42:33
    三层架构架构的使用,三层架构的演示

    哈喽,大家好,今天我们一起来学习一下“三层架构”吧

    一,什么是三层架构

    1. 表示层 :主要是指与用户交互的界面,用于接收用户输入的数据和显示处理后用户需要的数据
    2. 业务逻辑层 :表示层和数据库访问层之间的桥梁,实现业务逻辑,具体包含:验证、计算、业务规则等等
    3. 数据访问层 :与数据库打交道,主要实现对数据的增、删、改、查
      三层架构
      除了以上的三层外,还有一层是 entity层 :实体层
      实体层

    二,三层架构的特点

    表示层就相当于服务员,专门和用户打交道,获取用户的操作
    业务逻辑层就相当于厨师,从数据访问层拿来数据,根据表示层传来的用户操作去执行操作
    数据访问层就相当于采购员,用户需要什么数据,就从数据库或是文件中拿来此数据,交给业务逻辑

    三,为什么要用三层架构

    用三层架构的目的就是为了实现 高内聚低耦合 的思想:
    高内聚 :尽可能类的每个成员方法只完成一件事
    低耦合 :减少类内部,一个成员方法调用另一个成员方法
    从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用
    从功能块来看, 高内聚低耦合:减少模块之间的交互复杂度
    简单来说,就是 解耦 :只做自己功能内的事

    分层模式是最常见的一种架构模式
    分层模式是很多架构模式的基础

    分层
    将解决方案的组件分隔到不同的层中 在同一个层中组件之间保持内聚性 层与层之间保持松耦合

    面向接口编程:
    设计与实现分开
    在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个
    对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系
    统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,
    这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。

    四,实现的方式

    实现
    实现
    完成的目录结构(样式):

    目录

    五,使用分层实现用户登录功能

    数据是小编写死的,需要自己改
    分析:
    分析

    1. 创建用户实体类
    public class User {
        	private int id;
        	private String username;
        	private String password;
       	public int getId() {
             	return id;
        	}
        	public void setId(int id) {
            		this.id = id;
        	}
        	…省略了后续的set/get方法
    }
    
    1. 编写数据访问层
      数据接口:
    public interface UserDao {
        	//根据用户进行查找,返回用户列表
        	public boolean findUser(User user);
    }
    

    数据访问接口的实现

    public class UserDaoJdbcImpl implements UserDao{
    public boolean findUser(User user){
        	Connection con = null;
        	PreparedStatement pStatement = null;
        	ResultSet res = null;
        	/** 调用创建数据库连接的方法 获得连接,实现用户名和密码查询*/
    }
    
    1. 编写业务逻辑层
      编写业务逻辑层接口
    //编写业务逻辑控制接口UserBiz
    public interface UserBiz {
         	public boolean login(User user);
    }
    

    编写业务逻辑层接口实现

    public class UserBizImpl implements UserBiz{
        	public List login(User user){
            		UserDao ud = new UserDaoJdbcImpl();
            		boolean flag = ud.findUser(user);
            		return flag;
        	}
    }
    
    1. 编写表示层
    <%@page import="org.jbit.bean.*" %>
    <%@page import="org.jbit.biz.*" %>
    <%@page import="org.jbit.biz.impl.*" %>
    <%
        String uname=request.getParameter("user");
        String upwd=request.getParameter("pwd");
        User user = new User();
        user.setUsername(uname);
        user.setPassword(upwd);
        UserBiz ub = new UserBizImpl();
        boolean flag = ub.login(user);
        if(flag)
            response.sendRedirect("welcome.jsp");	
        else
            response.sendRedirect("login.jsp");
    %>
    

    到这里就结束了,希望你能对你有用,记得给小编个赞!!!

    展开全文
  • SOA与微服务架构 参考: SOA架构和微服务架构的区别 微服务架构 vs. SOA架构 SOA 服务架构之简介及理解 领域驱动架构 微服务系统的设计自然离不开DDD(Domain-Driven Design,领域驱动设计),它由Eric Evans提出...
  • 垂直方向架构 多层架构 分层架构通过程序包或者程序的隔离构建松耦合的应用。我们以最近流行的洋葱架构模型进行分析,如图 领域模型 包括领域实体/存储接口/服务接口,是整个程序的核心。 贫血模型 如果把...
  • TP是国人开发的,也是国内占有率第一的PHP web框架,如果说相对于很多语言,例如Java,C++, PHP是绝对的简单易上手, 那么在PHP很多框架里,TP就是框架里的PHP,一样是绝对的简单易上手。 并且,它的文档,开发文档,...
  • Web中MVC设计理念 & 经典三层架构 & 五大主流框架

    万次阅读 多人点赞 2018-10-30 21:31:03
    一、Web的MVC设计理念和MVC框架: 之前在Web篇04中已经详述了Servlet、TomCat、JSP和Web.xml之间的联系; (1)浏览器发送请求到收到响应,简要的过程如下: 浏览器发送请求后,由Web.xml中规定的协议,进入...
  • 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为...
  • 工作几年,发现代码写的越久,写代码前考虑的东西越多,越...然后又开始计划重构代码,甚至重新设计框架,可惜一堆接一堆的新bug等着去解,重构计划一拖再拖,似乎这才是该做的事情,慢慢忘记了软件里那些真正绚丽的
  • 基于django框架web开发环境搭建

    千次阅读 多人点赞 2020-07-23 21:48:47
    是当前python语言最流行的web框架,django本身是基于MVC的设计模式(有的培训机构介也称MTV模式M-model、V-view、T-templates),这只是名称上的区别,总体设计思想相同的,都实现了低耦合、开发快捷、部署方便、可...
  • 「盘古开发框架」是完全独立于 Spring Cloud 生态的一套轻量灵活、成熟可靠的工业级分布式微服务开发和治理框架(兼容垂直单体分层架构)。它基于 Apache-2.0 协议开源发布,且是免费的。我们希望不仅是开源的受益者...
  • 几款常用的高质量web前端框架

    万次阅读 多人点赞 2017-09-20 17:06:18
    Web前端框架就是为了节约开发成本和时间,一般开发一个项目都会用到前端框架(除非自己有前端开发团队),根据我经验找的几款web前端框架做出了分析。都是个人意见,仁者见仁智者见智。
  • CUBA - 一个卓越的 Java 快速开发框架

    千次阅读 2020-03-25 20:25:00
    一个企业级快速开发框架CUBA 架构介绍CUBA 框架的能力开箱即用的功能和界面可扩展性其他CUBA 界面预览CUBA Studio付费部分用 CUBA 的好处在哪里节省人力开发积极支持一直在进化中文资源关于作者欢迎使用Markdown编辑...
  • web开发框架详解

    千次阅读 2017-05-29 12:15:36
    随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或者springMVC这样的框架,...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼常用的java开发框架java作为主流的开发语言之一其框架的使用也是非常广泛的,java到javaee部分全部是在以框架来开发,因为框架可以大大节约时间以及成本,那么java中常用...
  • 2019年最流行的五大Web后端开发框架,你用过哪些呢?2019-11-1456420在Web应用程序开发方面,前端开发和后端开发都在创建出色的商业网站中扮演着重要的角色。后端Web框架由Web应用程序开发环境中服务器端编程使用的...
  • Java后端开发框架

    万次阅读 多人点赞 2019-09-09 15:31:22
    Java web开发框架了解 web开发 前端–页面的设计、路由、展示—静态资源(HTML、CSS、JS)–web服务器(nginx)-- Vue 技术栈开发 后端–对外提供(类)RESTful风格的API—数据库交互-- web应用服务器(tomcat)...
  • 开发中常见的架构模式

    千次阅读 2022-02-16 15:53:13
    驱动架构思想是将应用逻辑解耦为单一用途的事件处理组件,以异步方式接收和处理事件。这是一种较为收欢迎的分布式异步架构模型,以高扩展性和适应性出名。 3.微内核架构(插件架构) 微内核架构中的...
  • 常见的开发框架介绍

    千次阅读 2021-08-18 09:43:00
    常见开发框架  一、Spring  Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。  A.控制反转(IOC)是什么呢?  IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring...
  • 本文仅介绍golang web开发框架httprouter在开发简单的REST API f服务器上的使用,golang开发工具等。 本文要点: 1. golang http包的介绍 2. curl http协议分析工具的介绍和使用 3. ab开发压力测试工具的介绍...
  • Web前端框架开发入坑指南

    万次阅读 多人点赞 2020-06-18 16:07:17
    都2020年了,尽管 Web 开发的典型应用场景除了将服务器用作平台、浏览器用作客户端之外,几乎很少活跃于其他业务领域,但不可否认 JavaScript 语言和框架的使用已经成为了主流。Angular、React 和 Vue,作为 ...
  • 软件架构及几种典型框架

    千次阅读 2021-08-11 21:41:30
    实际上,广义上的架构框架在概念上有很大的不同,架构给人的感觉,包容上更大,所以实际上架构是包含了框架的概念的。广义的架构应为一个系统的架构,不仅仅涉及软件中的技巧,更有系统的观念与视角在其中;不仅要...
  • Web前端热门框架大全

    千次阅读 2019-11-15 16:16:32
    ********前端热门JavaScript框架的分析**** 一、 vue介绍 ...2.什么是vue.js ...与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库...
  • 企业开发框架包括垂直方向架构和水平方向架构。垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序。水平方向架构是指将大应用分成若干小的应用实现系统功能的架构,同时这样的...
  • Spring开发框架

    千人学习 2017-01-01 16:57:37
    Spring是现在为流行的技术开发框架,也是所有企业开发之中必定要使用的开发框架,使用Spring可以有效的避免代码耦合性问题,也可以方便的进行各种开发资源的整合处理。 在Spring框架中其核心组成为DI(依赖注入)与...
  • java web现在流行用什么框架

    千次阅读 2019-03-04 17:53:37
    Java是开源的,框架很多,这些框架都能解决特定的问题,提高开发效率、简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自定义一些公司内部的框架,当然作为学习者我们首先要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,334
精华内容 33,333
关键字:

web开发框架架构思想