Существуют ли какие-либо хорошие рамки / шаблоны / и т.д. для взаимодействия между веб-сервисами? - PullRequest
1 голос
/ 22 марта 2011

У меня есть несколько веб-сервисов на C # .NET / OpenRasta, к которым я постоянно добавляю.

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

Эти сервисы находятся в одном проекте Visual Studio C # (к лучшему или худшему, это было не мое решение).

Мне нужен существующий API / библиотека илиобразец или часть программного обеспечения (или подталкивание кого-то, говорящего «вы знаете ... OpenRasta может сделать это из коробки»), которое я мог бы использовать, чтобы мой сервис мог взаимодействовать друг с другом, в очень свободном и динамичноммода, прежде чем возвращать результат.

Например: скажем, один из моих сервисов - пользовательское состояние / хранение данных, а другой - геоданные.Приложение может отозвать пользователя из пользовательской службы, а затем просмотреть его IP-адрес с помощью службы геоданных, но для этого потребуется 2 вызова службы из приложения.

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

Что было бы хорошо, если бы я мог получить какую-то платформу, где я мог бы вызвать (что-то вроде) ..

http://www.foo.com/user?id=8890823123&ip=county:geo|country|fromIp

и мой пользовательский объект json вернулся бы сэто ip-адрес, замененный полем с именем "страна", который был разрешен путем передачи ip-адреса в качестве параметра методу службы / geo / country / fromIp.ИЛИ если бы я мог позвонить в биржевые службы, например:

GET 
http://www.bar.com/product 
{"desc": "/product?id=92236262", "stock":"/stock?id=92236262"}

и вернуть объект json, который выглядел как {"desc": "коричневые кожаные ботинки, размер 9 1/2", "сток": "7 "}

Мне бы очень хотелось сделать это без жесткого кодирования знаний одной службы в другую;чтобы при добавлении нового сервиса любой из существующих мог использовать его для поиска и т. д.

Это то, что мне нужно самому кодировать, или такие вещи уже существуют?

1 Ответ

0 голосов
/ 23 марта 2011

Ребята из OData пытаются создать вид композиции URI, который вы описываете. Я не думаю, что у них есть реализация.

Не думаю, что это хорошая идея и не нужна, но это только мое мнение. Если вы хотите создавать ресурсы, то создайте слой в своей архитектуре, который явно отображает эти составленные ресурсы. Выполнение этого через URI - это открытое приглашение к проблемам со связью и производительностью.

...