7

我正在为我的公司构建一个 web 项目的原型,这个想法是像一个模板一样开始构建一个新项目,其中已经完成了所有必要的工作、安全性、IoC、日志记录等......

我正在研究模板的安全方面......并且一开始我想制作一个自定义安全提供程序......但后来我意识到,微软已经通过会员资格做到了......如果任何项目都需要一个不同的提供商...他们只需要更改 web.config 就可以了....

但接下来就是我的问题了......如果我希望不同的层能够获取用户信息......就像服务层(业务服务......不是网络服务),我需要包括 System.Web和 System.Web.ApplicationServices 到该类库。

这是一个坏习惯吗?我不想重新发明轮子,Microsoft Membership 模型对于我的场景来说已经足够了。

谢谢!

4

6 回答 6

4

事实上,System.Web 是 ASP.NET 的一部分。System.Web 中的许多方法都使用 HttpContext.Current 为例——这是有关当前 HTTP 请求的上下文。在非 ASP.NET 应用程序中使用 System.Web 存在以奇怪方式失败的风险,因为您可以访问具有可能使用 HttpContext 的方法的类。这是一个坏主意; 所以,反过来也应该被认为是一种不好的做法。

还有 System.Web 的意图。是的,它只是一个程序集,IDE 可以让您引用几乎任何您喜欢的程序集。但是,System.Web 的意图是在 ASP.NET 应用程序的上下文中。这就是微软的开发人员所假设的;所以,他们会在这个假设下进化它。将来,由于有利于 ASP.NET 应用程序的更改,它们可能会有效地破坏您的应用程序。如果发生这种情况,您将没有办法重新设计您的应用程序以应对这种情况,而不是在您真正计划设计(或重新设计)应用程序的这一部分时。

于 2012-09-11T14:17:13.660 回答
1

您的业​​务层使用它是不好的做法,因为业务层应该独立于数据源。

因此,您将改为在数据层中发出任何 Web 请求,并将收集到的数据公开给您的业务层或任何必要的单独身份验证组件。

作为一项规则 - 业务层中任何不是严格业务的东西都需要抽象成具有定义接口的类。

于 2012-09-11T13:31:56.457 回答
0

这可能是有问题的,因为 System.Web 不是.NET Framework Client Profile的一部分。引用它需要消费者安装完整的框架包。如果您正在构建服务器应用程序,这可能不是问题。

参考:.NET Framework 客户端配置文件中的程序集

于 2012-09-11T13:53:30.937 回答
0

System.Web 是一个和其他库一样的库。是的,它包含很多代码,不包含在紧凑的框架中,并且它的一些功能正在外部复制,例如WebUtility是 .Net 4.5 中的新功能,它完成了HttpUtility的大部分功能。但是,它只是一个类库。

于 2012-09-11T13:37:33.787 回答
0

System.Web 应该只在您的前端。并非架构中的每个地方。最好的例子是 Asp.Net 5 的情况,他们正在删除它。通过将 Web 组件与前端层隔离,您可以避免修改架构的所有层。您应该始终尝试将前端(web、web api、signalR 等)与中间(业务逻辑、转换逻辑等)和后端(数据库、实体框架、web api 调用)隔离开来。

于 2015-01-12T16:27:53.070 回答
-1

我认为这一点也不坏。System.Web 是 .NET 框架的一部分,因此在 .NET 可用的任何地方都可以使用它。当我需要处理 html 和 url 时,我确实在非 Web 应用程序中使用 System.Web。

于 2012-09-11T13:42:49.527 回答