我刚接触WCF并正在学习MVP设计模式。我有一个测试项目,其中包含一个正常运行的WCF服务。我可以使用WCF测试客户端进行测试,并且一切正常。
我需要帮助,了解如何从我的Presenter层调用WCF服务,然后让Presenter将数据传回View(winforms)。我有一个Windows窗体,其中包含两个名为txtProductID和txtDescription的文本框。我还有一个名为btnGetProductData的按钮。我希望实现以下功能:
- 我将在txtProductID字段中输入产品ID。
- 我将单击btnGetProductData按钮,Presenter应该从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;
}
}
}