2010-08-13 81 views
0

我目前有一个由ASP.NET MVC编写的Web应用程序。现在我想添加一个Web服务,以便一些人可以轻松地在其上构建应用程序。我应该在MVC Web项目中创建asmx还是创建另一个引用到Model项目的项目?有什么优点和缺点?如何将Web服务放置在您的ASP.NET MVC Web应用程序

在此先感谢!

回答

1

简单的决定 - 如果您的MVC Web项目完全依赖Web服务,请将其保留在MVC Web项目中。如果没有,请参考您的模型为Web服务创建一个单独的项目。

保持项目独立性可以让人们更有效地阅读和理解你的代码。如果你的服务使用你的模型,但不是该模型的一部分,那么它肯定应该是一个参考模型的独立项目。这是干净的设计。

+0

谢谢!如果我们将Web服务与Web应用程序分开,我们需要单独托管它们,但它们对相同的数据执行相同的逻辑。它看起来对客户有偏见吗? – Roy 2010-08-13 06:57:10

1

我的意见,我会做这样的事情在我的解决方案

solution.Model   -- the model that reflects your db, 
solution.Repository  
solution.MVC    -- your model will be the refined Model, referencing the solution.Model 
solution.Test 
solution.WebService  -- referencing solution.Model 

我把我的模型我的MVC的Web应用程序外,只是把精致的ViewModels在我的MVC模型文件夹。我对pro和con的了解不多,但这只是为我做的一个更好的方法。

这样做,无论如何你都可以使用你的模型。也许你想用它作为你所要求的WebService。或用于其他应用程序。您只需将您的Model项目引用到您需要它们的其他项目。

+0

谢谢,抢!正如你所提到的,我也有一个Model项目。阻止创建新Web服务的唯一原因是我认为单独托管Web应用程序和Web服务存在一点偏差。你如何托管你的Web应用程序和Web服务?谢谢! – Roy 2010-08-13 07:02:03

+0

应用程序和webservice都可以单独托管。他们只是使用Model项目生成的dll。 – 2010-08-17 08:24:32

0

我会寻找奥达塔 - > WCF数据服务形式上称为“阿斯托利亚”。 如果您正在使用例如linq-to-sql或EF,您可以使您的数据以平静的方式提供并提供基本的API ... 您可以像在WCF中那样定义您的端点,因为底层服务基于WCF。而且我会用不同的命名空间......

网站 http://msdn.microsoft.com/en-us/data/bb931106.aspx

新手引导与视频 http://msdn.microsoft.com/en-us/data/ee720180.aspx

开放的数据格式 http://www.odata.org/

相关问题