[英]WCF - Calling the WCF service from the Presenter Layer
我是 WCF 的新手,我也在学习 MVP 设计模式。 我有一个带有工作 WCF 服务的测试项目。 我可以使用 WCF 测试客户端进行测试,并且工作正常。
我需要有关如何从我的 Presenter 层调用 WCF 服务,然后让 Presenter 将数据传递回视图(winforms)的帮助。 我有一个 Windows 表单,其中包含两个名为 txtProductID 和 txtDescription 的文本框。 我还有一个名为 btnGetProductData 的按钮。 我希望发生以下情况:
以下是 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;
}
}
}
我不确定您在哪里遇到问题,所以我将从头开始。
在 Visual Studio 中,右键单击您的项目并选择“添加服务引用”,然后导航到您的服务的端点。
示例代码:
// Presentation Tier (button event handler)
var proxy = new ServiceReference1.ProductServiceClient();
var prod = proxy.GetProductData("yourProductID");
txtDescription.Text = prod.Description;
txtProductID.Text = prod.ProductID; // same as passed parameter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.