v2.0.2 之前只有 CoderDefault 是内置的（已标为弃用，由 CoderForName 替代）。因为经常有人会忘记 `-parameters`，或者给参数添加 `@Param(name)` 注解，所以新加一个内部编码器 CoderForIndex（之前需要外部定制）

新的编解码器选择：

| 编码器                 | 描述                            | 当用 lpc 发 | 当用 bus 发 |
| -------------- | ------------------- | -------- |  -------- |
| CoderForIndex      | 基于参数序位对齐编码     |   正常调函数   | 用 `Object[]` 作为载核  |
| CoderForName     | 基参数名字对齐编码        |   正常调函数   | 用 `Map<String,Object>` 作为载核   |

* CoderForIndex：要求发送与接收的参数顺序是相同的
* CoderForName：要求相关模块编译时启用：`-parameters`，或使用 `@Param(name)` （dami 包下的）注解



### 1、配置示例

* 默认配置

```java
DamiConfig.configure(new CoderForIndex());
```

* DamiLpc 实例配置

```
DamiLpc lpc = new DamiLpcImpl(bus).coder(new CoderForIndex());
```


### 2、CoderForName 应用示例


* for Provider

```java
import org.noear.dami2.annotation.Param;

public class UserServiceImpl {
    public void onCreated(@Param("userId") Long userId, @Param("name") String name) {
        System.err.println("onCreated: userId=" + userId + ", name=" + name);
    }

    public Long getUserId(@Param("name") String name) {
        return 99L;
    }
}

//Provider
Dami.lpc().registerProvider("demo.user", new UserServiceImpl());
```


* for Consumer

```java
import org.noear.dami2.annotation.Param;

public interface UserService {
    void onCreated(@Param("userId") Long userId, @Param("name") String name);

    Long getUserId(@Param("name") String name);
}

//Consumer
UserService userService = lpc.createConsumer("demo.user", UserService.class);
Long userId = userService.getUserId("dami");
```
