2017-02-03 4 views
0

Visual Studioで角度uiルーティングを使用した単一ページアプリケーションを構築しました。このフロントエンドアプリケーションはうまくいきます。ノート MVCアーキテクチャに基づいてこのフロントエンドを構築しないでください。それはangular seed's projectに基づいています。異なるVSソリューションでの角型フロントエンドとC#バックエンド

問題:

今私は、API呼び出しを処理するC#のバックエンドを構築する必要があります。条件は次のとおりです。

  1. 異なるVisual Studioのソリューションに含まれている必要があります。私のクライアントはフロントエンドを静的にしたいと考えています。たとえば、バックエンドをPythonに変更する場合は、フロントエンドを再利用できます。
  2. 両方とも同じポートで実行する必要があります。たとえば、フロントエンドはlocalhost:13000で動作します。その後、バックエンドはlocalhost:13000/apiで実行する必要があります。
  3. Nginxを使用していません。このアプリケーションはユーザーのコンピュータにインストールされ、Nginxのインストールはアマチュアユーザーにとっては難しいです。

考えられる解決策:

  1. 通常のMVCを構築します。フロントエンドとバックエンドは同じVisual Studioのソリューションにあります。しかし、これは基準#1と衝突する。
  2. フロントエンドとバックエンドのための別のソリューションを構築します。それぞれ異なるポートで実行され、お互いに通信します。しかし、セキュリティ上の問題があり、それも基準#2と衝突します。
  3. Nginxを使用して両方のポートを「プロキシ」します。しかしこれは基準#3と衝突する。
  4. フロントエンドとバックエンドの両方の要求を処理する自己ホスティング型C#サーバーを構築します。今私はDavid's simple web serverに基づいてそれを構築しようとしています。今のところこれは3つの基準すべてを満たしていますが、「String」要求のみを受け入れます。すべての画像とグリフィコンが機能していません。すべてのタイプの要求を受け入れるようにWebサーバーを構成することは、多くの作業になります。

私の質問:

  1. はこれを行うための簡単な方法はありますか?私はOWINについて少しは読んだことがありますが、それが私がこの問題に必要なものかどうかはわかりません。
  2. ソリューション#4が最善の方法である場合、Webサーバーを正しく構成する方法に関するガイドがありますか?
  3. 解決策#4が最良の方法である場合、これのための別のルーティングをどのように処理するのですか?ページにapp.jsで設定したルーティングを使用し、apiを呼び出すときにバックエンドのルーティングのみを使用するようにします。

ありがとうございました。

+0

で、非常に高速で、優れていますa。あなたは.net Coreと自営のKestrelプロジェクトを使うことができます。このようにして、バックエンドは静的コンテンツとしてフロントエンドにサービスを提供し、sepparateプロジェクトにもなります。 – Gusman

答えて

4

IISの同じWebサイトで2つの仮想アプリケーションを実行することをお勧めします。 IISに入ると、Webサイトを作成し、その下に仮想アプリケーションを作成することができます。例えば;

  1. www.company.com会社と呼ばれるWebサイトを作成します。comの
  2. www.company.com/appはアプリと呼ばれ、あなたの角度のアプリケーションが
  3. www.company.com/api APIと呼ばれ、これはどこのWeb APIになりますcompany.comの下で仮想アプリケーションを作成するに住んでいるところ、これはなりますcompany.comの下で仮想アプリケーションを作成します。人生。これは.NETアプリケーションにすることができます。

PHPに移行する場合、ウェブサイトの設定を調整する必要があるかもしれませんが、それでも良い計画です。

+0

私の現在の「テンプレート」は非常に似ています。私は運が良かったので、通常は1つのVSソリューションと異なるプロジェクト(WebアプリケーションとAPI)の異なるポートを使用するようになりますが、OPの要件を満たしていれば、ここで説明した方法でやります。 – SlimsGhost

+0

このソリューションは、ユーザーのPCにIISをインストールして構成する必要があることを意味します。これはソリューション#3で同じ問題を引き起こしますが、アマチュアユーザーはそれを行うのが難しいでしょう。 IISを構成するインストーラを作ることもできますが、それはユーザーのPC上で多くのプロセスが実行されることを意味し、そのことを避けたいと考えています。 –

+0

「別のVSソリューションで」とはどういう意味ですか?別のリポジトリまたはソース管理に入れる必要がありますか?同じ場所にいる場合は、重複するフォルダを参照する2つのソリューションを持つことはかなり簡単です。 – fireydude

0

私はいくつかの同じプロジェクトの構造体を持っていますが、私は角度を使用しません。私はあなたを助けることを願っています。

"visual studio code"でウェブサイトを構築し、 "visual studio 2015"でバックエンド(api)を作成します。 APIのPublishフォルダは、Webサイトのリリースフォルダにあります。私はIISを使用してウェブサイトにwww.example.comフォルダを変換

root/inetpup/sites/www.example.com 
root/inetpup/sites/www.example.com/api 

。 ウェブサイトは「www.example.com」、apiは「www.example.com/api」で利用可能です。私は次のようにバックエンドから日付を要求する必要があり、フロントエンドで

www.example.com/api/items 
1

私は、以前の単一サーバためfireydudeの仮想ディレクトリのアプローチ@使用していたがプロジェクトを主催しましたが、もしそれぞれのユーザーのマシンにというWebサイトをインストールする必要があるとしている場合、おそらく最も簡単に自己ホスト型の方法でこれを達成できます。

OWINセルフホスティングを見てください。特に、自分のエンドツーエンドの統合テストを実装するために自己ホスト型のアプローチを使用するサンプルコードを探すことができます。この正確なことは現在のプロジェクトで行っていますが、残念ながら私はここでそれを共有することはできません。

あなたはWEBAPIを使用するを強制した場合、あなたはそうする自由を持っている場合、私は非常にあなたがServiceStackに見てみることをお勧めします、otherhandに

https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

を見てみましょうフレームワーク - それだけでIDE(アマゾン、グーグルなどによって承認されたものと同様)よりよいメッセージベースのAPIのアプローチ

http://docs.servicestack.net/self-hosting

関連する問題