研发的那些事3--接口之本
從前,有個程序,
只有一個模塊,自己搞定所有事情,簡單又快樂地生活著。
后來,干的事多了,需要劃分職責,
加了新模塊,不過他們需要彼此溝通協調工作……好在是進程內的,如C#,Java之類的寫幾個Interface就搞定協作規范了。
不過,再后來變成了兩個程序
這下麻煩更大了,因為你說話時,對方可能睡著了zzZZ。甚至,你可能需要同老外交流,更甚至,對方可能來自遙遠的半人馬座。
很明顯,接口不是簡單的”interface”。
????? 接口的本質是一個協議——雙方交互的規范,是雙方為完成某件事情而事先做的一系列約定。約定分為三個層面:展現、業務和通信。業務層是核心,承上啟下,需要考慮如何直觀自然的表達業務。通信層是雙方的溝通方式。展現層則重在考慮溝通雙方的使用方式。如下圖:
業務層(這是核心)
一、協議的形式
二、協議的內容
??
通信層
一、通信方式
???? 完成交互,還需通過一種通信方式為載體,傳遞具體協議的信息。通常通信環境有以下三種:
二、數據格式
???? 確定通信方式后還需要考慮,傳輸時的具體數據格式。
??
展現層
???? 無論業務與通信如何設計,使用者最終需通過一個API,完成交互。這個API即我們通常說的“接口”。存在兩種方式:
??
????? 使用范圍也會影響接口的設計。如果是公司內產品的交互,無論下層如何設計,通常會考慮提供包裝器,供相關團隊使用,因為客戶總是需要寫類似代碼的,不如由一個人(團隊)干了造福大家。如果是公司間產品的交互,在Java和.net上,大Web服務還是不錯的選擇。一方面,雖然重,但因為有工具可以自動生成接口代碼,所以也輕了點。另一方面,大Web服務容易達成共識,因為WSDL是標準元數據格式,溝通方便。至于互聯網上,各式Open API都是類REST的,因為Web是天然面向文檔的,暴露的又都是資源,如此最自然,提供者所作的工作最少。至于消費者,天知道他們用什么語言平臺來訪問,只能請他們自己解析了:)
SOA中的接口
???? 單看技術層次,SOA的核心是服務,服務有三個基本要素:契約、實現和綁定。契約是服務所提供功能的一個規范,重在表達業務概念;實現是服務的具體在語言和平臺的落地,包含提供者的實現和使用者的API;綁定則是服務之間的具體通信協議。分離了使用、業務表達和通信。
??
最后再看看經典的ISO模型
如來神掌……
??
??
?
?
轉載于:https://www.cnblogs.com/Chaos/archive/2011/03/05/1971498.html
總結
以上是生活随笔為你收集整理的研发的那些事3--接口之本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlite数据类型、关键词及创建、修改
- 下一篇: 电缆桥架的拉挤玻璃钢材质优势