首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF设计方法

WCF设计方法
EN

Stack Overflow用户
提问于 2010-09-08 19:05:32
回答 4查看 299关注 0票数 1

在我的解决方案中,我有一个Web应用程序项目和一个包含所有业务逻辑的类库项目,在我使用Entity Framework时,它还充当数据访问层。这意味着我的edmx在这一层本身。

我在这个类库项目中有大约34个类,每个类中平均有6个公共方法。到目前为止,这些类都是从web应用程序直接调用的。没问题。现在我想介绍UI和业务逻辑层之间的WCF层。

这意味着我必须为我的所有方法编写包装器方法,并在WCF服务中公开它们。这是否意味着34 *6= 204个方法(大约)将作为操作契约出现在我的服务层中?根据OO,我认为这是一个太大的类,所以感觉是错误的。

我知道有通用服务设计模式,但是我还遗漏了什么吗?请给我建议。

EN

回答 4

Stack Overflow用户

发布于 2010-09-08 19:14:11

井,

我们有一个类似的应用程序,但类的数量更多。这里您担心的是,您不愿意向业务逻辑服务器的核心类提供序列化(这是通过WCF传递对象所需的)。

假设您有一个典型的三层应用程序,其中业务逻辑服务器和客户端访问相同的数据库。你需要做的很简单: 1)确保你所有的对象都有一个唯一的标识(这可以是一个字符串或Guid),2)在所有的WCF调用中传递对象ID。这意味着您不会在WCF端公开任何类。

这可能会更安全,因为你有一个web应用程序。

票数 0
EN

Stack Overflow用户

发布于 2010-09-08 19:17:44

您可以尝试RIA服务

http://www.silverlight.net/getstarted/riaservices/

我使用的是这个。

  1. 创建

服务

2.1。将SVC服务指向您的实现,如下所示:

代码语言:javascript
运行
复制
<%@ ServiceHost Language="C#" Debug="true" Service="BusinessLayer.Service" %>

BusinessLayer.Service是class项目中的一个类。(需要在服务中引用)

2.2。将服务行为指向契约:

代码语言:javascript
运行
复制
<service behaviorConfiguration="ServiceBehavior" name="BusinessLayer.Service">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" contract="BusinessLayer.IService">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
      </service>

编辑名称(BusinessLayer.Service)和合同(Businesslayer.IService)

  1. 创建契约接口BusinessLayer.IService (在您的类项目中):

namespace BusinessLayer { ServiceContract公共接口IService { OperationContract void DoWork();}}

  • 修改使用该接口的现有实现(以下是您的现有代码):

命名空间服务{公共类服务:IService{ public void DoWork() { }

票数 0
EN

Stack Overflow用户

发布于 2010-09-08 19:19:39

为什么要将整个业务逻辑层包装在WCF层中?在开始使用这种新方法之前,我会非常仔细地研究您的原因。您是否有根本无法使用的物理原因,例如需要在DMZ之外访问数据库的业务逻辑?如果是这样,那好吧。但如果不是这样,我就会三思而后行。

话虽如此,如果您别无选择,我将避免使用包装您的UI所需的所有公共方法的整体WCF类。首先,我将在web应用程序端引入一个接口,以便您可以依赖于UI中的抽象,而不是具体的实现。此外,我还会考虑使用WCF REST服务。您可以使用ServiceRoute来避免引入任何*.svc文件。然后,您可以使用WebGet/WebInvoke属性来修饰要公开的方法。这可能会节省大量的编码工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3667027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档