Предложения по сервис-ориентированной архитектуре

По личным и университетским причинам я думаю о создании простой CRM с использованием сервисно-ориентированной архитектуры. Его смысл в том, чтобы объяснить саму архитектуру, а не коммерческое использование.

Я подумывал о внедрении CRM, которая предлагает простую аналитическую службу и обслуживание клиентов (, хранение пользователей, личные комментарии и некоторые другие вещи).

Архитектура, которую я разрабатываю, определяет: -WebGUI (клиент других сервисов) -AnalyticsService (сервис, который получает данные, анализирует и собирает их) -CustomerCareService (сервис который использует RESTful API для применения операций CRUD).

Каждый сервис имеет собственную базу данных, полностью независимую от других. Они открывают общедоступный интерфейс. Интерфейс, конечно, должен обеспечивать некоторую аутентификацию, чтобы отклонять несанкционированные запросы.

Преимущество такого типа архитектуры, которое я хотел бы объяснить, заключается в возможности сделать все вещи независимыми и объединить их для предоставления новых услуг, (например, если бы существовала служба OrderService для обработки заказов, легко объединить его с клиентом, используя общедоступные API). Для меня большим преимуществом является то, что было бы достаточно легко создавать другие клиенты, использующие эти службы.

Я не знаю, какой хороший метод аутентификации можно было бы легко реализовать, я также не знаю, как заставить эти API (использовать XML или простые REST API с данными GET/POST). Я работал с API-интерфейсами Amazon, PayPal и других компаний, похоже, они используют службы REST (paypal использует уродливый _параметр cmd GET, в то время как Amazon использует лучший URI), чтобы знать, что делать, но читаю что-то о SOA похоже, что люди также используют XML.Конечно, я также должен учитывать, что веб-интерфейс должен уметь распознавать вошедшего в систему пользователя, получать токен разрешений (или что-то еще)и использовать его со службами для отображения информации. Так что я не уверен, что SOA — это та архитектура, которую я действительно создаю... это SaaS вместо SOA? Я думаю, что было бы лучше использовать приложения RESTful с JSON или чем-то подобным для его реализации (Я не большой поклонник XML, я считаю, что это слишком многословно ).

Для ясности я привожу здесь свои вопросы.:

  1. Как называется такая архитектура: SOA или SaaS (или и то, и другое)?
  2. Что является хорошей реализацией того, что я хочу получить? (Пожалуйста, объясните это как можно подробнее)
  3. Какой тип аутентификации больше подходит для клиента (токен пользователя по сравнению с OAuth или подобным)
  4. Есть ли у вас какие-либо предложения для такого рода проекта?

У меня есть на это около 3 месяцев, поэтому я не могу сделать что-то действительно сложное, (кроме того, что это было бы нереально для одного программиста).

Я знаю Python (фреймворки WSGI), Ruby on Rails, C/C++ и другие языки (.net исключен)и хотел бы разработать его в среде Linux (MySQL или Postgres, или даже NoSQL, если у вас есть предложения по правильному выбору), я также мог бы объединить несколько языков, будучи независимыми от этих сервисов программами.

Чего я хотел бы здесь, так это иметь хорошую точку зрения и некоторые хорошие предложения.

Спасибо!

6
задан Contango 9 September 2013 в 07:32
поделиться