惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 刘寅

一起来用Websocket(二):Websocket协议详细分析 一起来用Websocket-目录 一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活 封闭式开发小记(11):封闭式开发的测试发布(制定版本规则,展现开发进度) 封闭式开发小记(10):封闭式开发的项目汇报(区分汇报类别和听众、争取最大认可) 封闭式开发小记(9):封闭式开发的最后一天(开发中的一些心情记录,和开发无关) 封闭式开发小记(8):封闭式开发的项目讨论 封闭式开发小记(7):如何和谐沟通、提高士气(结合开发实际冲突来深入讨论合作与沟通) 封闭式开发小记(6):封闭式开发的文档管理 封闭式开发小记(5):封闭式开发的敏捷开发 封闭式开发小记(3):封闭式开发的人员配备 封闭式开发小记(1):封闭式开发的基本装备 封闭式开发小记(2):封闭式开发的时间安排 进程机制与并发程序设计-Linux下C实现-源码-makefile .NET 的 代码整洁之道 与 测试驱动开发 系列之(一)CleanCode 第14章 进程机制与并发程序设计-Linux下C实现(二) 生产者与消费者问题 进程机制与并发程序设计-Linux下C实现(一) 睡觉的理发师问题 操作系统常用页面置换算法模拟实验下载 07 zsb C练习上机(二)
封闭式开发小记(4):封闭式开发的架构设计
刘寅 · 2010-10-07 · via 博客园 - 刘寅

      这里主要简单介绍一下我们产品中主要WEB项目的构架思路,其它后台处理模块和通信服务端先略过.

 我们的架构设计是基于REST的思想,由于这里篇幅有限,不对这种思想进行详细描述,这里只描述几个REST的原则:

    网络上的所有事物都被抽象为资源(resource); 
    每个资源对应一个唯一的资源标识符(resource identifier); 
    通过通用的连接器接口(generic connector interface)对资源进行操作; 
    对资源的各种操作不会改变资源标识符; 
    所有的操作都是无状态的(stateless)。 

其实,之所以我们选用这种架构,主要是因为,我们的业务很多是无状态的,且不需要太多的事务性原子化操作。主要的业务都是展现。只是在查询的多样性方面会有一些要求。所以,我们的开发人员可以为相应的请求(URL)进行访问指定的资源。

   由于MVC的种种好处,我们把MVC的使用方式进行了改造。我们并没有使用.NET MVC默认的Viewer,而是直接自己使用通用json格式,结合模板和JS代替.在走协议方面,当然还是基于http协议咯,毕竟是网络应用.但是我们没有使用原生的http的四个方法来实现.

由于原生http方法是GET,POST,PUT,DELETE,可以对应CURD中的增删改查,但更多的暴露了太多数据结构,而把太多的状态的工作放到的URL.

   所以个人总结REST共有下面几句话:

1.       RESTURL驱动的,URL的变化代替了内部的状态变化

2.       REST WEB项目更像Winform项目.

3.       REST 对数据的依赖大于业务逻辑.在业务逻辑确定之后,可以按业务逻辑和流程,结合状态变化先订好URL地址,这样可以防止不同小组间的冲突.

4.       REST 是个数据提供者,展现方式你自己决定.

5.       REST 不适合处理复杂的业务逻辑和大量的状态迁移.

6.       REST不仅仅可以走HTTP,也可以走TCP,或者HTML5中的Websocket.只要是按照前面的那几种原则来.

例子: 

下面简单基于描述一个登录注册的例子,使用的是html5中的websocket

.


说明:

1.       WS是使用websocket协议.

2.       一共有增加用户,更新用户信息,登录,和检查用户状态等功能.

3.       其中更新用户信息和登录都会指向下一个url ,即检用户状态的url.

也曾看过几篇关于REST的不好之处的文章,个人觉得有每个模式不是完美的,也有各自的优点和缺点,关键是你有那么多资源和时间吗?或者你能在尽可能短的时间内向TEAM的程员讲清楚,又能满足项目或产品的进度需求吗?如果上面几个问题都没问题,那用什么也没问题了.我们不是使用最完美的架构,而是此时此刻最适合的.

引用

CRUD不适合REST吗?

http://www.infoq.com/cn/news/2009/08/CRUDREST

REST构架风格介绍之一:状态表述转移

http://www.cnblogs.com/weidagang2046/archive/2009/05/08/1452322.html

 

思路决定出路!

        目录: 

    封闭式开发小记(1):封闭式开发的基本装备

   封闭式开发小记(2):封闭式开发的时间安排

   封闭式开发小记(3):封闭式开发的人员配备

   封闭式开发小记(4):封闭式开发的架构设计

   封闭式开发小记(5):封闭式开发的敏捷开发

   封闭式开发小记(6):封闭式开发的文档管理

   封闭式开发小记(7):如何和谐沟通、提高士气(结合开发实际冲突来深入讨论合作与沟通)

   封闭式开发小记(8):封闭式开发的项目讨论(10.9)

   封闭式开发小记(9):封闭式开发的最后一天(10.10)

   封闭式开发小记(10):封闭式开发的项目汇报(10.11)

   封闭式开发小记(11):封闭式开发的测试发布(10.12)