由于新项目准备使用一些“新技术”,研究了几天.net,觉得使用wcf+linq还不错。有些基础问题前来询问,望大家帮忙。
1、关于wcf
客户端进行了模块化设计,比如说每一个模块都封装成了单独的dll。于此同时模块需要访问数据时都是通过wcf调用业务组件方式。而客户端各个模块又是相对独立的,如果都调用同一个wcf,就会造成
wcf形成一个巨大的接口,职责不清。
我目前的想法是:将wcf划分成多个服务,通过对外公布不同的服务。客户端dll通过独立引用相关的wcf,从而实现与业务中间层的呼应,这样wcf相对就独立,职责清楚。
形成了:功能模块1-》wcf服务1-》业务逻辑1 这样一个线性的开发模式。
而其中wcf如果采用独立进程作为宿主,如何才能实现不同的服务呢?是否有更好的设计方法?
2、关于Linq
由于软件功能不多,最大的数据表数据量也不过200万,采用sql server数据库,暂时不考虑采用存储过程。
使用Linq可以很简单的实现ORM,而且代码生成也非常简单,但是几天学习下来对Linq即清楚又模糊!
我目前想法是将所有表生成在一个dbml中,这样如果有数据表修改只需要修改一处就可以了。而且数据表也不算多,20个左右。但就是说如果放在一起就会造成一个大的功能类,维护不容易。也不能很
好的加入处理逻辑,我见Linq里面是可以partial到不同的实现单元中实现特殊处理的。
所以比较模糊,如何设计dbml呢?将所有的表都放于一起?有没有好的设计方法?表都在一起会不会有性能影响?
Linq的性能如何?是否有必要与其他的框架结合使用?能否胜任复杂的业务结构?
关注。
Hi,一起讨论一下你的问题:
1.你现在想法可以,将wcf根据功能,划分成多个服务,每个服务包含特定的操作。
然后公布不同的WCF服务。
2.功能模块1-》wcf服务1-》业务逻辑1。这样的架构可以。WCF其实可以对数据
访问层方法进行包装,也可以包装业务逻辑层。如果你的服务需要第三方系统访问,可以包装业务逻辑层方法。
3.WCF可以再一个宿主内托管多个服务。配置一下就可以了,每个服务你公布不同的终结点即可。
可以暴露不同协议Metadata的终结点。单独使用配置文件就可以完成。只是需要重复不同的Service配置节点。
4.托管宿主,如果是企业应用,一般IIS应用很常见,主要是部署简单,和Web Service类似,但是IIS6只能使用http相关的绑定协议,IIS7里可以使用netTcpBinding.如果是自定义托管宿主的话,可以使用Windows Service来托管,主要是基于稳定的服务目标的考虑。Windows 服务宿主部署相对复杂。但是这个是企业托管WCF服务的首选。Winform 和Console程序适合做学习使用。
5.Linq我不熟悉,关于ORM的性能问题没做过深入学习。所以你的问题我不能随便回答。关于WCF的问题可以一起讨论。
以后又问题,欢迎到MSDN WCF中文技术论坛或者我的博客来交流。 希望我的回答对你的有所帮助。