关于基于WCF的项目结构问题?

tabao5672 2017-09-07 03:50:40
请问下,一般基于WCF的项目,服务是配置在一个端点上还是配置多个端点啊?
就比如说对数据库表的所有操作,是将所有操作服务都打包在一个服务端点上么,这样会不会太多?
如果配置多个端点的话,客户端不得一一进行引用?
...全文
324 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mk_lucifer 2017-09-08
  • 打赏
  • 举报
回复
没有区别,一个就行。即使你分开,也并带来不了啥么好处,只会增添编程麻烦。 当然你多个明显能划分开的服务可以多端点,比如客户聊天和看视频这样的区分,没必要在一起。 按服务本身的分类来分可以,因为发现操作太多这种原因来分,就没有道理了。
exception92 2017-09-08
  • 打赏
  • 举报
回复
引用 2 楼 tabao5672 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 一个吧,毕竟宿主服务的时候 最好实例化一个servicehost,不必引用那么多。
如果一个的话,光是数据库操作服务就得100多个,放一起会不会影响性能?[/quote] 怎么会100多个,你不需要封装么。 遇到过的最多二十多个。
tabao5672 2017-09-07
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
一个吧,毕竟宿主服务的时候 最好实例化一个servicehost,不必引用那么多。
如果一个的话,光是数据库操作服务就得100多个,放一起会不会影响性能?
exception92 2017-09-07
  • 打赏
  • 举报
回复
一个吧,毕竟宿主服务的时候 最好实例化一个servicehost,不必引用那么多。
第一部分 .NET框架(0.5天) 1. 了解.NET之前诞生前的世界 2. Microsoft .NET 框架结构 3. Microsoft .NET 框架结构 4. .NET Framework 概述 5. .Net Framework 2.0/ 3.0/3.5 6. 公共语言运行库 7. 公共语言运行库的优点 8. NET Framework 类库概述 9. NET Framework 类库结构 10. NET Framework 类库功能 11. 公共语言运行时 CLR 12. CLR 和 MSIL(Microsoft 中间语言) 13. 应用程序执行过程 14. 了解MSIL 15. MSIL+元数据 16. 多语言支持和语言互操作的基础 -CLS 和 CTS公共语言规范 17. 应用程序域 18. 程序集的一些基本概念 19. C# 语言的优点 20. 认识我们的开发利器visual studio 2008 Team 第二部分 WindowsForm(2天) (1) C#基本编程知识什么是关键字 (2) C#的合法语句 (3) 变量的声明变量声明格式 (4) 变量类型数值类型:int;float等 (5) 快速了解快速了解对话框控件应用 (6) 快速了解第三方控件的应用 (7) 委托和事件 (8) 定义委托 (9) 实例化委托 (10) 调用委托 (11) 异步委托 (12) 异步委托的定义 (13) 异步委托的四种调用方法 (14) 什么是事件 (15) 定义事件 (16) 订阅事件 (17) 触发事件 (18) 引发事件 (19) 深入了解事件Event (20) 观察者模式 (21) Obseve模式结构 (22) Observer 示例程序演示 (23) Observer 与事件 (24) 自定义控件和用户控件C#控件 (25) 事件驱动开发使用 (26) GDI+图形编程 第三部分 Ado.NET(2天) (1) ADO.NET结构 (2) ADO.NET工作原理 (3) 数据提供者(Data Provider) (4) Data Provider 优点 (5) 数据集(DataSet) (6) DataSet结构 (7) DataSet优点 (8) ADO.NET 中对象模型 (9) 数据库相关控件的使用DataGridView控件 (10) DataGridView-显示数据基本方法 (11) DataGridView使用动态编程显示数据 (12) DataGridView保存修改后的数据关键知识 (13) 事务处理 (14) Sql 基本语法练习 (15) 什么是存储过程 (16) SQL注入攻击介绍 (17) 遭受SQL注入式攻击的基本原理 (18) 使用参数化查询提高数据安全 (19) 数据安全总结 (20) IDE环境整合使用EXPRESS 数据库开发应用 第四部分 WPF开发技术(1.5天) (1) 什么是WPF (2) WPF应用程序 (3) 建立第一WPF应用程序项目 (4) WPF的重要技术XAML (5) XAML语法 (6) 学习Expression Blend 专业的WPF设计工具 (7) 使用EB WPF客户端实战 (8) 刨析XAML (9) XAML语法 (10) 认识WPF中的主要控件 (11) 动画什么 (12) 动画中的3个重要概念 (13) 使用时间线和故事板 (14) 动画使用触发器 (15) 数据绑定Binding (16) 动画开发实战 第五部分 WCF开发技术(1.5天) (1) 从SOA说起S-Server (2) 什么是WCF Windows Communication Foundation (3) WCF-各种分布式技术统一江湖 (4) 实例了解什么是WCF (5) WCF通信模型 (6) 协定,契约,合同 (7) Contract分类协定分类 (8) 4个最主要组件WCF (9) Demo-天气预报服务功能设计 (10) WCF中的基本概念-Endpoint 终节点 (11) WCF中的基本概念-ABC (12) WCF中的基本概念-Endpoint与ABC包含关系 (13) 特殊的Endpoint-Mex节点回忆SOA的特点 (14) Binding绑定的作用 (15) Binding绑定协议的选择 (16) Address地址的作用 (17) 认识主要的协议 (18) WCF通信模型 (19) 托管与宿主托管 (20) 消息模式 (21) 消息模式-单向模式 (22) 请求/答复请求/答复模式 (23) 双工模式 (24) WCF Behavior是什么 (25) 主要的服务行为实例管理 (26) WCF 安全控制 第六部分 WPF+WCF项目实战(1.5天) (1) 项目开发-聊天室基于WPF+WCF的聊天室 (2) 需求分析和功能设计 (3) 聊天室系统详细设计 (4) 聊天室契约设计 (5) 聊天室实现: 宿主服务器 (6) 聊天室实现客户端 (7) WPF实现客户端开发
培训课件内容: 第一部分 .NET框架(0.5天) 第二部分 Winform编程(2天) 第三部分 Ado.NET(2天) 第四部分 WPF技术(1.5天) 第五部分 WCF开发技术(1.5天) 第六部分-项目实战(1.5天) 详细内容: 第一部分 .NET框架(0.5天) 1. 了解.NET之前诞生前的世界 2. Microsoft .NET 框架结构 3. Microsoft .NET 框架结构 4. .NET Framework 概述 5. .Net Framework 2.0/ 3.0/3.5 6. 公共语言运行库 7. 公共语言运行库的优点 8. NET Framework 类库概述 9. NET Framework 类库结构 10. NET Framework 类库功能 11. 公共语言运行时 CLR 12. CLR 和 MSIL(Microsoft 中间语言) 13. 应用程序执行过程 14. 了解MSIL 15. MSIL+元数据 16. 多语言支持和语言互操作的基础 -CLS 和 CTS公共语言规范 17. 应用程序域 18. 程序集的一些基本概念 19. C# 语言的优点 20. 认识我们的开发利器visual studio 2008 Team 第二部分 WindowsForm(2天) (1) C#基本编程知识什么是关键字 (2) C#的合法语句 (3) 变量的声明变量声明格式 (4) 变量类型数值类型:int;float等 (5) 快速了解快速了解对话框控件应用 (6) 快速了解第三方控件的应用 (7) 委托和事件 (8) 定义委托 (9) 实例化委托 (10) 调用委托 (11) 异步委托 (12) 异步委托的定义 (13) 异步委托的四种调用方法 (14) 什么是事件 (15) 定义事件 (16) 订阅事件 (17) 触发事件 (18) 引发事件 (19) 深入了解事件Event (20) 观察者模式 (21) Obseve模式结构 (22) Observer 示例程序演示 (23) Observer 与事件 (24) 自定义控件和用户控件C#控件 (25) 事件驱动开发使用 (26) GDI+图形编程 第三部分 Ado.NET(2天) (1) ADO.NET结构 (2) ADO.NET工作原理 (3) 数据提供者(Data Provider) (4) Data Provider 优点 (5) 数据集(DataSet) (6) DataSet结构 (7) DataSet优点 (8) ADO.NET 中对象模型 (9) 数据库相关控件的使用DataGridView控件 (10) DataGridView-显示数据基本方法 (11) DataGridView使用动态编程显示数据 (12) DataGridView保存修改后的数据关键知识 (13) 事务处理 (14) Sql 基本语法练习 (15) 什么是存储过程 (16) SQL注入攻击介绍 (17) 遭受SQL注入式攻击的基本原理 (18) 使用参数化查询提高数据安全 (19) 数据安全总结 (20) IDE环境整合使用EXPRESS 数据库开发应用 第四部分 WPF开发技术(1.5天) (1) 什么是WPF (2) WPF应用程序 (3) 建立第一WPF应用程序项目 (4) WPF的重要技术XAML (5) XAML语法 (6) 学习Expression Blend 专业的WPF设计工具 (7) 使用EB WPF客户端实战 (8) 刨析XAML (9) XAML语法 (10) 认识WPF中的主要控件 (11) 动画什么 (12) 动画中的3个重要概念 (13) 使用时间线和故事板 (14) 动画使用触发器 (15) 数据绑定Binding (16) 动画开发实战 第五部分 WCF开发技术(1.5天) (1) 从SOA说起S-Server (2) 什么是WCF Windows Communication Foundation (3) WCF-各种分布式技术统一江湖 (4) 实例了解什么是WCF (5) WCF通信模型 (6) 协定,契约,合同 (7) Contract分类协定分类 (8) 4个最主要组件WCF (9) Demo-天气预报服务功能设计 (10) WCF中的基本概念-Endpoint 终节点 (11) WCF中的基本概念-ABC (12) WCF中的基本概念-Endpoint与ABC包含关系 (13) 特殊的Endpoint-Mex节点回忆SOA的特点 (14) Binding绑定的作用 (15) Binding绑定协议的选择 (16) Address地址的作用 (17) 认识主要的协议 (18) WCF通信模型 (19) 托管与宿主托管 (20) 消息模式 (21) 消息模式-单向模式 (22) 请求/答复请求/答复模式 (23) 双工模式 (24) WCF Behavior是什么 (25) 主要的服务行为实例管理 (26) WCF 安全控制 第六部分 WPF+WCF项目实战(1.5天) (1) 项目开发-聊天室基于WPF+WCF的聊天室 (2) 需求分析和功能设计 (3) 聊天室系统详细设计 (4) 聊天室契约设计 (5) 聊天室实现: 宿主服务器 (6) 聊天室实现客户端 (7) WPF实现客户端开发
项⽬重构⽅案设计 最近接⼿到⼀个已经成型的项⽬,然后我们的任务就是对它进⾏重构,这个项⽬是⼀个功能很齐全的WPF视频播放器(附带很多其他功 能),在仔细研究了项⽬的背景和架构以后,初步做出了⼀下的重构⽅案: ⽬前现状: 虽然整个系统做得很漂亮,代码也写得不错,但仍有以下不⾜: 1. 架构有待改善。虽然看似MVC架构,却没有遵循MVC的模式,⾥⾯逻辑和UI耦合很⾼,没有清晰的规律。 2. 没有充分⽤到WPF的特性。WPF除了给我们很多炫丽的效果外,还给我们提供了诸如Binding,command等特性,这些特性可以帮我们隔开耦合, 同时减少代码量。 3. 代码和⽂件没有组织。代码、dll、样式⽂件和资源⽂件等没有统⼀的组织,到处都有,这样看起来就会很混乱。 4. 没有建⽴公⽤代码库。没有把公⽤的代码库独⽴出来,很多地⽅都是另外在写,这样既增加了代码量,同时维护和重构也带来了⿇烦。 5. 逻辑处理不应暴露在Client端。项⽬是⼀个C/S架构的系统,没有必要把所有的逻辑都暴露在Client端,应该⽤分布式把Logic放在服务器端,这样 可以更安全同时使客户端变⼩。 6. 没有单元测试。这样⼀个庞⼤的程序,没有单元测试是⾮常危险的,我们不可能做到100%的覆盖率,但是我们可以对主要的逻辑和Function做单 元测试,这样既减少了测试⼈员的⼯作量同时整个系统的安全、稳定和可维护性得到了⼤⼤的提⾼。 7. 性能不够优化。启动项⽬,通过WPF性能⼯具Perforator和Visual Profiler分析得出,程序启动和界⾯操作都导致CPU很⾼,内存也消耗⽐较多。 解决⽅案 1. 1. 针对缺陷1的"架构问题"。做法是采⽤MVP或者MVVM模式,⽬前正在对⽐和考虑。 2. 针对缺陷2的"WPF特性"。做法是充分利⽤Binding,command等特性。 3. 针对缺陷3的"代码和⽂件没有组织"。做法是建⽴⼀些单独的⼯程或者⽂件来分类和组织这些代码,并且充分隔离 耦合。 4. 针对缺陷4的"没有建⽴公⽤代码库"。做法是把⼀些公⽤的代码和常⽤的代码做成单独的Dll,并且有完整的单元测 试,这样才能提⾼效率。 5. 针对缺陷5的"逻辑处理不应暴露在Client端"。做法是⽤WCF做为中间层,把业务逻辑全部进⾏封装,通过WCF提 供统⼀的接⼝供项⽬调⽤。 6. 针对缺陷6的"没有单元测试"。做法是不管⽤MVP还是MVVM,我们起码保证对逻辑组件的代码有充分的单元测试 覆盖,同时对⼀些公⽤的组件也要有单独的单元测试代码。 7. 针对缺陷7的"性能不够优化"。这个我会单独做⼀个性能优化列表出来,针对耗资源的操作和其他有损害性能的操 作,我们应该避免。 8. 那么我们就可以结合实际情况搭建如下的结构 9. 10. 因为使⽤了MVVM模式,所以UI结构图就做如下调整 11. 12. 由于整个项⽬客户部希望我们引⽤第三⽅的组件或者⼯具,所以很多功能都只能通过企业库实现,⽐如AOP和 IOC,log和exception对项⽬特征做了定制化,数据访问通过企业库重写实现局部ORM,对性能要求⽐较⾼的应⽤仍 然实现存储过程。对所有事务操作都转移到数据库,邮件使⽤JOB进⾏发送。⼤型数据和客户要求较⾼的实时操 作,⽤MSMQ和SSB相结合的⽅式。层次依赖关系 UI: 功能模块使⽤时候,都会⾸先通过UI层次Security模块的安全验证(验证是通过Components模块⾥⾯的⾃定义的⽤于页⾯功能以及功能 点验证的控件触发), Security模块会通过服务层获取⽤户⾝份数据,⽤于页⾯验证. 功能模块的实际功能实现,如果需要数据库⽀持,那么依然会通过服务层进⾏数据操作.整个架构基于MVVM模式。 Service:通过WCF做中间服务,使应⽤隔离开来,这样有利于扩展和维护,同事提⾼了整个应⽤程序的伸缩性。 Business Logic: 服务层内部之间的组合关系,主要体现再依赖和调⽤,由上往下调⽤,逐级依赖,最后Service底层边界Data Access模块将调 ⽤Framework中的Data模块,Data模块将调⽤MS.EntLib3中的Data,向数据服务器发送数据操作命令和数据. Framework: 该层次提供许多基础的功能模块(七⼤块),分别提供给UI,Service层⾥⾯的模块直接或者间接的调⽤,同时也可以看到 Framework层次内部各模块之间再运⾏时也有互相依赖调⽤的关系存在.该层次的部分模块会依赖和调⽤Ms.EntLib3中的模块,⼀般是按 照两个层次⾥⾯的模块名称,产⽣关系的. MS.EntLib3: 该层次的各个模块是整个系统框架中最底层的,只会在运⾏时被更⾼层次的模块依赖和调⽤,同时该层次内部各个模块之间也 存在依赖和运⾏时调⽤关系.  

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧