c# - 网站的 WCF 设计模式

标签 c# wcf design-patterns

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

8年前关闭。




Improve this question




我目前正在做我的第一个适当的技术设计,以替换我们现有的一个解决方案。目前,我们有各种名义上做同样事情的网站。然而,其中 3 或 4 个使用经典的 ASP,并且据我所知从未更新,这意味着它们返回的数据充其量是有缺陷的。

他们中的大多数人使用的应用程序是一个 SharePoint Web 部件,使用 ASP.net (3.5),它根据访问位置动态创建多个输入框和组合框。所有配置都存储在 SharePoint 列表中(包括用于访问数据库的用户名和密码)。当用户单击搜索按钮时,它会调用一个存储过程,该过程处理并返回数据。这个存储过程是重写的另一个主要原因,因为它已经由许多开发人员开发了多年,但没有一个人评论过他们在做什么——它可能需要 30 秒才能返回几百条记录和很多时间它甚至没有返回我所期望的叹息

所以,我终于获得了重写这个的绿灯,我在脑海中想出了一个我认为可行的解决方案。但是,当我把它写下来时,我不相信这是正确的方法,所以我会感谢任何比我有更多知识的人一次性完成它。该应用程序将包括以下内容:

网站

该网站将非常基本 - 只需根据他们访问它的 URL 创建输入框并允许他们提交请求。

当用户单击提交按钮时,将使用 ChannelFactory 模式向我的 WCF 层发出请求。

然后将处理响应,用户要么显示他们请求的数据,要么显示错误。

通信(WCF 层)

我们有两个要求,一个用于 Internet,一个用于 Intranet,因此我决定使用 wsHttp 来使用传输级安全性进行 Internet,另一个可能使用另一种协议(protocol)(可能是 net-tcp 绑定(bind)?)

这一层实际上只充当外部世界和数据之间的缓冲区,所以它并没有真正做太多。它只是调用下一个数据层中的一个或多个方法

当响应来自数据层时,它要么是数据(好)要么是错误(坏)。 WCF 服务将创建一个 DataContract 对象或一个 FaultContract 对象并将其返回给网站。

数据层

对于数据层,我使用 LINQ to SQL 建立与数据库的连接并处理来自 WCF 的请求。我打算将数据层放在数据库服务器上,因此它将被创建为自己的类库。

在数据层,代码将尝试处理请求并将对象返回给 WCF 层。

所以基本上就是这样。我正在努力使这个系统尽可能地安全,同时让它更易于维护,这样我们就不需要在每次进行小改动时都重新安装 webpart。我还包括了 WCF 层,因此我们可以使其更具弹性,因为它是一个业务关键系统。

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

最佳答案

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

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

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

    关于c# - 网站的 WCF 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17590049/

    相关文章:

    c# - 有类型<>/无类型设计

    c# - 使用 Linq to C# 获取特定属性值

    c# - WCF - 最大接收消息大小

    wcf - 如何使用 Postman 调用 WCF SOAP Web 服务

    java - 层间通信装饰器

    database - 将两个完全不同的类作为一个类

    c# - 函数 "OnApplicationPause"在应用程序启动时起作用。安卓,unity3d

    c# - 将实时数据从服务器端 c# 程序推送到多个 WPF 客户端的最佳方法是什么?

    c# - 如何根据参数更改 wcf 响应类型?

    java - OOP 类是一个 Observable 和 Observer