FMStocks7 , 不错的一个.NET 示例程序
http://www.microsoft.com/downloads/details.aspx?FamilyID=966C3279-2EE9-4E14-A4F7-D4807239A396&displaylang=en 下载
一个简单的股票买卖程序,数据库访问和部分业务逻辑提供了 COM+ 企业服务和 DotNet Remoting 两种方式。
具体的架构参考一下图:
两种分布式应用,有一下特征,呵呵。 msdn 说得
- ASP.NET 应用程序(通过 IIS)承载远程组件以利用进程回收等功能和应用程序配置。
- 通过 HTTP 信道使用二进制格式化程序进行远程调用。使用 HTTP 信道将能够使用 IIS 承载组件,而二进制格式化程序的性能优于 SOAP 格式化程序。
- GAM 和 BLL 对象都是无状态的,这使得可以在 Application Center 群集中承载它们。
- 虽然 GAM 和 BLL 对象是无状态的,但 Fitch and Mather 7.0 使用实例方法(与静态方法相对)以便能够远程处理方法调用。静态方法总是在本地执行,即与调用方在同一个 AppDomain 类中执行。有关更多信息,请参见。
当然对于第一点,你也可以host Remoting 对象在一个 console 应用程序或者 windows 服务中。从而可以使用 TCP/Binary. 缺点TCP 需要自己去考虑安全监听。
我觉得有几点写的不错:
1。清晰的应用程序架构,由于问题比较简单。很容易整理清楚
2。 很好的coding 风格。最近在整理公司的代码规范,发现 FMStocks7 的代码注释确实不错。
比如一下是 买一个新股票的 DAO 代码
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
有几点很符合代码规范
1。合理的使用断言
2。// 注释风格
3。异常处理
4。。。。
FMStocks7 , 不错的一个.NET 示例程序相关推荐
- 一个多线程示例程序的BUG修复
一个多线程示例程序的BUG修复 在<.NET 4.0面向对象编程漫谈 >的<应用篇>一书中,我介绍了一个使用"信号量(Semaphore) "同步对象模拟多 ...
- Java黑皮书课后题第8章:*8.8(所有最近的点对)修改程序清单8-3,找出所有所有具有最小距离的点对。下面是一个运行示例
*8.8(所有最近的点对)修改程序清单8-3,找出所有所有具有最小距离的点对.下面是一个运行示例 题目 题目描述与运行示例 程序清单8-3 破题 代码 题目 题目描述与运行示例 *8.8(所有最近的点 ...
- 一个微信小程序开发示例
一个微信小程序开发示例(豆瓣电影) 新版本(不包含工作流)请移步至:https://github.com/zce/weapp-douban 当前仓库会暂缓更新,主要留下来给大家答疑 需要基础教程的朋友 ...
- .hpp文件_3 OpenCV的头文件说明及第一个示例程序
在安装OpenCV库并设置好编程环境之后,我们的就可以让代码中发生一些有趣的事情.但是首先必须弄清楚头文件.这些头文件反映了前面介绍的OpenCV模块化结构.主头文件是... / include / ...
- 做一个微信小程序需要多少钱?两种示例
在需求明确之前,做一个微信小程序需要多少钱还不清楚.我们选择了两种目前需求量很大的小程序,并推出了价格.你可以看看有没有你想要的: [服务微信小程序] 一般是订购小程序,预订小程序,常用于服装.餐厅. ...
- angular1.2.27_Angular 8 + Spring Boot 2.2:立即构建一个CRUD应用程序!
angular1.2.27 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权 ...
- 怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行
怎么运行aws的示例程序 在之前的 几篇 文章中,我描述了如何设置Spring Boot应用程序并在AWS Elastic Beanstalk上运行它. 尽管这是从物理服务器到云服务器的重要一步,但还 ...
- Angular 8 + Spring Boot 2.2:立即构建一个CRUD应用程序!
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 如果您已 ...
- 程序员疯狂记事:如何利用众多技术栈构建一个 Web 应用程序?!
[CSDN 编者按]"Elixir.Phoenix.Absinthe.GraphQL.React和Apollo"--在这几个关键词中,有几个是身为开发者的你一直想玩但还没来得及玩的 ...
最新文章
- Android 双屏开发 Presentation 的使用教程
- 放心,GPT-3不会“杀死”编程
- BNU 26349——Cards——————【区间dp】
- 监控路由器虚拟服务器,远程监控路由器虚拟服务器设置
- SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?
- 学习笔记(48):Python实战编程-grid布局
- P3804-[模板]后缀自动机【SAM】
- python Requests登录GitHub
- python3列表推导式矩阵转置_python3进阶之推导式1之列表(list)推导式(comprehensions)...
- 计算机无法进系统咋办,主编教您电脑无法进入系统怎么办
- 基金盘后业务的详细设置
- vue watch 修改滚动条_vue 中滚动条始终定位在底部的方法
- sqoop导入/导出
- 为什么以太网有最短帧长度的要求_线束工程师:车载以太网介绍
- 关于实习4个月的一些总结
- php没有错误信息,php – 如何调试没有错误信息的错误?
- SW练习_POJ2007_CCW
- Failure to find xxx in 中央仓库
- git的学习笔记(一):git本地操作
- DDD 为什么能火起来?和微服务有啥关系?
热门文章
- 《Python Cookbook 3rd》笔记(5.19):创建临时文件和文件夹
- 开封高级高考2021成绩查询,2021开封市地区高考成绩排名查询,开封市高考各高中成绩喜报榜单...
- php 配置 gd2,配置PHP对gd库的支持
- 小米C++开发 面试 准备阶段和部分真题
- 离合器半联动点的判断和技巧 为您支招
- 路由器和交换机的区别详解
- AMD OpenCL 大学课程
- 解决: Elements in iteration expect to have ‘v-bind:key‘ directives
- 【LA3415 训练指南】保守的老师 【二分图最大独立集,最小割】
- 1.3 使用电脑测试MC20的电话语音功能