1

私は 2 つの別個の MVC 3 Web サイト (A & B) を持っており、どちらも同じサーバー上にある場合とない場合がある独自の SQL Azure データベースを持っています。どちらも Code First Entity Framework を使用しており、windows azure に展開されます。

Web サイト A は、マスター Web サイトおよびデータベースと見なされます。これには、ユーザー名とパスワードとともに、当社のソフトウェアを使用しているクライアントのデータが保持されます。ユーザーがログインまたは登録するときに、Web サイト B が Web サイト A のデータベースに接続するようにします。Web サイト B は、ユーザーがログインした後にクライアントのデータの一部を取得するために、Web サイト A のデータベースにもアクセスする必要があります。

現時点では、この 1 つの Web サイト B が Web サイト A のデータベースにヒットしているだけですが、将来的には、同じ理由で、Web サイト B のようなこれらの Web サイトがメイン データベースにヒットすることになるでしょう。

私の質問は、これらの小規模な Web サイトとマスター データベースの間でデータを送受信するための最良の方法は何ですか?

最初は、Web サイト B で 2 つの異なるコンテキスト (データベースごとに 1 つ) で 2 つの接続文字列を使用していました。オブジェクトの種類がすべて一緒に流れ、変換する必要がなかったので、私はこれが好きでした.しかし、これが最善かつ最も安全な方法であるかどうかはわかりませんでした.

私が検討しているもう 1 つのオプションは、oData サービスです。すべてを分離し、マスター データベースからのデータが必要なときにサービスを呼び出すというアイデアが気に入っています。私が抱えている問題は、データをサービスからモデルのオブジェクトに転送することです。私はこの foreach ステートメントのような厄介なことをしなければなりません:

public ActionResult GetMovies()
    {
        var ctx = new MovieODataService.MovieContext(new Uri("http://localhost:54274/MovieService.svc/"));

        DataServiceQuery<MovieODataService.Movie> query = ctx.Movies;

        var response = query.Execute() as QueryOperationResponse<MovieODataService.Movie>;

        var model = new MovieModel();

        model.Movies = new List<Movie>();

        foreach (var item in response)
        {
            model.Movies.Add(new Movie
                                 {
                                     Title = item.Title,
                                     ReleaseDate = item.ReleaseDate
                                 });
        }

        return View(model);
    }

また、他の提案も受け付けています。前もって感謝します!

4

1 に答える 1

0

OData は多くの点で優れていますが、その真価が発揮されるのは、(できれば) スキーマ化された情報に対する豊富なクエリ可能性を公開することです。これは、認証呼び出しにはあまり適していないように感じます。

OAuthなど、より伝統的な認証プロトコルを見たことがありますか? それはあなたが達成しようとしているものにはるかに適しているようです。

于 2012-09-17T17:28:26.423 に答える