【发布时间】:2011-03-22 18:15:21
【问题描述】:
我正在设计(并将实施)一个用于“任务管理”的分层应用程序。
我想使用 ASP.NET MVC(不是条件)并使用 WCF(任何类型的 Web 服务)进行服务器和客户端之间的通信(= mvc 案例中的数据库和控制器)。我想用 WCF 来做,因为以后可能会有一个桌面客户端(它可能只提供部分功能,但仍然......)。
到目前为止,我有几个层次:
---- 服务(业务逻辑)- WCF
--- 存储库
-- ORM:实体框架
- 数据库:MsSQL
这应该是整个系统的基础(或者说是服务器)。客户端应该是 ASP.NET MVC 或 Silverlight 中的 Web 应用程序,也应该是桌面应用程序(无论是什么技术……silverlight、表单……甚至是 Adobe Flex)。
目前的主要问题:
我不知道什么更好(更简单):尝试以某种方式实现默认的 asp.net 成员资格,并以某种方式将其与我的任务表(和项目等)粘合在一起。或者我应该尝试修改 asp.net 成员资格以使用我自己的用户表?我需要用户能够在我的应用程序中更改他们的详细信息或创建新用户等(而不是使用 ASP.NET 配置工具)。所以我认为,我需要找到一些简单的方法来使用 asp.net 成员资格,但要使用我的 users 表。
我不知道在哪里以及如何对用户进行身份验证和授权。我喜欢在控制器上使用属性,也就是说,除非用户在某个组中,否则该控制器是不可访问的。但我认为,这样,我只会保护我的客户端,但服务器仍然不安全。因此,当有人获得服务的地址时,他可以调用它并获取数据。我不知道在这种情况下保护服务的最简单方法是什么。我是否应该为每个服务的操作添加一个附加参数,该参数将提供每次服务检查的用户名和密码?我不认为这是一个正确的解决方案。
我真的被这个困住了......因为有太多不同类型的协议、服务和类型。我迷失在其中。同样从我目前看到的情况来看,趋势都是关于 REST 的。这当然很酷,并且有很棒的 Visual Studio 模板,比如 WCF 数据服务,当我只提供我的实体上下文并且我得到工作的 CRUD 应用程序时。但我不是在创建公共服务,我有一个存储所有用户的数据,每个用户只能看到他的数据。
3 - 有没有一种简单的方法,如何从 Entity Framework 生成可序列化的实体?我已经阅读了几段关于“金属”工具的文章,它可以使 LINQ to SQL 实体可序列化,我可以转移它们。我只是想知道是否有更好的方法,然后将我所有的实体重写为复合类型(很多重新映射)。
抱歉,如果这看起来太混乱了。我是 .Net 的新手,技术和原理太多了,所以很难一次全部使用。我也可能缺少一些关系和明显的解决方案......
感谢任何可能的提示
【问题讨论】:
标签: .net wcf web-services entity-framework architecture