面向服务架构~面向服务的API是统一接口还是具体业务使用具体的接口?
<div id="cnblogs_post_body">前言说明:这里说的"接口"并不是C#时的interface,而一般指定一个方法签名,它一般为外部提供一个GET请求,接口到请求后,进行处理,然后对调用方进行信息的返回.回到本题中来,事件上,我们坐下来,认真去想想,还是统一接口的比较好,如果要具体业务使用具体接口,那它的具体接口肯定也是去再调用一下"那个统一的入口模块"的,注意,这里我说的是"模块",而不是"接口,类,方法等"
大体流程应该是这样:
客户端调用某个服务接口
接口系统
调用某体业务前的逻辑
创建一个具体业务
调用某体业务后的逻辑
返回给客户端
对于一个服务端的代码要求应该是这样:
1 接口对外具有稳定性
2 对自己具体很好的扩展性(开闭原则)
3 每种具体业务都是独立的(单一职责原则)
对于上述要求,我设计如下代码:
<div class="cnblogs_code"> 1 /// <summary> 2 /// 对外统一接口模块 3 /// </summary> 4 public class SOA : Controller 5 { 6 /// <summary> 7 /// 统一接口方法,外面可以使用GET请求 8 /// </summary> 9 /// <param name="blockName"></param>10 /// <param name="param"></param>11 /// <returns></returns>12 public ContentResult UserAPI(string blockName, string param)13 {14 IAPI create = (IAPI)System.Reflection.Assembly.Load("dll").CreateInstance("namespace" + blockName);15 if (create.Create(param))16 return Content("成功");17 else18 return Content("失败");19 }20 }21 22 /// <summary>23 /// 建立API指定接口规范24 /// </summary>25 internal interface IAPI26 {27 bool Create(string param);28 }29 30 /// <summary>31 /// 添加购买动态的服务32 /// </summary>33 internal class AddBuyingNews : IAPI34 {35 public bool Create(string param)36 {37 return true;38 }39 }40 41 /// <summary>42 /// 添加用户等级的服务43 /// </summary>44 internal class AddUserLevel : IAPI45 {46 public bool Create(string param)47 {48 return true;49 }50 }
页:
[1]