关于提高WCF性能的实例方法

9 篇文章 0 订阅

背景:

由于项目需要,我们需要从PS里提取必要的数据并做成一个service。用户直接调用这个service去获得想要的数据。但是由于PS的查询有点慢,在加上我们需要对查询结果进行必要的转化。所以在获得PS上某个库数据的时候时间长达3分钟。对于这个时间,用户是无法接受的。那么经过同事的讨论,我们采用了一个可行性方案,使得这个时间由3分钟降到3秒。


设计思路:

由于PS的每个单元的数据都很多(~100个字段)如果每次对这些字段解析,那么时间就少不了。我们每次只取2个字段,一个是bug ID, 另一个是Rev。这样取所有数据的时间就变的很少了。接下来,我们利用数据库把这些字段存起来。如果当前的Rev和数据库里记录的不一致,先记录下来这个bug ID。最后统一把所有不一致的bug ID里的数据解析出来并存到数据库里。如果当前的Rev和数据库里记录的一致,从数据库把这条记录取出。这样就大大减少了解析PS数据的时间花费。效率自然就上来了。


另外一个问题,当前的字段是和PS保持一致的。如果用户需要转型怎么办?例如,我们取回来的是DateTime,用户需要的是String;在或者用户需要的String,真实的是int。等等。第一种解决办法是,直接在service里统一“转”型。那么带来的问题是: 1.时间问题。 2 如果有些用户就需要那些原始的类型怎么办。那么我的解决办法是,提供一个静态的方法,由用户选择性的去“转型”。 

public static String ToTestEndpointType(this String value)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WCF是一种用于创建分布式系统的技术,可与vb.net一起使用。 WCF中可以使用多种协议进行网络通信,例如HTTP,TCP和MSMQ等。下面是一个vb.net的WCF网络通信实例: 首先,要创建一个WCF服务,您可以使用Visual Studio中的模板。在创建服务时,可以选择使用什么类型的绑定和协议。例如,默认情况下会使用基本HTTP绑定和HTTP协议。 在服务中定义操作合同,这些合同将服务公开为web服务,可以使用它们来处理远程请求。 在客户端应用程序中,您需要首先添加服务引用,可以通过Visual Studio的“添加服务引用”向导来完成。然后,您可以使用该服务的客户端代理来调用远程服务,就像在本地应用程序中一样。 以下是一个简单的WCF服务和客户端应用程序示例: 服务代码: ```vb.net Imports System.ServiceModel <ServiceContract()> Public Interface ICalculator <OperationContract()> Function Add(ByVal x As Double, ByVal y As Double) As Double End Interface Public Class Calculator Implements ICalculator Public Function Add(ByVal x As Double, ByVal y As Double) As Double Implements ICalculator.Add Return x + y End Function End Class Sub Main() Dim host As New ServiceHost(GetType(Calculator)) host.Open() Console.WriteLine("Service started. Press any key to stop.") Console.ReadLine() host.Close() End Sub ``` 客户端代码: ```vb.net Module Module1 Sub Main() Dim client As New CalculatorClient() Console.WriteLine("2 + 3 = " & client.Add(2, 3)) client.Close() Console.ReadLine() End Sub End Module <ServiceContract()> Public Interface ICalculator <OperationContract()> Function Add(ByVal x As Double, ByVal y As Double) As Double End Interface Public Class CalculatorClient Inherits ClientBase(Of ICalculator) Implements ICalculator Public Function Add(ByVal x As Double, ByVal y As Double) As Double Implements ICalculator.Add Return Channel.Add(x, y) End Function End Class ``` 在这个例子中,我定义了一个名为“Calculator”的简单计算器服务,它具有一个Add操作。在客户端应用程序中,我使用了一个名为“CalculatorClient”的客户端代理来调用Add操作,该代理使用了WCF中的默认HTTP绑定和HTTP协议来与服务通信。 这就是一个简单的WCF网络通信示例,您可以开始使用WCF来创建自己的分布式应用程序,用于实现您的网络通信需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值