对于我们的一位客户,我们必须建立一个应用程序来在印刷办公室订购文件。我们是客户和印刷办公室之间的聚会。
我们从一组可在我们自己的服务器上获得的文档开始。我们将使用将由客户提供的excel更新这些文档的信息。一切都将存储在我们的数据库中。 客户端可以更新文档或将其标记为无效,这将通过在我们的末端调用webservices来完成。
客户还会向我们发送客户订单。我们将更新订单信息,然后将包含该信息的文档发送到打印办公室。印刷办公室有自己的网络服务。我们不能要求印刷办公室向我们提供订单的更新,因此我们需要从印刷办公室本身提取这些信息,并通过呼叫他们自己的网络服务将这些信息提供给我们的客户。
文档将放在我们的服务器上,我们需要处理excel以将这些文档的信息放入数据库中。准备好后,内容管理员可以查看它,然后为每个文档执行手动更新。这通过将每个文档的数据输入到Web应用程序中的表单中。
我们的内容管理员还应该能够查看订单,跟踪订单,获取后端订单的信息。
我们还需要一些严肃的日志记录,并能够跟踪此过程中的所有步骤。 在我们这边还有一个带有表单的web应用程序,可以对文档进行一些手动输入并检索有关订单的信息。
现在我们正在寻找关于如何实现这样一个系统的最佳解决方案:使用“框架”计划任务:spring.net? nservicebus? Windows基金会? Windows服务?
答案 0 :(得分:2)
您正在描述架构。
您的问题包含对软件架构的良好描述。这是一个很好的概述,但实际的实现需要更多的细节,这是无法在线讨论的。例如,吞吐量和延迟对于确定适当的技术非常重要。因此,你不会在这里得到准确的答案。
寻找现有技能。
我认为开发团队已经排好了。你有没有问过他们的经历?他们可能对使用什么技术有自己的看法。可能它不是最好的解决方案,但它是现有团队的最佳解决方案。
概念验证。
首先创建一个最小解决方案并测试它是否符合您的要求。如您所述,从服务器上的一组不可修改的文档开始。在继续使用更多功能之前,将其发布为高效系统。如果能够进行未来的扩展,你会感觉很好。你不能完全不了解接下来的步骤,但更容易调整方式,而不是在开始时计划每一个细节。
松散耦合。
为了使调整更容易,请尽可能保持组件松散耦合。 例如,将有一个文档组件,一个Excel处理组件,... 如果系统不适合,可以更容易地更改系统的各个部分 要求了。
<强> ... 强>
这可能不是你想要的答案,但如果项目管理很容易,那么每个人都会这样做。另一个暗示:也许有一天你会发现webservices不是最好的解决方案,你需要一个异步消息系统。因此,从小做起并快速调整。
答案 1 :(得分:1)
您的要求的某些组件需要计时器
我们不能要求印刷厂给我们订单的更新,所以 我们需要从印刷办公室本身提取这些信息 通过在他们的网站上调用webservices将这些信息提供给我们的客户 侧。
你还提到你需要一些用户界面
我们的内容管理员也应该能够看到订单,跟踪 订单,获取我们后端订单的信息。
就像@Chris提到的那样,当你的问题如此之高时,没有最好的解决方案。
首先,您应该至少可视化您的问题和建议的解决方案,最低限度的模拟或屏幕流程(不需要很好和完整)。至少,这些模型可以用作基线,甚至是签字的一部分。
至于开发“框架”,有许多选项可供选择,你可以使用一些ORM tools加速开发
实体框架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将为您提供的好处如下:
它将指导构建可理解,可测试和可维护 Web服务,方法是从演示文稿和域对象中移出几乎所有基础结构代码;这意味着您可以轻松可靠地更改代码。它不突兀;为您提供所需的一切自由。
我认为最大的原因是你可以应用于设计,实施和测试的严谨性。你编写的代码远比你自己编写的代码要好得多。我发现使用Spring可以使项目受益匪浅。我的理解和思考也受到了影响。
参考文献: