面向服务架构~面向服务的API是统一接口还是具体业务使用具体的接口?

简介:

前言说明:这里说的"接口"并不是C#时的interface,而一般指定一个方法签名,它一般为外部提供一个GET请求,接口到请求后,进行处理,然后对调用方进行信息的返回.

回到本题中来,事件上,我们坐下来,认真去想想,还是统一接口的比较好,如果要具体业务使用具体接口,那它的具体接口肯定也是去再调用一下"那个统一的入口模块"的,注意,这里我说的是"模块",而不是"接口,类,方法等"

大体流程应该是这样:

客户端调用某个服务接口

接口系统

调用某体业务前的逻辑

    创建一个具体业务

调用某体业务后的逻辑

返回给客户端

对于一个服务端的代码要求应该是这样:

1 接口对外具有稳定性

2 对自己具体很好的扩展性(开闭原则)

3 每种具体业务都是独立的(单一职责原则)

对于上述要求,我设计如下代码:

 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             else
18                 return Content("失败");
19         }
20     }
21 
22     /// <summary>
23     /// 建立API指定接口规范
24     /// </summary>
25     internal interface IAPI
26     {
27         bool Create(string param);
28     }
29 
30     /// <summary>
31     /// 添加购买动态的服务
32     /// </summary>
33     internal class AddBuyingNews : IAPI
34     {
35         public bool Create(string param)
36         {
37             return true;
38         }
39     }
40 
41     /// <summary>
42     /// 添加用户等级的服务
43     /// </summary>
44     internal class AddUserLevel : IAPI
45     {
46         public bool Create(string param)
47         {
48             return true;
49         }
50     }

通过上面代码,我们可以看到,对外统一UserAPI是稳定的,当业务有变化直接修改具体业务即可,客户端平台不用修改,而AddBuyingNews和AddUserLevel这两个类型是实现各自业务的,它们之间是独立的,功能是单一的,这符合单一职责,而如果服务层希望扩展新的业务只要建立一个新类型即可,对外统一接口UserAPI不用改变,因为具体业务已经通过反射实现了松耦合,有人说反射会对性能有很大的影响,事实上,不是这样的,细心的朋友可以看一下.net自己的托管的类库,用了大量的反射,为何要用反射?我会在另一篇文章中去说明,今天主要讲的就是这些,呵呵.

本文转自博客园张占岭(仓储大叔)的博客,原文链接:面向服务架构~面向服务的API是统一接口还是具体业务使用具体的接口?,如需转载请自行联系原博主。

目录
相关文章
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
4天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
9天前
|
缓存 负载均衡 监控
微服务架构下的接口性能优化策略####
在当今快速迭代的软件开发领域,微服务架构以其灵活性和可扩展性成为众多企业的首选。然而,随着系统复杂性的增加,接口性能问题日益凸显,成为制约用户体验与系统稳定性的关键因素。本文旨在探讨微服务架构下接口性能优化的有效策略,通过具体案例分析,揭示从代码层面到系统架构层面的全方位优化路径,为开发者提供实战指南。 ####
|
11天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
13天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
34 3
|
13天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
31 2
|
16天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
17天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
7天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
17天前
|
JSON 前端开发 JavaScript
API接口商品详情接口数据解析
商品详情接口通常用于提供特定商品的详细信息,这些信息比商品列表接口中的信息更加详细和全面。以下是一个示例的JSON数据格式,用于表示一个商品详情API接口的响应。这个示例假定API返回一个包含商品详细信息的对象。