如何使应用程序访问我的模型,而不必通过它们传播我的模型DLLS

时间:2009-12-03 21:26:50

标签: asp.net-mvc silverlight entity-framework wcf-data-services

我有一个架构问题。我们公司有很多应用程序,我们计划在未来的项目中使用ASP.NET MVC和Entity Framework。我们需要实现的下一个项目是中央授权/身份验证系统。没有选择使用现有的原因,因为现在还没有。该系统可能将构建为服务。我们不知道的是:其他应用程序将如何了解此授权/身份验证系统的“模型”?我的意思是,他们将如何知道用户,角色等等?什么是最佳做法?我们的一位同事建议在类库中创建实体框架模型(.edmx)。问题是,在这种情况下,我们应该为将访问授权/身份验证系统的所有项目复制此dll。这是一个好的解决方案吗?有没有人有更好的主意?

2 个答案:

答案 0 :(得分:3)

您可以将服务实现为基于SOAP的Web服务,这意味着您的数据模型和方法将通过SOAP公开并使用WSDL进行描述。可以使用任何语言使用Web服务,而无需分发任何类库。

许多语言还具有基于SOAP接口的WSDL描述自动生成客户端类包装器的工具(例如,用于.NET客户端的wsdl.exe)。

答案 1 :(得分:0)

只是添加到DSO已经说过的内容,标准的方法是通过Visual Studio中的“添加服务引用”对话框。它将查询您的Web服务,找出所需的类,并将它们放在reference.cs文件中。您也可以使用svcutil.exe(或者如果您使用的是Silverlight,SLSvcUtil.exe)来执行相同的操作。每次更改Web服务的界面时都必须重新生成reference.cs文件,但这通常只需要几秒钟。

也可以创建一组独特的数据传输对象,这些对象可以在应用程序的各个层之间来回共享,但除非你有非常强大的架构要求,否则我发现了自动生成的类工作得相当好。

另请参阅此处有关EF 4.0中可用的自跟踪实体的文章,如果这是您的选项:http://msdn.microsoft.com/en-us/magazine/ee335715.aspx