出于个人和大学研究的原因,我考虑使用面向服务的体系结构构建一个简单的CRM系统。它的意义在于解释架构本身,而不是商业用途。
我想要实现一个可以提供简单分析服务和客户关怀(用户存储、个人评论和其他一些功能)的CRM系统。
我正在设计的体系结构包括: - WebGUI(其他服务的客户端) - AnalyticsService(接收数据、分析并收集数据的服务) - CustomerCareService(使用RESTful API执行CRUD操作的服务)。
每个服务都有自己的数据库,完全独立于其他服务。它们公开了一个公共界面。当然,这个接口必须提供某种形式的身份验证,以拒绝未经授权的请求。
我想解释这种体系结构的优点是拥有所有独立的事物,并能够将它们组合起来提供新的服务(例如,如果有一个OrderService来处理订单,将其与Customer结合使用公共API将会很容易)。对我来说最大的优势是可以很容易地构建其他使用这些服务的客户端。
我不知道什么是一种好的身份验证方法,这可能很容易实现,我也不确定如何制作这些API(使用XML还是纯RESTful API与GET/POST数据)。我曾经使用Amazon、PayPal和其他公司的API,它们似乎都使用RESTful服务(paypal使用一个丑陋的_cmd GET参数,而Amazon使用更好的URI)来知道要做什么,但在读一些关于SOA的内容时,人们似乎也使用XML。当然,我还需要考虑到Web界面必须能够识别已登录用户、获取权限(令牌或其他)并将其与服务一起使用以显示信息。
因此,我不确定SOA是否真正适合我正在构建的体系结构...是SaaS而不是SOA吗? 我认为最好使用RESTful应用程序,使用JSON或类似的东西来实现它(我不是XML的忠实粉丝,我觉得它太冗长了)。
为了清晰起见,我在这里列出了我的问题: 1.这种体系结构称为SOA还是SaaS(或两者都是)? 2.对于我想要实现的内容,好的实现方法是什么?(请尽可能详细地解释) 3.哪种身份验证方式更适合客户端(用户令牌 vs OAuth或类似方式)? 4.你对这个项目有什么建议吗?
我有大约3个月的时间去完成它,所以我不能做一些真正复杂的事情(除了这个事实,对于单个程序员来说这也不现实)。
我知道Python(WSGI框架)、Ruby on Rails、C/C++和其他语言(.net除外),我希望在Linux环境下开发它(MySQL或Postgres,甚至是NoSQL,如果您有对正确选择的建议),我还可以结合几种语言,使这些服务成为独立的程序。
我想要一些好的观点和建议。
谢谢!
我想要实现一个可以提供简单分析服务和客户关怀(用户存储、个人评论和其他一些功能)的CRM系统。
我正在设计的体系结构包括: - WebGUI(其他服务的客户端) - AnalyticsService(接收数据、分析并收集数据的服务) - CustomerCareService(使用RESTful API执行CRUD操作的服务)。
每个服务都有自己的数据库,完全独立于其他服务。它们公开了一个公共界面。当然,这个接口必须提供某种形式的身份验证,以拒绝未经授权的请求。
我想解释这种体系结构的优点是拥有所有独立的事物,并能够将它们组合起来提供新的服务(例如,如果有一个OrderService来处理订单,将其与Customer结合使用公共API将会很容易)。对我来说最大的优势是可以很容易地构建其他使用这些服务的客户端。
我不知道什么是一种好的身份验证方法,这可能很容易实现,我也不确定如何制作这些API(使用XML还是纯RESTful API与GET/POST数据)。我曾经使用Amazon、PayPal和其他公司的API,它们似乎都使用RESTful服务(paypal使用一个丑陋的_cmd GET参数,而Amazon使用更好的URI)来知道要做什么,但在读一些关于SOA的内容时,人们似乎也使用XML。当然,我还需要考虑到Web界面必须能够识别已登录用户、获取权限(令牌或其他)并将其与服务一起使用以显示信息。
因此,我不确定SOA是否真正适合我正在构建的体系结构...是SaaS而不是SOA吗? 我认为最好使用RESTful应用程序,使用JSON或类似的东西来实现它(我不是XML的忠实粉丝,我觉得它太冗长了)。
为了清晰起见,我在这里列出了我的问题: 1.这种体系结构称为SOA还是SaaS(或两者都是)? 2.对于我想要实现的内容,好的实现方法是什么?(请尽可能详细地解释) 3.哪种身份验证方式更适合客户端(用户令牌 vs OAuth或类似方式)? 4.你对这个项目有什么建议吗?
我有大约3个月的时间去完成它,所以我不能做一些真正复杂的事情(除了这个事实,对于单个程序员来说这也不现实)。
我知道Python(WSGI框架)、Ruby on Rails、C/C++和其他语言(.net除外),我希望在Linux环境下开发它(MySQL或Postgres,甚至是NoSQL,如果您有对正确选择的建议),我还可以结合几种语言,使这些服务成为独立的程序。
我想要一些好的观点和建议。
谢谢!