Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF层_C#_Wcf_Architecture - Fatal编程技术网

C# WCF层

C# WCF层,c#,wcf,architecture,C#,Wcf,Architecture,我最近开始使用WCF(是的,我知道我落后了:-)。问题是我必须如何构建它 我习惯于DAL、BL和表示层。我正在用实体框架替换(某种程度上)我的DAL 到目前为止我有这个 DAL(实体框架)--> BL--> 合同(datacontract消息控制服务合同行为等)--> 服务实现--> 客户 问题是在bl和契约之间有一层将bl转换为数据契约(缺少更好的词) 前 DAL.Customer(实体框架)-->BL(规则)-->Converter(仅转换)-->Contracts.Customer 或 D

我最近开始使用WCF(是的,我知道我落后了:-)。问题是我必须如何构建它

我习惯于DAL、BL和表示层。我正在用实体框架替换(某种程度上)我的DAL

到目前为止我有这个

DAL(实体框架)--> BL--> 合同(datacontract消息控制服务合同行为等)--> 服务实现--> 客户

问题是在bl和契约之间有一层将bl转换为数据契约(缺少更好的词)

前 DAL.Customer(实体框架)-->BL(规则)-->Converter(仅转换)-->Contracts.Customer

DAL.Customer(实体框架)-->BL(规则)-->Converter(调用BL并转换实现服务契约的.Converter)-->Contracts.Customer

谢谢

应该有一个很薄的“层”,这仅仅是因为你不需要BL层来理解你的契约,你也不想把你的BL对象作为契约公开给世界其他地方

当然,你可以这样做。您可以开发作为简单数据传输对象的数据协定。这些将只包含数据而不包含任何行为,并将公开您希望世界看到的数据部分。您的BL可以将自身局限于该模型,也可以从中继承以添加特定于BL的特性


或者,只需要一个BL版本的现实和一个“合同”版本的现实,并在它们之间转换。

很多时候,你会看到你的BL和合同类型之间的相似之处。您可以使用一些快捷方式来帮助您在具有出色性能的类型之间进行转换。这些工具可以帮助该层保持“薄”。

谢谢。我真的不想把我的bl暴露给全世界,而且从合同的角度来看,也不需要整个bl。我认为他们之间的转换听起来是一个可以接受的想法。我仍然在考虑让服务实现调用一个层,该层调用bl并转换,然后返回合同版本。该层将实现ServiceContractThank。我会说80%的时间bl和datacontract是相同的。我只想把它分开,这样将来我可以在需要的时候改变它。