【发布时间】:2013-07-11 09:39:39
【问题描述】:
我目前正在为替换我们现有解决方案的解决方案进行我的第一个适当的技术设计。目前,我们有各种名义上做同样事情的网站。然而,其中 3 或 4 个使用经典 ASP,并且据我所知从未更新,这意味着它们返回的数据充其量是有缺陷的。
他们中的大多数人使用的应用程序是 SharePoint Web 部件,使用 ASP.net (3.5),它根据访问位置动态创建多个输入框和组合框。所有配置都存储在 SharePoint 列表中(包括用于访问数据库的用户名和密码)。当用户单击搜索按钮时,它会调用一个存储过程,该过程处理并返回数据。这个存储过程是重写的另一个主要原因,因为它已经由许多开发人员开发了多年,但没有一个人评论过他们在做什么——它可能需要 30 秒才能返回几百条记录和很多时间它甚至没有返回我所期望的叹息
所以,我终于获得了重写这个的绿灯,我在脑海中想出了一个我认为可行的解决方案。然而,当我把它写下来时,我不相信这是正确的方法,所以我会感谢任何比我有更多知识的人一次性完成它。该应用程序将包含以下内容:
网站
该网站将是非常基本的 - 只需根据他们访问它的 URL 创建输入框并允许他们提交请求。
当用户单击提交按钮时,将使用 ChannelFactory 模式向我的 WCF 层发出请求。
然后将处理响应,用户要么显示他们请求的数据,要么显示错误。
通信(WCF 层)
我们有两个要求,一个用于 Internet,一个用于 Intranet,因此我决定使用 wsHttp 进行 Internet 使用传输级安全性,另一个可能使用另一种协议(可能是 net-tcp 绑定?)
这一层实际上只充当外部世界和数据之间的缓冲区,所以它并没有真正做太多事情。它只是调用下一个数据层中的一个或多个方法
当响应来自数据层时,它要么是数据(好)要么是错误(坏)。 WCF 服务将创建 DataContract 对象或 FaultContract 对象并将其返回给网站。
数据层
对于数据层,我使用 LINQ to SQL 建立与数据库的连接并处理来自 WCF 的请求。我打算将数据层放在数据库服务器上,因此它将被创建为自己的类库。
在数据层,代码将尝试处理请求并将对象返回给 WCF 层。
基本上就是这样。我正在努力使这个系统尽可能地安全,同时让它更易于维护,这样我们就不需要在每次进行小改动时都重新安装 webpart。我还包括了 WCF 层,因此我们可以使其更具弹性,因为它是一个业务关键系统。
我会很感激任何关于我哪里出错的建议,或者一般 cmets :)
【问题讨论】:
-
提高安全性的建议是在 wcf 配置文件中使用 guid。并使用它对 wcf 中的方法进行身份验证,即 AuthenticationHeader。然后你可以把它交给客户:)
-
我不知道为什么这被搁置并被标记下来。这是一个关于离散工作的详细问题,我不确定如何重写它以进一步拆分它,因为没有其他部分存在,任何部分都没有意义。我不是要求人们为我设计我的架构 - 只是我提出的设计是否实用。
标签: c# wcf design-patterns