2

我目前正在做我的第一个适当的技术设计,以替换我们现有的一个解决方案。目前,我们有各种名义上做同样事情的网站。然而,其中 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 层,因此我们可以使其更具弹性,因为它是一个业务关键系统。

我会很感激任何关于我哪里出错的建议或一般性评论:)

4

1 回答 1

0

这是一个相当大的话题,但我想说几条评论:

  1. 为网站使用 ASP.NET MVC
  2. 分离您的关注点并使用 Unity 等 IoC 将问题模块化
  3. 尝试使用框架中提供的内置 AuthenticationService 功能
  4. 连接网站中的客户端代理,以便您可以对其进行热插拔和模拟测试。
  5. 使用实体框架而不是 LINQ to SQL(这里只是个人喜好)
  6. 确保您让您的 Intranet WCF 服务使用您所说的 netTcp 并使用 Windows 身份验证
  7. 尝试将 FormsAuthentication 与公共 WCF 服务一起使用,以减轻安全需求的负担。您可能需要放入自定义消息拦截器来设置线程的主体。
  8. 提供所有消息类型 IOrder、ICustomer、IWhatever 的接口变体,并保持您的边界非常谨慎,以实现最大的模块化。

无论如何,这只是我的十便士价值,以上一直对我有用!

于 2013-07-12T14:58:45.833 回答