Webサービスプログラムを開発

Webサービスプログラムを開発

序文

このプロジェクトは、科学の中山大学とコンピュータのデータ2019サービス・コンピューティングの作品です。すべてのコードは、ブログgithubのそれらにアップロードされます。
githubのプロジェクト住所:https://github.com/StarashZero/ServerComputing/tree/master/hw5
プロフィール:https://starashzero.github.io
テスト要件:https://pmlpml.github.io/ServiceComputingOnCloud/ex- cloudgoスタート

1、概要

Webサーバの動作のためのシンプルなWebサービスプログラムのcloudgoの開発、。

2、プロジェクトの要件

  • Webサービスプログラムと同様のcloudgoアプリケーションのプログラミング。
    • これは、詳細なメモが必要です
    • フレームワークを使用するかどうかを、フレームワークは、あなたの意思決定のための根拠を説明してくださいREADME.mdに選択するかを決定します
  • カールテストを使用して、テスト結果はREADME.mdを書かれています
  • abでのテストでは、テスト結果はREADME.mdを書かれています。そして、重要なパラメータについて説明します。

3、プログラムのアイデア

  • フレームワーク
    プログラムが使用するmartini三つの主要な理由のために、書き込みにフレームワークを:

    • 比較的単純な、小さな学習曲線を提供マティーニ関数呼び出し
    • 情報マティーニは、より便利なエントリを見つけることができます
    • マティーニは、この作業項目のコードの作成に適しています
  • プロジェクトのフレームワーク:
    ここに画像を挿入説明
    過去からフロントエンドインターフェースコードを提供するためのテンプレートや資産が完了Webアプリケーション(しているオンラインデモ
    main.goおよびサービスは、バックエンドのサポートを提供し、main.go構造とサービスの準備を描くパン先生のカリキュラムのブログのをコードcloudgo

  • 簡単なアイデア
    シンプルcloudgoプログラムの完了は、HTMLインターフェイスは、ブラウザ上に表示しました
    ここに画像を挿入説明

図4に示すように、コードの実装

少し一時的なフロントエンドのコードを説明します

  • main.go
    main.go主ユーザ供給パラメータ(ポート番号)、またはデフォルトのポート番号を取得するために使用され、情報は、サービスサーバの起動に送信されます。
    const (
        //set a default port
        PORT string = "8080"
    )
    
    func main(){
        port := os.Getenv("PORT")
        //use default port
        if len(port) == 0{
            port = PORT
        }
        //allow user set another port
        pPort :=  pflag.StringP("port", "p", PORT, "PORT for httpd listening")
        pflag.Parse()
        //if user set a port, use it
        if len(*pPort)!=0{
            port = *pPort
        }
        //run server
        service.NewServer(port)
    }
    
  • server.go
    server.goサービス側のコードを実装
    • 行われる主な仕事は、HTMLのテンプレートをレンダリング設定、およびガイドのindex.htmlを取得することです
    • リソースのindex.html資産フォルダに必要な(画像、JS、CSSなど)、その経路が設けられています
    • 指定したポート番号にスタートサービス
    func NewServer(port string) {
        //get a martini
        m := martini.Classic()
        //set assets path
        m.Use(martini.Static("assets"))
        //set render template
        m.Use(render.Renderer(render.Options{
            Directory:  "templates",
            Extensions: []string{".html"},
            IndentJSON: true,
        }))
        //deal with get request
        m.Get("/", func(r render.Render) {
            r.HTML(200, "index", nil)
        })
        //run martini
        m.RunOnAddr(":" + port)
    }
    

5、テストプログラム

  • カール
    ここに画像を挿入説明
    カール記号:

    • *カールタスクを示します。
    • >インフォメーションて送信
    • <情報が返されます

    番組要求パケットの詳細やカールのREPONSE、REPONSEはまた、コードのindex.htmlを運び

  • AB
    ABストレステスト使用して
    ここに画像を挿入説明
    説明するパラメータを

    パラメータ 説明
    サーバーのホスト名 ドメインネームサーバ
    サーバポート サーバーのポート
    同時実行レベル の要求の同時テストの数
    テストにかかる時間 テストの期間
    コンプリートリクエスト 完全なテスト要求の数
    毎秒のリクエスト 完成秒あたりのリクエスト数
    リクエストあたりの時間 たびに費やした要求
    接続時間 各段階に必要な時間
公開された34元の記事 ウォンの賞賛8 ビュー2749

おすすめ

転載: blog.csdn.net/qq_20549085/article/details/103017825