C# 从windows mobile上的Compact framework调用wcf需要多长时间?

C# 从windows mobile上的Compact framework调用wcf需要多长时间?,c#,wcf,compact-framework,C#,Wcf,Compact Framework,我使用int参数调用一个wcf服务方法,它返回一个order对象,如下所示。返回对象大约需要1.5秒,这是正常的还是对WCF来说太慢? 该对象具有1个Order、2个OrderLines和1个OrderLineModifier [DataContract] [KnownType(typeof(OrderLine))] public class OrderDTO { public OrderDTO() { this.OrderLines= new OrderLi

我使用int参数调用一个wcf服务方法,它返回一个order对象,如下所示。返回对象大约需要1.5秒,这是正常的还是对WCF来说太慢? 该对象具有1个Order、2个OrderLines和1个OrderLineModifier

[DataContract]
[KnownType(typeof(OrderLine))]
public class OrderDTO
{


    public OrderDTO()
    {
        this.OrderLines= new OrderLineDtos();
    }

    [DataMember]
    public ObjectState State { get; set; }

    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public int? TableId { get; set; }

    [DataMember]
    public byte OrderStateId { get; set; }

    [DataMember]
    public byte OrderTypeId { get; set; }

    [DataMember]
    public string OrderCounter { get; set; }

    [DataMember]
    public DateTime OrderDateTime { get; set; }

    [DataMember]
    public DateTime LastStateDateTime { get; set; }

    [DataMember]
    public int? SalesPersonId { get; set; }

    [DataMember]
    public int MachineId { get; set; }

    [DataMember]
    public string Comments { get; set; }

    [DataMember]
    public decimal Value { get; set; }

    [DataMember]
    public decimal VatValue { get; set; }

    [DataMember]
    public string OrderIdentifier { get; set; }

    [DataMember]
    public int? CustomerId { get; set; }

    [DataMember]
    public byte[] Timestamp { get; set; }

    [DataMember]
    public bool IsPrinted { get; set; }

    [DataMember]
    public int? WorkShiftId { get; set; }

    [DataMember]
    public decimal TotalValue { get; set; }

    [DataMember]
    public int? EmployeeId { get; set; }

    [DataMember]
    public OrderLineDtos OrderLines { get; set; }

}

[CollectionDataContract]
public class OrderLineDtos : List<OrderLineDTO>
{

}
[DataContract]
[KnownType(typeof(OrderLineModifier))]
public class OrderLineDTO
{

    public OrderLineDTO()
    {
        this.OrderLineModifiers = new List<OrderLineModifierDTO>();
    }

    [DataMember]
    public ObjectState State { get; set; }

    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public int OrderId { get; set; }

    [DataMember]
    public byte OrderLineStateId { get; set; }

    [DataMember]
    public System.DateTime LastStateDateTime { get; set; }

    [DataMember]
    public int ProductId { get; set; }

    [DataMember]
    public string ProductCode { get; set; }

    [DataMember]
    public string ProductName { get; set; }

    [DataMember]
    public decimal Quantity { get; set; }

    [DataMember]
    public decimal UnitPrice { get; set; }

    [DataMember]
    public decimal UnitPriceWithVatValue { get; set; }

            [DataMember]
    public decimal VatRate { get; set; }

    [DataMember]
    public decimal DiscountValue { get; set; }

    [DataMember]
    public decimal VatValue { get; set; }

    [DataMember]
    public decimal DiscountPercent { get; set; }

    [DataMember]
    public decimal LineTotal { get; set; }

    [DataMember]
    public string Comments { get; set; }

    [DataMember]
    public byte[] Timestamp { get; set; }

    [DataMember]
    public bool IsTreated { get; set; }

    [DataMember]
    public short? VatRateId { get; set; }

    [DataMember]
    public List<OrderLineModifierDTO> OrderLineModifiers { get; set; }

}



[DataContract]
public partial class OrderLineModifierDTO
{

    [DataMember]
    public ObjectState State { get; set; }

    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public int OrderLineId { get; set; }

    [DataMember]
    public int MenuItemOptionId { get; set; }

    [DataMember]
    public decimal Quantity { get; set; }

    [DataMember]
    public decimal UnitPrice { get; set; }

    [DataMember]
    public int MesureUnitId { get; set; }

    [DataMember]
    public string Comments { get; set; }

} 
[DataContract]
[KnownType(类型(订单行))]
公共类OrderDTO
{
公共秩序
{
this.OrderLines=new OrderLineDtos();
}
[数据成员]
公共对象状态{get;set;}
[数据成员]
公共int Id{get;set;}
[数据成员]
公共int?TableId{get;set;}
[数据成员]
公共字节OrderStateId{get;set;}
[数据成员]
公共字节OrderTypeId{get;set;}
[数据成员]
公共字符串OrderCounter{get;set;}
[数据成员]
public DateTime OrderDateTime{get;set;}
[数据成员]
公共日期时间LastStateDateTime{get;set;}
[数据成员]
public int?salersonid{get;set;}
[数据成员]
public int MachineId{get;set;}
[数据成员]
公共字符串注释{get;set;}
[数据成员]
公共十进制值{get;set;}
[数据成员]
公共十进制值{get;set;}
[数据成员]
公共字符串OrderIdentifier{get;set;}
[数据成员]
public int?CustomerId{get;set;}
[数据成员]
公共字节[]时间戳{get;set;}
[数据成员]
已打印公共布尔值{get;set;}
[数据成员]
public int?workshift id{get;set;}
[数据成员]
公共十进制总值{get;set;}
[数据成员]
public int?EmployeeId{get;set;}
[数据成员]
public OrderLineDtos OrderLines{get;set;}
}
[收集数据合同]
公共类OrderLineDtos:列表
{
}
[数据合同]
[KnownType(typeof(OrderLineModifier))]
公共类OrderLineDTO
{
公共命令行dto()
{
this.OrderLineModifiers=新列表();
}
[数据成员]
公共对象状态{get;set;}
[数据成员]
公共int Id{get;set;}
[数据成员]
公共int-OrderId{get;set;}
[数据成员]
公共字节OrderLineStateId{get;set;}
[数据成员]
public System.DateTime LastStateDateTime{get;set;}
[数据成员]
public int ProductId{get;set;}
[数据成员]
公共字符串ProductCode{get;set;}
[数据成员]
公共字符串ProductName{get;set;}
[数据成员]
公共十进制数量{get;set;}
[数据成员]
公共十进制单价{get;set;}
[数据成员]
公共十进制单价WithVatValue{get;set;}
[数据成员]
公共十进制VatRate{get;set;}
[数据成员]
公共十进制折扣值{get;set;}
[数据成员]
公共十进制值{get;set;}
[数据成员]
公共十进制折扣百分比{get;set;}
[数据成员]
公共十进制LineTotal{get;set;}
[数据成员]
公共字符串注释{get;set;}
[数据成员]
公共字节[]时间戳{get;set;}
[数据成员]
已创建公共布尔值{get;set;}
[数据成员]
public short?VatRateId{get;set;}
[数据成员]
公共列表OrderLineModifiers{get;set;}
}
[数据合同]
公共分部类OrderLineModifierTo
{
[数据成员]
公共对象状态{get;set;}
[数据成员]
公共int Id{get;set;}
[数据成员]
public int OrderLineId{get;set;}
[数据成员]
public int MenuItemOptionId{get;set;}
[数据成员]
公共十进制数量{get;set;}
[数据成员]
公共十进制单价{get;set;}
[数据成员]
公共整数度量单位ID{get;set;}
[数据成员]
公共字符串注释{get;set;}
} 

谢谢大家!

1.5秒可能刚好合适(您讨论的可能是移动设备的大数据传输),也可能非常慢。你需要做的是开始缩小速度“问题”,看看它是否是一个问题。计算出传输了多少数据,看看这是否只是传输时间的问题(网络速度慢等)。计算出从桌面应用程序连接(这将使数据传输或客户端处理)的性能是否更高。确定大部分时间是否由服务器占用。如果后者为真,请分析代码以确定是否存在瓶颈

我们无法告诉您这是否是良好的性能,因为我们只有1000个变量中的一个。总的来说,以下几点可以让它的时机变得正常:

  • 大数据传输
  • 处理时间长(需要在服务器上执行大量工作)
  • 客户机处理时间(到达后需要做大量工作)
以下是可能会减慢此服务速度的因素:

  • 慢速数据库
  • 网络延迟或瓶颈
  • 客户端内存问题
  • 未优化的服务器代码
  • 进程中的某个未知延迟(等待其他服务等)

你需要做一个全面的调查,弄清楚1.5秒到底意味着什么。您可能会发现这是一个伟大的时刻,或者您可能会发现您可以用更少的时间来完成它。

1.5秒可能正好(您可能正在讨论到移动设备的大数据传输),或者可能非常慢。你需要做的是开始缩小速度“问题”,看看它是否是一个问题。计算出传输了多少数据,看看这是否只是传输时间的问题(网络速度慢等)。计算出从桌面应用程序连接(这将使数据传输或客户端处理)的性能是否更高。确定大部分时间是否由服务器占用。如果后者为真,请分析代码以确定是否存在瓶颈

我们无法告诉您这是否是良好的性能,因为我们只有1000个变量中的一个。H