1

我有 2 个独立的 MVC 3 网站(A 和 B),它们都有自己的 SQL Azure 数据库,它们可能位于也可能不在同一台服务器上。两者都使用 Code First Entity Framework,并将部署到 Windows azure。

网站 A 被视为主网站和数据库。这包含使用我们软件的客户的数据以及用户名和密码。我希望网站 B 在用户登录或注册时连接到网站 A 的数据库。网站 B 还需要访问网站 A 的数据库,以便在用户登录后获取客户的一些数据。

现在我只有一个网站 B 访问网站 A 的数据库,但将来我会有更多这样的网站,例如网站 B,出于同样的原因访问主数据库。

我的问题是在这些较小的网站和主数据库之间发送和接收数据的最佳方式是什么?

起初,我只是在网站 B 中使用 2 个具有两个不同上下文的连接字符串(每个 db 一个)。我喜欢这个,因为对象类型都一起流动,没有任何转换要做。但是,我不确定这是否是最好和最安全的方法。

我一直在寻找的另一个选择是 oData Services。我确实喜欢将所有内容分开并在需要来自主数据库的数据时调用服务的想法。我遇到的问题是将数据从服务传输到模型的对象中。我不得不做像这样的 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 回答