【发布时间】:2011-05-02 16:29:24
【问题描述】:
我是 WCF 的新手,我也在学习 MVP 设计模式。我有一个带有工作 WCF 服务的测试项目。我可以使用 WCF 测试客户端进行测试,并且工作正常。
我需要有关如何从我的 Presenter 层调用 WCF 服务然后让 Presenter 将数据传递回视图 (winforms) 的帮助。我有一个带有两个名为 txtProductID 和 txtDescription 的文本框的 Windows 窗体。我还有一个名为 btnGetProductData 的按钮。我希望发生以下情况:
- 我将在 txtProductID 字段中添加一个产品 ID。
- 我将单击 btnGetProductData 按钮,演示者应从 WCF 服务调用 GetProductData 方法并将产品描述返回到我表单上的 txtProductDescription 字段。
这是来自 WCF 服务库的相关代码:
IProductService.cs
------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace MyWCFServices.ProductService
{
[ServiceContract]
public interface IProductService
{
[OperationContract]
Product GetProductData(string ProductId);
}
[DataContract]
public class Product
{
[DataMember]
public string ProductID { get; set; }
[DataMember]
public string ProductDescription { get; set; }
}
}
ProductService.cs
--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using MyWCFServices.ProductEntities;
using MyWCFServices.ProductBusinessLogic;
namespace MyWCFServices.ProductService
{
public class ProductService : IProductService
{
ProductLogic productLogic = new ProductLogic();
public Product GetProductData(string ProductId)
{
ProductEntity productEntity = productLogic.
GetProductData(ProductId);
Product product = new Product();
TranslateProductEntityToProductContractData(productEntity,
product);
return product;
}
private Product TranslateProductEntityToProductContractData(
ProductEntity productEntity, Product product)
{
product.ProductID = productEntity.ProductID;
product.ProductDescription = productEntity.ProductDescription;
return product;
}
}
}
【问题讨论】:
-
您的服务看起来不错,但您的客户端有什么问题,具体来说? EG:您在创建代理时遇到问题,它不会返回您期望的结果吗?