Windows 客户端和 Web 客户端 - 相同的业务层和数据层

Posted

技术标签:

【中文标题】Windows 客户端和 Web 客户端 - 相同的业务层和数据层【英文标题】:Windows client and Web client - same business tier and data tier 【发布时间】:2014-03-02 05:58:06 【问题描述】:

我需要为我的公司编写一个 .NET 产品,它的前端或 UI 将不同 - win 表单、Web 和移动,但业务逻辑和数据库将是相同的。

任何人都可以分享或建议您用于实现此目的的架构吗?我也在考虑以下内容。

    编写业务层和 WCF 并将它们公开为服务。 我可以使用 WCF 数据服务吗? 我应该使用 WCF 中的 JSON 来返回大量数据吗? 实体框架在这里也有帮助吗?

谢谢

【问题讨论】:

【参考方案1】:

您建议的架构与我一直使用的架构非常相似。您可以替换任意数量的 Web 服务/RESTful/WCF 类型的通信层。混合搭配,全部使用,找到你最喜欢的一款。这些都很好。

Web 服务的历史最长。他们将拥有更多长期运行系统的实例。 Web 服务周围还有一个称为 SOAP 的传输层。如果您的客户端没有内置对 SOAP 的支持,它可能会增加您的客户端与您的服务的通信的复杂性。

WCF 是 Web 服务的更新版本。我对他们做的不多。我确实知道某些客户端框架很难与 WCF 服务进行通信。那是我的经历。您的里程可能会有所不同。

我通过 MVC 中包含的 Web API 使用 RESTful。这是迄今为止我用来与客户端应用程序交换数据的最简单的方法。对于我的应用程序,我使用 JSON 作为数据传输层。我可以同样轻松地使用 XML。 MVC 都内置了。

几乎所有浏览器框架领域的主要参与者都支持使用 RESTful 服务。我当前的应用程序在 .NET 中使用了 AngularJS(一个 Google 框架)和 MVC 的组合。我还可以替换 KnockOut 或其他十几个客户端框架中的任何一个。或者自己写。

我还使用实体框架 (EF) 来促进 SQL Server 中数据存储的 CRUD 方面。我可以很容易地指向 Oracle 或其他一些数据库。 EF 适用于任何具有 ADO.NET 或 ODBC 驱动程序的东西。当 EF 不足以满足我的需求时,我可以使用 EF DbContext 通过LINQ 与数据库通信。而如果LINQ不能切(这种情况不常发生),我也可以通过DbContext执行SQL查询、存储过程等。

【讨论】:

嗨亚当,感谢您的回复。当您提到 mvc 时,您是否也考虑过 winforms ?您是否建议使用数据库、EF、wcf,然后分支到 winforms 和 asp.net/mvc ? 它们中的每一个都可以完全独立于另一个。您可以将 WinForms(我有)与 Web 服务、WebAPI 或 WCF 一起使用。我正在编写的应用程序可以完全用 MVC(Web 端和服务器端)编写,但对我来说使用 MVC 客户端框架更有意义。根据您的评论,您可以了解我的回答要点。我个人不会使用 WCF,因为从客户端使用它要困难得多。我会使用 RESTful,因为一切都可以轻松地与之对话。

以上是关于Windows 客户端和 Web 客户端 - 相同的业务层和数据层的主要内容,如果未能解决你的问题,请参考以下文章

除非客户端和服务器使用相同的 Windows 身份,否则带有 sspi 的 WCF Net.tcp 会失败

使用 Web 服务为 Windows 窗体客户端运行 SQL 查询

Windows.Web.Http.HttpClient.GetStringAsync 总是返回相同的结果

由客户端不视为相同类型的 Web 服务引发的自定义异常(使用共享程序集)

java实现FTP文件传输,linux之间,windows之间,以及windows和linux之间传输,实现代码是不是相同?

如何将 Windows 身份验证凭据从客户端传递到 Web API 服务