如何解决为现有的类提供WCF接口
| 我继承了一个应用程序,该应用程序在逻辑上分为4层,但实际上位于两层之间。 4个逻辑层是: asp.net网站 C#.Net程序集中的业务逻辑(从网站引用) 数据访问C#程序集-Codesmith工具生成的类(从业务逻辑引用) sql服务器数据库 网站与业务层交互方式的一个示例是:Booking b = new Booking();
b.property1 = x;
b.property2 = y;
result = b.method();
即。它在biz类的公共属性上设置数据,然后执行一个从属性中依次读取的方法。
不幸的是,有很多属性,其中一些不是基本类型,它们是其他对象,例如,Booking对象包含Vouchers对象的集合
我需要使2-4层可用于新的用户界面(一个完全不同的网站,该网站将提供店内服务亭)。
我想通过WCF公开业务层。我创建了一个IBooking接口,定义了方法签名,并用[OperationContract]等修饰。我遇到的问题是如何管理数据。我意识到我可以定义一个数据合同来匹配Booking对象的各种公共属性,但是然后我需要对现有网站进行重大更改-而不是它设置属性并调用没有参数的方法,而该参数需要填充数据协定的实例,并将其作为参数传递给每个方法调用。
任何人都可以建议最好的方法来解决这个问题。我可以对现有网站进行更改,但我希望将这些更改降至最低。
非常感谢,
抢。
解决方法
我建议实现此目的的最简单方法是围绕现有的业务逻辑创建WCF包装,而无需更改当前网站。无需对现有内容进行任何(重大)代码更改即可完成此操作。如果您认为这样的话,“缺点”是您现有的网站将不会使用WCF服务。
您已经为该服务创建了合同。如果尚未创建,请为操作参数创建消息合同。然后,您可以通过使用服务合同和消息合同来创建\'new \'网站。
服务与OO不同,因为您通常不设置属性然后调用无参数方法-而是调用一个操作并同时包含任何相关的必需数据。您的服务实现-实现IBooking合同的类-将完成以下工作:
实例化现有课程
填充那些对象
调用无参数方法,以及
返回结果。
例如
// contract
[OperationContract]
MyResponseMessage DoMethod(MyResultRequest requestData);
// and the implementing class (the \'service\')
public MyResponseMessage DoMethod(MyResultRequest requestData)
{
MyResponseMessage responseData = new MyResponseMessage();
Booking b = new Booking();
b.property1 = requestData.X;
b.property2 = requestData.y;
responseData = b.method();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。