自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SaaS開(kāi)發(fā)入門(mén) 阿里軟件平臺(tái)HelloWorld開(kāi)發(fā)實(shí)例

原創(chuàng)
開(kāi)發(fā) 前端 云計(jì)算 SaaS
在了解了SaaS的基本概念、商業(yè)模式和開(kāi)發(fā)方式等知識(shí)后,你也許想親自動(dòng)手開(kāi)發(fā)一個(gè)SaaS應(yīng)用,卻又不知該如何開(kāi)始。51CTO開(kāi)發(fā)頻道特別邀請(qǐng)了阿里軟件的工程師李戰(zhàn)老師撰寫(xiě)此文,從阿里軟件的商業(yè)模式開(kāi)始,逐步深入,手把手教您開(kāi)發(fā)一個(gè)基于阿里SaaS平臺(tái)的Hello World程序。

【51CTO獨(dú)家特稿】51CTO推出的"

阿里軟件的商業(yè)模式

阿里軟件有一個(gè)旺旺軟件平臺(tái),將自己開(kāi)發(fā)的在線(xiàn)軟件接入,就可以讓阿里巴巴的電子商務(wù)客戶(hù)使用。阿里巴巴是全球最大的電子商務(wù)網(wǎng)絡(luò)公司,擁有超過(guò)1億的注冊(cè)用戶(hù)數(shù)。如果能將自己開(kāi)發(fā)的軟件推銷(xiāo)給這個(gè)龐大的客戶(hù)群,將會(huì)獲得巨大的回報(bào)。而阿里軟件的旺旺平臺(tái)就是這樣一個(gè)集軟件開(kāi)發(fā)、接入、銷(xiāo)售和服務(wù)一體的在線(xiàn)軟件運(yùn)營(yíng)平臺(tái)。

在阿里旺旺軟件平臺(tái)上,只要你的軟件做得好,吸引了大量用戶(hù)來(lái)訂購(gòu),哪怕你的軟件每月只收一元錢(qián),每月都能獲得相當(dāng)數(shù)量的銷(xiāo)售收入。這正是阿里旺旺軟件平臺(tái)最吸引人的獨(dú)特商業(yè)模式!

然而,要想在阿里旺旺軟件平臺(tái)上賺錢(qián),先得搞清旺旺平臺(tái)是怎樣運(yùn)作的。下圖展示了阿里旺旺軟件平臺(tái)的基本商業(yè)模式:


阿里旺旺軟件平臺(tái)的基本商業(yè)模式

 阿里旺旺軟件平臺(tái)實(shí)際上是阿里巴巴旗下所有用戶(hù)的軟件桌面。任何一個(gè)阿里巴巴的用戶(hù),包括B2B、淘寶、支付寶、雅虎、阿里媽媽和口碑網(wǎng)的用戶(hù),都可以隨時(shí)進(jìn)入到旺旺軟件的桌面來(lái),使用各種在線(xiàn)軟件。當(dāng)然,在阿里巴巴旗下的各個(gè)網(wǎng)站中,也有眾多的快捷啟動(dòng)方式,直接將用戶(hù)引至相關(guān)的軟件應(yīng)用中。

另一方面,阿里旺旺軟件平臺(tái)也是ISV(獨(dú)立軟件提供商)的軟件營(yíng)銷(xiāo)平臺(tái),任何一個(gè)軟件開(kāi)發(fā)商都可以將自己的軟件放到這個(gè)營(yíng)銷(xiāo)平臺(tái)上。當(dāng)有用戶(hù)訂購(gòu)并使用你的軟件后,每月都能軟件使用費(fèi),而且是直接打入你的支付寶帳號(hào)。

阿里軟件平臺(tái)的開(kāi)發(fā)和接入

阿里旺旺軟件平臺(tái)的開(kāi)發(fā)和接入流程大致如下:


阿里旺旺軟件平臺(tái)的開(kāi)發(fā)和接入流程

 要在阿里旺旺軟件平臺(tái)進(jìn)行開(kāi)發(fā),首先要注冊(cè)成為阿里軟件的ISV(獨(dú)立軟件提供商)。先進(jìn)入http://www.alisoft.com/,然后找到其中的“開(kāi)發(fā)者加盟”頁(yè)面。如果你已經(jīng)有阿里巴巴中國(guó)站或淘寶網(wǎng)的帳號(hào),可以直接登錄進(jìn)入。如果沒(méi)有,需要注冊(cè)一個(gè)帳號(hào)并登陸。登錄之后,你將有一個(gè)工作平臺(tái)。第一次進(jìn)入工作平臺(tái)的時(shí)候,需要填寫(xiě)兩三項(xiàng)最基本的內(nèi)容,此后即可開(kāi)始使用工作平臺(tái)。

在ISV工作平臺(tái),你可以注冊(cè)一個(gè)新的軟件,開(kāi)始阿里旺旺軟件平臺(tái)的軟件營(yíng)銷(xiāo)之旅。目前,阿里旺旺軟件平臺(tái)支持B/S和C/S兩類(lèi)軟件。B/S類(lèi)軟件可以給用戶(hù)更多的方式來(lái)進(jìn)入你的軟件,從阿里巴巴的所有網(wǎng)站或旺旺客戶(hù)端都行。而C/S類(lèi)軟件則只能從旺旺客戶(hù)端進(jìn)入,因?yàn)橥蛻?hù)端是安裝在客戶(hù)電腦中的即時(shí)通訊軟件,只有旺旺客戶(hù)端才能接入C/S軟件。#p#

Hello World 起步

我們來(lái)注冊(cè)一個(gè)名叫HelloWorld的軟件,輸入相關(guān)的軟件基本信息之后,在ISV工作平臺(tái)的軟件列表中,將有一個(gè)HelloWorld的軟件項(xiàng)目。其中,我們會(huì)得到兩個(gè)代碼,一個(gè)是APP ID(應(yīng)用程序標(biāo)識(shí)),另一個(gè)是CERT CODE(授權(quán)碼)。這兩個(gè)東西會(huì)在隨后與平臺(tái)的WEB API調(diào)用中經(jīng)常用到。

當(dāng)然,一個(gè)B/S結(jié)構(gòu)的SaaS軟件,一定有一個(gè)URL入口。因此,在注冊(cè)完HelloWorld軟件后,還需要補(bǔ)充編輯更多的軟件信息,包括測(cè)試入口和使用入口的URL。這里,我們將HelloWorld程序的入口指定為http://helloworld.leadzen.cn/。當(dāng)最終用戶(hù)從阿里軟件網(wǎng)站或旺旺客戶(hù)端,以及阿里巴巴其他網(wǎng)站進(jìn)入我們的HelloWorld時(shí),就會(huì)將瀏覽器引導(dǎo)到我們?cè)O(shè)置的URL,當(dāng)然后面會(huì)跟上一大堆調(diào)用參數(shù)。

我們的HelloWorld程序是在自己的服務(wù)器上運(yùn)行的,并非運(yùn)行在阿里軟件的服務(wù)器上。因此,我們可以簡(jiǎn)單地這樣理解,阿里旺旺軟件平臺(tái)是阿里巴巴用戶(hù)使用軟件的一個(gè)集中的啟動(dòng)入口,但軟件一旦運(yùn)行起來(lái),就是主要是在ISV自己的服務(wù)上運(yùn)行了。盡管將來(lái)阿里軟件會(huì)提供有*.aliapp.com域名的應(yīng)用程序宿主環(huán)境,但這也是屬于與平臺(tái)不同的服務(wù)器。

阿里旺旺軟件平臺(tái)與ISV應(yīng)用服務(wù)器之間的交互關(guān)系如下圖所示:

 
阿里平臺(tái)與ISV服務(wù)器之間的交互關(guān)系

當(dāng)最終用戶(hù)在阿里旺旺軟件平臺(tái)上使用我們的HelloWorld軟件時(shí),我們的helloworld.leadzen.cn服務(wù)器會(huì)收到類(lèi)似于下面的調(diào)用請(qǐng)求:
http://helloworld.leadzen.cn/?user_id=12176230&app_id=22875&app_instance_id=USERFB4B11067FC25455E32AC4F039B2CD38&token=
A2842BC81AE060C067017336B894F1B6E9AA7A8ED137A91903D1&target
=

在這個(gè)請(qǐng)求中會(huì)帶上一系列參數(shù),各個(gè)參數(shù)的解釋如下:

◆user_id      用于識(shí)別阿里巴巴用戶(hù)的標(biāo)識(shí)信息
◆app_id      要使用的應(yīng)用程序標(biāo)識(shí),也就是注冊(cè)軟件時(shí)的APP_ID
◆app_instance_id     應(yīng)用程序?qū)嵗龢?biāo)識(shí),一個(gè)實(shí)例服務(wù)于一個(gè)人或一個(gè)公司
◆token            身份認(rèn)證令牌,只有10秒生存期并一次有效

當(dāng)我們的服務(wù)器收到這樣的請(qǐng)求之后,首先應(yīng)該識(shí)別訪(fǎng)問(wèn)用戶(hù)的身份是否合法,然后才能為其提供相關(guān)的服務(wù)。要驗(yàn)證用戶(hù)的身份,這就需要調(diào)用阿里旺旺軟件平臺(tái)提供的validateUser服務(wù)。

目前,阿里旺旺軟件平臺(tái)采用的是REST風(fēng)格的API調(diào)用格式。說(shuō)白了就是從ISV的服務(wù)器發(fā)起一個(gè)HTTP請(qǐng)求到阿里旺旺軟件平臺(tái),并得到以XML表示的返回結(jié)果。阿里旺旺軟件平臺(tái)提供了專(zhuān)門(mén)的API調(diào)用地址,開(kāi)發(fā)測(cè)試的調(diào)用地址為:

http://sipdev.alisoft.com/sip/rest

當(dāng)軟件開(kāi)發(fā)測(cè)試完成并上線(xiàn)使用之后,必須使用正式的API調(diào)用地址:

http://sipdev.alisoft.com/sip/rest

例如,開(kāi)發(fā)測(cè)試中的validateUser服務(wù)調(diào)用形式可能如下:

http://sipdev.alisoft.com/sip/rest?sip_appkey=22875 
&sip_apiname=alisoft.validateUser 
&sip_timestamp=2008-10-28 20:00:00
&sip_sign=23ed99f1a0a1eac5f3787d522afde1c4 
&userId=12176230 
&appId=22875  
&appInstanceId=USERFB4B11067FC25455E32AC4F039B2CD38
&token= A2842BC81AE060C067017336B894F1B6E9AA7A8ED137A91903D1

其中的參數(shù)分為系統(tǒng)級(jí)參數(shù)和應(yīng)用級(jí)參數(shù),以sip_開(kāi)頭的是系統(tǒng)級(jí)參數(shù),而其他的是應(yīng)用級(jí)參數(shù)。
 
系統(tǒng)級(jí)參數(shù)說(shuō)明如下:

◆sip_appkey  ISV應(yīng)用的唯一編號(hào),即APP_ID
◆sip_apiname  服務(wù)名,這里是alisoft.validateUser,其他服務(wù)有各自的名稱(chēng)
◆sip_timestamp 發(fā)出請(qǐng)求時(shí)間戳(yyyy-mm-dd hh:mm:ss.xxx),支持毫秒
◆sip_sign   請(qǐng)求數(shù)據(jù)的簽名,系統(tǒng)級(jí)參數(shù)和應(yīng)用參數(shù)按順序拼接后簽名

應(yīng)用級(jí)參數(shù)說(shuō)明如下:

◆userId     用戶(hù)ID,也是客戶(hù)端傳過(guò)來(lái)的那個(gè)user_id
◆appId   應(yīng)用標(biāo)識(shí),即APP_ID
◆appInstanceId  應(yīng)用實(shí)例ID,也是客戶(hù)端傳過(guò)來(lái)的app_instance_id
◆token    身份驗(yàn)證令牌,也是客戶(hù)端傳過(guò)來(lái)的token

其中的sip_sign參數(shù),是一個(gè)簽名數(shù)據(jù)。為了防止非法的調(diào)用或調(diào)用數(shù)據(jù)被中途篡改,旺旺平臺(tái)要求每一個(gè)WEB API調(diào)用必須進(jìn)行簽名。簽名過(guò)程中會(huì)用到注冊(cè)新軟件時(shí)得到的CERT_CODE,這是每個(gè)ISV必須保密的重要數(shù)據(jù),旺旺平臺(tái)據(jù)此來(lái)識(shí)別ISV的真實(shí)身份。

ISV每個(gè)應(yīng)用的CERT_CODE是放在待簽名數(shù)據(jù)的最前面。接下來(lái)是本次調(diào)用的所用到的參數(shù)按名稱(chēng)的字母順排列,依次將參數(shù)名及參數(shù)值填充到待簽名數(shù)據(jù)中。待簽名的數(shù)據(jù)是用UTF8編碼的字節(jié)串。準(zhǔn)備好待簽名數(shù)據(jù)之后,要進(jìn)行一次標(biāo)準(zhǔn)的MD5散列運(yùn)算,得到簽名結(jié)果。簽名的結(jié)果要求是用十六進(jìn)制字節(jié)碼表示的字符串。

當(dāng)調(diào)用旺旺平臺(tái)的各個(gè)參數(shù)準(zhǔn)備好之后,即可創(chuàng)建一個(gè)HTTP請(qǐng)求到阿里旺旺軟件平臺(tái)的服務(wù)器。而調(diào)用參數(shù)可以直接拼接在 http://sipdev.alisoft.com/sip/rest 這一URL的最后,也可以作為POST數(shù)據(jù)來(lái)傳遞。

而阿里旺旺軟件平臺(tái)會(huì)在收到調(diào)用請(qǐng)求后,對(duì)調(diào)用參數(shù)的簽名進(jìn)行比對(duì),以確認(rèn)ISV的身份。同事,還要核對(duì)token是否超期或失效,當(dāng)然還要檢查timestamp是否在合理的范圍之內(nèi)。

調(diào)用完成后,旺旺平臺(tái)會(huì)返回響應(yīng)的HTTP報(bào)文。在這個(gè)報(bào)文的頭部信息中,有一個(gè)sip_status項(xiàng)目,是用來(lái)表示調(diào)用狀態(tài)的。而HTTP報(bào)文的內(nèi)容,是以XML形式返回的結(jié)果。因此我們還需要從XML中解析出結(jié)果的內(nèi)容。例如,validateUser返回的結(jié)果可能是下列形式:

﹤?xml version="1.0" encoding="utf-8" ?﹥
﹤String﹥1﹤/String﹥

不同WEB API接口所返回的數(shù)據(jù)格式是不同的,具體可以參閱阿里旺旺軟件平臺(tái)的在線(xiàn)文檔。地址:http://isp.alisoft.com/apidoc/api/apiIndex.html  

#p# 

HelloWorld源代碼

我們的HelloWorld程序?qū)崿F(xiàn)了一個(gè)識(shí)別和驗(yàn)證阿里巴巴用戶(hù),并在頁(yè)面上輸出不同的結(jié)果。下面是HelloWorld的源程序。

Default.aspx

﹤%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %﹥

﹤!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"﹥ ﹤html xmlns="http://www.w3.org/1999/xhtml"﹥ ﹤head runat="server"﹥ ﹤title﹥阿里旺旺軟件平臺(tái)HelloWorld示例﹤/title﹥ ﹤/head﹥ ﹤body﹥ ﹤asp:Label ID="helloText" runat="server"﹥﹤/asp:Label﹥ ﹤/body﹥ ﹤/html﹥

Default.aspx.cs

using System;
using System.Web;
using System.Security.Cryptography;
using System.Text;
using System.Net;
using System.Xml;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //準(zhǔn)備調(diào)用參數(shù):
        string userId = Request.Params["user_id"];
        string appId = Request.Params["app_id"];
        string appInstanceId = Request.Params["app_instance_id"];
        string token = Request.Params["token"];

        string sip_appkey = appId;
        string sip_apiname = "alisoft.validateUser";
        string sip_timestamp = DateTime.Now.ToString();

        string data = "9c4fb3400ed711de80b8836e34b2dea8";   //CERT_CODE(注冊(cè)軟件時(shí)獲得的)

        //在CERT_CODE之后,按參數(shù)名字母順序?qū)?shù)名及其值拼接起來(lái),用以對(duì)所有參數(shù)簽名:
        data += "appId" + appId;
        data += "appInstanceId" + appInstanceId;
        data += "sip_apiname" + sip_apiname;
        data += "sip_appkey" + sip_appkey;
        data += "sip_timestamp" + sip_timestamp;
        data += "token" + token;
        data += "userId" + userId;

        //用MD5算法對(duì)調(diào)用參數(shù)進(jìn)行簽名:
        MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
        string sip_sign = BitConverter.ToString(MD5.ComputeHash(Encoding.UTF8.GetBytes(data)));
        sip_sign = sip_sign.Replace("-", "");   //一定要去除結(jié)果中的“-”!

        //拼裝調(diào)用參數(shù):
        string api_params = "sip_appkey=" + sip_appkey + "&sip_apiname=" + sip_apiname + 
"&sip_timestamp=" + sip_timestamp + "&sip_sign=" + sip_sign + "&userId=" + userId +
"&appId=" + appId + "&appInstanceId=" + appInstanceId + "&token=" + token; //發(fā)出對(duì)阿里旺旺軟件平臺(tái)的WEB調(diào)用: WebRequest request = WebRequest.Create("http://sipdev.alisoft.com/sip/rest?" + api_params); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; WebResponse response = request.GetResponse(); //根據(jù)返回結(jié)果進(jìn)行相應(yīng)處理 if (response.Headers.Get("sip_status") == "9999") //調(diào)用平臺(tái)成功 { XmlDocument xml = new XmlDocument(); xml.Load(response.GetResponseStream()); switch (int.Parse(xml.SelectSingleNode("String").InnerText)) { case 0: say("HelloWorld,歡迎合法使用者!"); break; case 1: say(sip_sign + "HelloWorld,歡迎合法訂購(gòu)者!"); break; case -1: say("尚未訂購(gòu)或被授權(quán)使用本軟件!"); break; case -2: say("非法使用,拒絕提供軟件服務(wù)!"); break; default: say("調(diào)用參數(shù)可能出現(xiàn)錯(cuò)誤!"); break; }; } else say("調(diào)用阿里旺旺軟件平臺(tái)失敗!"); } private void say(string text) { helloText.Text = text; //helloText是一個(gè)ASP.NET的Label控件 } }

本程序是用Visual Studio 2008編寫(xiě),并在ASP.NET 2.0環(huán)境下測(cè)試通過(guò)。如果你在測(cè)試本程序時(shí)遇到“服務(wù)器提交了協(xié)議沖突. Section=ResponseHeader Detail=CR 后面必須是 LF”的錯(cuò)誤,請(qǐng)?jiān)谀愕膚eb.config中的 ﹤configuration﹥ 中加入以下內(nèi)容:

﹤system.net﹥
    ﹤settings﹥
      ﹤httpWebRequest useUnsafeHeaderParsing="true"/﹥
    ﹤/settings﹥
  ﹤/system.net﹥

阿里旺旺軟件平臺(tái)開(kāi)放了許多的WEB API調(diào)用接口。使用這些WEB API 你可以完成對(duì)阿里巴巴用戶(hù)的驗(yàn)證,可以實(shí)現(xiàn)軟件的收費(fèi),可以調(diào)用實(shí)現(xiàn)支付寶的收付,可以獲取淘寶的商品及交易信息,可以實(shí)現(xiàn)物流的下單,等等。阿里軟件是阿里巴巴電子商務(wù)資源的服務(wù)調(diào)用中心,將會(huì)有越來(lái)越多的WEB API功能開(kāi)放出來(lái)。

要了解阿里旺旺軟件平臺(tái)更多的開(kāi)發(fā)細(xì)節(jié),請(qǐng)查看阿里旺旺軟件平臺(tái)的文檔中心。網(wǎng)址是:http://wiki.isv.alisoft.com/index.php?tracelog=doc_from_home

【編輯推薦】

  1. 專(zhuān)題:SaaS時(shí)代的軟件開(kāi)發(fā)
  2. 對(duì)話(huà)阿里架構(gòu)師 走進(jìn)SaaS應(yīng)用開(kāi)發(fā)
  3. 專(zhuān)訪(fǎng)偉庫(kù)網(wǎng)開(kāi)發(fā)經(jīng)理:SaaS開(kāi)發(fā)的敏捷之道
責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2009-02-10 17:11:53

SaaSSaaS開(kāi)發(fā)PaaS

2009-02-26 16:32:58

SaaS開(kāi)發(fā)SaaS應(yīng)用Open API

2012-07-25 09:08:02

SaaS云計(jì)算云開(kāi)發(fā)

2013-05-20 15:42:22

2009-06-30 14:02:00

hibernate入門(mén)MyEclipse開(kāi)發(fā)

2009-04-02 15:58:12

AndroidEclipseSqlite

2020-08-10 07:00:00

SaaS開(kāi)發(fā)IT

2009-06-15 15:16:00

netbeans sw平臺(tái)開(kāi)發(fā)

2025-04-16 10:00:00

跨平臺(tái)開(kāi)發(fā)Uniapp開(kāi)發(fā)

2011-06-28 14:02:34

QT ARM

2014-07-08 09:37:28

跨平臺(tái)Webhtml5

2021-03-12 18:18:17

云計(jì)算阿里云

2009-04-08 10:43:11

SaaS阿里軟件免費(fèi)

2020-11-10 11:58:17

鴻蒙應(yīng)用開(kāi)發(fā)

2014-07-30 16:43:49

Android

2021-01-19 12:46:45

鴻蒙HarmonyOSHelloworld

2022-02-15 14:06:36

OpenHarmon操作系統(tǒng)鴻蒙

2022-09-19 00:37:13

SaaS云計(jì)算開(kāi)發(fā)

2009-04-29 14:35:57

2020-01-13 09:59:30

開(kāi)發(fā)平臺(tái)智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)