使用可供客户使用的Web服务实现应用程序的最佳方式,也可从第三方获取Web服务的信息

时间:2014-02-18 21:08:28

标签: .net web-services logging transactions

对于我们的一位客户,我们必须建立一个应用程序来在印刷办公室订购文件。我们是客户和印刷办公室之间的聚会。

我们从一组可在我们自己的服务器上获得的文档开始。我们将使用将由客户提供的excel更新这些文档的信息。一切都将存储在我们的数据库中。 客户端可以更新文档或将其标记为无效,这将通过在我们的末端调用webservices来完成。

客户还会向我们发送客户订单。我们将更新订单信息,然后将包含该信息的文档发送到打印办公室。印刷办公室有自己的网络服务。我们不能要求印刷办公室向我们提供订单的更新,因此我们需要从印刷办公室本身提取这些信息,并通过呼叫他们自己的网络服务将这些信息提供给我们的客户。

文档将放在我们的服务器上,我们需要处理excel以将这些文档的信息放入数据库中。准备好后,内容管理员可以查看它,然后为每个文档执行手动更新。这通过将每个文档的数据输入到Web应用程序中的表单中。

我们的内容管理员还应该能够查看订单,跟踪订单,获取后端订单的信息。

我们还需要一些严肃的日志记录,并能够跟踪此过程中的所有步骤。 在我们这边还有一个带有表单的web应用程序,可以对文档进行一些手动输入并检索有关订单的信息。

现在我们正在寻找关于如何实现这样一个系统的最佳解决方案:使用“框架”计划任务:spring.net? nservicebus? Windows基金会? Windows服务?

3 个答案:

答案 0 :(得分:2)

您正在描述架构。

您的问题包含对软件架构的良好描述。这是一个很好的概述,但实际的实现需要更多的细节,这是无法在线讨论的。例如,吞吐量和延迟对于确定适当的技术非常重要。因此,你不会在这里得到准确的答案。

寻找现有技能。

我认为开发团队已经排好了。你有没有问过他们的经历?他们可能对使用什么技术有自己的看法。可能它不是最好的解决方案,但它是现有团队的最佳解决方案。

概念验证。

首先创建一个最小解决方案并测试它是否符合您的要求。如您所述,从服务器上的一组不可修改的文档开始。在继续使用更多功能之前,将其发布为高效系统。如果能够进行未来的扩展,你会感觉很好。你不能完全不了解接下来的步骤,但更容易调整方式,而不是在开始时计划每一个细节。

松散耦合。

为了使调整更容易,请尽可能保持组件松散耦合。 例如,将有一个文档组件,一个Excel处理组件,... 如果系统不适合,可以更容易地更改系统的各个部分 要求了。

<强> ...

这可能不是你想要的答案,但如果项目管理很容易,那么每个人都会这样做。另一个暗示:也许有一天你会发现webservices不是最好的解决方案,你需要一个异步消息系统。因此,从小做起并快速调整。

答案 1 :(得分:1)

您的要求的某些组件需要计时器

  

我们不能要求印刷厂给我们订单的更新,所以   我们需要从印刷办公室本身提取这些信息   通过在他们的网站上调用webservices将这些信息提供给我们的客户   侧。

你还提到你需要一些用户界面

  

我们的内容管理员也应该能够看到订单,跟踪   订单,获取我们后端订单的信息。

就像@Chris提到的那样,当你的问题如此之高时,没有最好的解决方案。

让每个人都在同一页面

首先,您应该至少可视化您的问题和建议的解决方案,最低限度的模拟或屏幕流程(不需要很好和完整)。至少,这些模型可以用作基线,甚至是签字的一部分。

至于开发“框架”,有许多选项可供选择,你可以使用一些ORM tools加速开发

快速&amp;易开发:

实体框架6 - 由微软自己开发,拥有与数据库和数据库的流畅互动。代码优先方法,它承诺为开发人员提供最小的数据库交互。 问题是,它与其他人相比表现不佳

有许多替代品,如Nhibernate,nHydrate或微型ORMS,如活跃记录和dapper.net (by stackoverflow guys)

确定您的时间表

您需要多长时间才能完成项目?您想要包括http://en.wikipedia.org/wiki/Dependency_injection等架构模式还是质量保证流程单元测试和持续集成?是否值得预算?你有足够的时间吗?

维护

你打算维护这个应用程序吗?尝试在大便击中风扇之前进行适当的日志记录,异常处理并让每个人都诅咒。

您的大部分问题都描述了您的“待办事项”列表,但是您的“问题”中还有许多其他省略的关键描述,您使用的标记也具有误导性。

所以我对“为客户提供网络服务实施应用程序的最佳方式”的答案是:

使用.net MVC5,它随WebAPI 2一起提供,它可以轻松地帮助您创建Web服务,而使用MVC,责任隔离是设计的一部分。如果您了解HTML,则UI生成很简单。

快速和肮脏与缓慢和干净是你的选择:)

答案 2 :(得分:0)

虽然这个问题的答案有很大的可能性,但框架可以是明确的。您应该使用 Spring.net框架和WCF服务支持。

Spring.NET将为您提供的好处如下:

  • 控制倒置(IoP)
  • 面向方面编程(AOP)
  • 使持久性,事务,Web UI,服务等更容易实现的可靠企业库。

它将指导构建可理解可测试可维护 Web服务,方法是从演示文稿和域对象中移出几乎所有基础结构代码;这意味着您可以轻松可靠地更改代码。它不突兀;为您提供所需的一切自由。

我认为最大的原因是你可以应用于设计,实施和测试的严谨性。你编写的代码远比你自己编写的代码要好得多。我发现使用Spring可以使项目受益匪浅。我的理解和思考也受到了影响。

参考文献: