WSO2 ESB 中入站端点的含义和用途是什么?

What is the meaning and the purpose of an inbound endpoint in WSO2 ESB?

我正在研究这个 material WSO2 ESB 认证:

https://wso2.com/training/enterprise-integrator-developer-fundamentals#request_training_enroll

"Download Lab kit" 部分中有一个关于如何设置 入站端点 的教程。基本上它只是将一个 入站端点 添加到之前实施的教程项目:

https://docs.wso2.com/display/EI611/Sending+a+Simple+Message+to+a+Service

我已经完成了并且工作正常,基本上在我的项目中我有这个 REST API:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/healthcare" name="HealthcareAPI" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/querydoctor/{category}">
        <inSequence>
            <log description="Request Log" level="custom">
                <property name="message" value="Welcome to HealthcareService"/>
            </log>
            <send>
                <endpoint key="QueryDoctorEP"/>
            </send>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
        <faultSequence/>
    </resource>
</api>

可以通过这条语句直接调用:

curl -v http://localhost:8280/healthcare/querydoctor/surgery

然后我将这个入站端点添加到项目中:

<?xml version="1.0" encoding="UTF-8"?>
<inboundEndpoint name="QueryDoctorInboundEndpoint" protocol="http" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
    <parameters>
        <parameter name="inbound.http.port">8285</parameter>
        <parameter name="dispatch.filter.pattern">/healthcare/querydoctor/.*</parameter>
    </parameters>
</inboundEndpoint>

这意味着我也可以使用这个新映射来调用此服务 URL:

curl -v http://localhost:8285/healthcare/querydoctor/surgery

我正在使用另一个端口,因为此入站端点正在执行此映射:

<parameter name="dispatch.filter.pattern">/healthcare/querydoctor/.*</parameter>

我的疑问是:为什么我必须使用 入站端点 而不是我的 REST API 的经典 URL?好处或可能的用例是什么?

我试图阅读有关此端点类型的官方文档页面: https://docs.wso2.com/display/ESB490/Working+with+Inbound+Endpoints

但是我有很多疑惑,它说:

An inbound endpoint is a message entry point that can inject messages directly from the transport layer to the mediation layer, without going through the Axis engine.

我的API是REST服务,为什么要通过AXIS? (据我所知,AXIS 是一种 SOAP WS 技术。)我错过了什么?不通过 Axis 引擎有什么好处?

另一个疑问是:中介层是我的 API 包含中介的序列,但这个传输层是什么?

然后它还指定:

Out of the existing transports only the HTTP transport supports multi-tenancy, this is one limitation that is overcome with the introduction of the inbound architecture.

这是什么意思?我没有得到这个限制。

最后还说明:

Another limitation when it comes to conventional Axis2 based transports is that the transports do not support dynamic configurations. With inbound endpoints, it is possible to create inbound messaging channels dynamically, and there is also built-in cluster coordination as well as multi-tenancy support for all transports.

这是什么意思?

在我看来,在本教程中,没有真正需要(演示目的除外)使用入站端点。不是吗?

如果一些入站端点使用真实案例场景?

这不是一个完整的答案。从软件开发人员的角度来看,这只是我的猜测。使用单个 api 比使用多个不同的 api 更好。结果是更少的代码,更少的错误(代码已经过测试),更多的功能在更短的时间内交付。从历史上看,Web 服务提供了比休息更好的选择,至少在一段时间之前是这样。实际上 wso 是围绕轴引擎构建的,然后是时候引入休息功能了。将 rest 请求转换为与 axis 引擎对 soap 请求所做的相同的对象并使用之前制作的所有内容听起来很合理。缺点,我认为,比纯粹的休息服务可能工作慢得多。另一个问题是 soap 协议和轴引擎有一定的断言和限制,对休息有价值。

例如,如果您希望让 rest 端点接受一些信息并响应文件,您必须配置一组突触属性,如内容类型,以非常棘手的方式编码文件内容。对于这种简单的事情,所有这些配置都将通过几层突触引擎。

我希望 wso 开发人员能分享更多关于主题的信息。