出于个人和大学研究的原因,我正在考虑使用面向服务的架构构建一个简单的CRM.它的意思只是解释架构本身,而不是商业用途.
我正在考虑实施一个CRM,它提供简单的分析服务和客户服务(用户存储,个人评论和其他一些事情).
我正在设计的架构定义: - WebGUI(其他服务的客户端) - AnalyticsService(接收数据,分析和收集数据的服务) - CustomerCareService(使用RESTful API应用CRUD操作的服务).
每个服务都有自己的数据库,完全独立于其他服务.他们暴露了一个公共接口.当然,接口必须提供某种身份验证,以拒绝未经授权的请求.
我想在这种架构中解释的优点是可以让所有东西都独立,并且能够将它们组合起来提供新的服务(例如,如果有一个OrderService来处理订单,很容易将它与客户使用公共API).对我来说最大的好处是,构建使用这些服务的其他客户端很容易.
我不知道什么是一些好的身份验证方法,这可能很容易实现,我也不确定如何制作这个API(使用带有GET/POST数据的XML或普通REST API).我曾经使用亚马逊,PayPal和其他公司API,他们似乎使用REST服务(paypal使用丑陋的_cmd GET参数,而亚马逊使用更好的URI)知道该怎么做,但是阅读有关SOA的东西似乎人们也使用XML.当然,我还需要考虑到Web界面必须能够识别登录用户,获取权限(令牌或其他任何内容)并将其与服务一起使用以显示信息.所以我不确定SOA是我真正构建的那种架构......它是SaaS而不是SOA吗?我认为最好使用RESTful应用程序,使用JSON或类似的东西来实现它(我不是XML的忠实粉丝,我觉得它太冗长了).
为清楚起见,我在这里列出我的问题:
我有大约3个月的时间去做,所以我不能做一些真正复杂的事情(除了对单个程序员来说这是不现实的事实).
我知道Python(WSGI框架),Ruby on Rails,C/C++和其他语言(.net排除),我想在Linux环境下开发它(MySQL或Postgres,如果你有任何建议,甚至是NoSQL)正确的选择),我还可以将几种语言结合起来作为这些服务的独立程序.
我在这里想要的是有一些好的观点和一些好的建议.
谢谢!
我将 SaaS 定义为一种商业模式,而不是一种架构;然而,就像所有业务领域需求一样,它会影响系统架构,但它本身却不会。您所定义的内容对于面向服务的架构至关重要。
您的陈述“独立且能够将它们组合起来提供新服务”是建议 SOA 的基本非功能性设计要求。
SOA 的良好实现在于拥有定义明确且灵活的接口,以及非常清晰的职责划分。然而,很难对这个主题做出规定。证据就在吃中;它是否提供了灵活的重用。我的建议是花时间阅读 SOA 设计模式资源,并了解有关适当使用上下文的定义特征。然后应用单一职责原则适当的抽象级别。cf (域)基于空间的架构是一种 SOA 元模式。
关于授权,我建议遵循服务方法,使用分布式目录服务系统(如开放 LDAP),并注意,对于服务提供者和用户来说,拥有自己的凭据是完全合理的,并且您可以使用公钥-私钥来签名消息。
主要建议是学习和借鉴别人的经验:
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |