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ストレステスト使用して
説明するパラメータをパラメータ 説明 サーバーのホスト名 ドメインネームサーバ サーバポート サーバーのポート 同時実行レベル の要求の同時テストの数 テストにかかる時間 テストの期間 コンプリートリクエスト 完全なテスト要求の数 毎秒のリクエスト 完成秒あたりのリクエスト数 リクエストあたりの時間 たびに費やした要求 接続時間 各段階に必要な時間