系统要求
1、服务器端部署在Window或Linux下面。目前在Window 2000下比较多(linux很少)
2、客户端运行在Window环境下,要求运行快速,输入便捷。
3、统计等会时常需要新增(希望新增统计不需要重新修客户端程序),最好能通过浏览器直接查看统计。
4、需要为第三方系统提供业务逻辑接口,方便第三方系统的接入
5、界面的修改不需要与业务逻辑相关
6、尽量简化客户端的安装
7、从长远看,后继会需要为用户提供一些结果的远程查询(与统计类似)
8、需要将一些资料(病历、处方)方便打印,对于发票要求精确打印。最好是可见既可得。
分析:
1、因为需要为第三方提供接口,还可能给患者提供远程查询功能。为了简化接口,使用Web接口方式实现。
2、结果查询及设置采用XML或Json (从减少数据传输的角度及JavaScript对Json支持更强的角度出发,使用Json)
3、客户端运行在Window环境下,对速度及便捷性要求比较高,所以是一个桌面系统。目前VC、C# (WinForm、WPF、Silverlight) 都可以实现。但VC开发界面太过复杂,而且不太漂亮(C#下有个DevExpress库非常不错,支持WinForm、WPF、Silverlight、ASP.net),所以放弃。
4、WPF、Silverlight不熟悉,而且查了一些资料说在性能方面并不如意,所以放弃,选择C# WinForm。
5、资料打印想使用控件本身的打印+水晶报表方式
5、Web接口实现:采用Java(Jsp + struts) 还是使用ASP.net?
目前Java可以运行在Window、Linux下面。而ASP.net只可选择在Window下。而且对于Java的了解更多,所以更倾向于Jsp + struts。但从界面来看,asp.net使用C#语言,而且与WinForm可以使用同一个DevExpress,这是目前选择asp.net比较大的优点。
但devexpress只是个控件库,而C#是语言级的缺陷,另外Jsp有ajax和ext.js,虽然比起devexpress要差些,但至少比起期待C#支持Linux会更有希望些(哈,好象C#有支持linux的了哟,但目前已经用Java开发了部分代码,而且对C#不太熟悉,所以暂不改为.Net方式了。后继可以根据对.Net的熟悉程度,需求的变更情况,以决定是否需要全部改为C#,还是找类似DevExpress的Java控件,或是使用技术让.Net程序运行在Tomcat下,或是使用proxy将一些请求中转为.Net的请求.......
http://www.dhtmlx.com/docs/products/dhtmlxSuite/index.shtml 这里有一些控件,不知道是java的还是javascript配合使用的)。
目前使用WinForm方式时,前端的很多数据处理都是以json等方式与后端的webservice交互的,并由客户端使用DevExpress控件进行显示。包括现在的XtraReport也是这样方式(除了部分可能直接以Web方式显示的除外,这种方式需要返回的数据是DataSet的XML文件)。
后继可能会需要考虑使用Jsp或ajax, 或Asp.net等方式,那时再考虑是否需要从java往Asp.net的迁移(这个可能还是需要考虑跨操作系统平台等情况)
当然,具体是选择ASP.net还是Jsp,可能还需要进一步对asp.net及Jsp的进一步了解才能下结论。
两方面(是跨平台更重要,还是界面(打印)更重要,需要具体分析)。总之,尽可能把能移到Web中做的事就移到Web中做,WinForm只负责一些比较复杂的,要求响应比较迅速的主界面。其余的次要的弹出、查询、统计界面都使用Web界面实现(当然要考虑交互及界面美观)。
另外需要考虑工作量及一些熟悉程度
开始有想过使用WinForm + ASP.net + Struts的方式,但后来一想,这种方式其实最后还是只可能运行在Window的服务器上。
也有考虑过所有的界面都有WinForm来实现,Struts只负责数据处理,决不返回界面。但这种方式的可扩展性就会比较差了。
当然,在目前还没有选定具体的实现时,使用ASP.net实现统计,而WinForm实现固定而且复杂,要求漂亮的界面(而不只是主要的界面,并尽可能放在dll中)。
需要了解:ext, ajax对于统计及打印的支持力度如何? 能否满足用户对于统计的查询,打印的要求呢?
Java也有一些不错的报表的,比如JReport, 水晶报表(互动功能如何?)。如果真的有复杂的报表,而且需要交互的,则使用ASP.net使用,并要求用户提供对应的机器
使用过silverlight及asp.net,还有html5, js的版本后,另外加上考虑到版本风险问题,还是使用java的一些开源库来做吧
ASP.net不进行session判断,并将cookie值转发给后端的struts?
而且还有一个域名的问题(不同的域名,客户端不好处理。当然也可以通过重定向得到。但总是不灵活的)
Web服务器这种方式,如何进行授权的限制呢?因为客户是可以登录到服务器的,如果用户懂点Java的话,他可以把服务认证,权限的过滤器等给停止不用
devexpress控件的不足:不能够表格的背景图,另外精确定位比较麻烦,套打比较麻烦。还有不支持财务控件(昂立万控件支持)。不过,目前业务暂时没有这种需要,可以先不考虑。(对话框添加背景方式呢?)。 有时不能强求一个控件有所有的功能
http://www.cnblogs.com/DevExpress/ devexpress控件中文网官方博客
使用https
http://blog.163.com/xhy_cy/blog/static/10497623200953510586/ C#访问https
http://hi.baidu.com/ju_feng/item/68d3d50f27e1e0f7a1103462
http://www.telerik.com/products/winforms/multicolumncombo.aspx telerik控件 有个邮件列表功能 (SuggestAppend AutoCompleteExtender, TzRichedit http://www.codeproject.com/Articles/15960/Custom-AutoCompleteExtender-with-multiple-word-sug )及左右List选择功能
http://blog.csdn.net/sendreams/article/details/1761720 devexpress汉化
问题:DevExpress的AutoComplete能不能匹配中间的字符呢?
ComboBoxEdit控件能否在编辑状态下输入匹配的字符后显示包含有图标呢?
http://club.topsage.com/thread-2213648-2-1.html
telerik 控件的错误提示功能如何呢?多列选择时,是否有值与显示分别使用不同的列呢?好象没有布局视图
所以总的说来,还是使用DevExpress, 医生列表选择的控件及左右List选择的功能自己封装
另外,在写程序时,界面与数据尽可能的分开来
配置信息使用统一的界面,并通过传一个配置文件指定Grid字段信息,新增、修改对应的对话框通过反射实现(一个基类,并传dll名称和类名来实现)
一个界面使用一个文件来配置各控件的一些基本信息:权限Key、提示、值的合法判断、是否显示、是否Enable等
Grid、Property等也对应一个配置文件
一些查询可以使用LookUp或是查询与最终结果不一致的方式暂时代替实现
DevExpress.XtraEditors.XtraMessageBox.Show(message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
用google的gson-2.0吧,我用到现在还没发现问题
C:\Documents and Settings\All Users\Documents\DXperience 12.1 Demos\WinForms\XtraGrid\Bin
C:\Documents and Settings\All Users\Documents\DXperience 12.1 Demos\WinForms\XtraVerticalGrid
https://www.devexpress.com/ClientCenter/Downloads/Documentation
combobox 匹配规则 contains startwith endwith
http://pan.baidu.com/share/link?shareid=62076&uk=3222143235 12.1.7的版本
http://wenku.baidu.com/view/b94acae8f8c75fbfc77db258.html 网友对GridControl的总结
http://hi.baidu.com/fengchenziyi/item/65ab80754d876e29d7a89c81 快捷键设置
http://blog.csdn.net/xiao__gui/article/details/7946058
Grid右键 1、打印 2、导出 3、复制 4、粘贴 5、新增 6、删除
新增、删除、更新、打印、打印预览、导出、上移、下移、置顶、置底、清空、
BandedGridColumn column = Columns.AddField(gridProperty_.Columns[i].Key); // 添加一个数据字段
column.FieldName = gridProperty_.Columns[i].Key;
column.Name = gridProperty_.Columns[i].Key;
column.Caption = gridProperty_.Columns[i].Caption;
column.VisibleIndex = i + 1; //
column.OptionsColumn.AllowEdit = true; // 此列不可编辑
column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True;
column.Visible = gridProperty_.Columns[i].Visible;
column.Width = 2; // gridProperty_.Columns[i].Width;
System.Windows.Forms.MessageBox.Show(column.Caption + column.Width.ToString() + " " + band.Width);
http://www.doc88.com/p-209946617023.html 读取扫描仪数据
http://blog.csdn.net/hejialin666/article/details/5709825 获取打印机列表 DeviceCapabilities http://bbs.csdn.net/topics/200033744 http://bbs.csdn.net/topics/360108591
http://www.cnblogs.com/whldqpi/archive/2009/10/14/1582995.html C#连接oracle
http://www.cnblogs.com/zwffff/archive/2010/05/18/1738417.html C#注册表 OK
读取身份证
打印机
XML或Json转为DataSet
算法 (AES, Base64, Md5, SHA256) OK
文件上传
串口编程、语音、控制电脑的、LCD的、Socket通讯
右键菜单
截图、视频捕获
指纹识别
不需要GridBand
/// <summary>
/// 设置GridView序列号面板的宽度
/// </summary>
/// <param name="gv"></param>
public void SetGridIndicatorWidth(DevExpress.XtraGrid.Views.Grid.GridView gv)
{
if (gv == null) return;
gv.IndicatorWidth = 30 + (gv.RowCount.ToString().Length - 1) * 6;
}
图片采集使用统一的控件,未保存到数据库的数据,临时保存在本机的临时目录下,以日期为标记,隔指定时间以上删除之?
信息中增加身份证图片扫描?还是在其他位置?
右键菜单,有自动新增的功能,有主动新增的按钮
DevExpress.XtraEditors.Controls.Localizer.Active = New DevExpress.LocalizationCHS.DevExpressXtraEditorsLocalizationCHS
DevExpress.XtraNavBar.NavBarLocalizer.Active = New DevExpress.LocalizationCHS.DevExpressXtraNavBarLocalizationCHS
DevExpress.XtraBars.Localization.BarLocalizer.Active = New DevExpress.LocalizationCHS.DevExpressXtraBarsLocalizationCHS
......
自己用到哪些控件就调用哪些控件的汉化方法就是了
目前来回都是Json格式
如下一些配置设置
1、host_name, server_name, port, cert的文件信息、是否使用cert、字符集(GB2312)
如下一些信息在每个请求都需要带(除了login外)
1、登录的账户?密码?
2、
如下一些信息在参数中指定
POST还是Get
ContentType、ContentLength
Cookie、
Post参数
URL
文件上传及下载的C# / Java实现
C#从Json到Object的相互转换 http://uzone.univs.cn/content.action?itemId=2781395_i7gd30c7c08tqk7kc7c1
http://zhidao.baidu.com/question/279386053.html
http://blog.sina.com.cn/s/blog_64008ed70101dxpj.html
http://www.cnblogs.com/wangchuang/archive/2012/07/19/2599472.html
http://wenwen.soso.com/z/q356956061.htm
HMAC_SHA256(用google搜) http://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha256.aspx
http://buchananweb.co.uk/security01.aspx
log4j.properties 乱码 native2asii http://baike.baidu.com/view/1812368.htm
struct2 访问多个database
annotation+filter
jdbc连接池 JNDI
Hibernate访问多个数据库 http://developer.51cto.com/art/200907/133239.htm
http://hi.baidu.com/piaokes/item/f0a6140c2c2621813d42e247
http://www.cnblogs.com/ldcsaa/archive/2012/02/23/2364036.html 文件上传与下载组件 (可以从util派生)
制作Win7安装启动U盘
http://www.oschina.net/p/googlecode/similar_projects?sort=view&lang=22 网上使用SVN管理代码 http://blog.csdn.net/c395565746c/article/details/5964041
http://blog.csdn.net/ren8179/article/details/8468763 DevExpress控件 LookupEdit 模糊查询 这个不行,没有达到预期的效果
http://www.cnblogs.com/yayaLee/archive/2010/11/24/1886381.html 这个LookupEdit不错,但会弹出试用两个字
当前问题:
1、使用JTA方式多数据库方式没有成功,先不考虑多数据库。但使用封装的调用接口来处理事务 ?
2、Oracle无法插入'',而是会转为null处理,这个需要额外处理下
TeeChart
http://www.cnblogs.com/wuhuacong/archive/2011/08/31/2161002.html
1、提供一个搜索的选择框,之后将搜索结果加入到列表中
2、提供一个预览功能的按钮,可以手动点击先预览。点确定不会删除
3、删除数据前,也会弹出一个预览的框,但这个时候没有确定按钮,而是删除按钮,并需要再次输入密码。之后删除显示删除的进度
文件上传、下载
Session
手写签名:http://www.cnblogs.com/wuhuacong/archive/2012/11/27/2791434.html
手写签名,使用图片上传方式吧
DevExpress的报表(可客户自定义)
患者是各种操作的基本对象,有没有哪种办法即可以通用的显示,又可以方便的进行录入,查询?右键?而且需要能适应不同的界面进行展示。分为几种基本的格式?快速查询(一些ID号)
权限管理系统
控件初始化类 Init(enum key); 这个Key是一个枚举的String类型
收集jpg, icon, png图片 http://www.easyicon.net/icondetail/1065394/
工具栏合并、提示信息
this.bar1.DockCol = 0;
this.bar1.DockRow = 1;
http://liuqing9382.iteye.com/blog/1574864 使用myBatis方式支持Oracle、Mysql等多种主键增长的方式 http://www.iteye.com/problems/79854
mybatis 根据数据表生成类
mybatis spring 事务处理
maven
http://zouhuajian01.blog.163.com/blog/static/11769877201145101032888/?suggestedreading&wumii ibatis [转]ibatis自动生成工具,abator使用方法
待学习:
1、spring MVC (使用这种方式可以不需要struts)
2、spring mybatis的事务
3、jar
4、
http://blog.163.com/zhao_jinggui/blog/static/1696204292012417112424612/ 加密Spring加载的Properties文件
支持Java
1、已经写了部分代码
2、开源的比较多
3、感觉spring比spring.net要好
支持.net
1、与客户端语言及使用控件一样,减少学习成本
2、有DataSet,可以直接输入出客户端。而java还需要自己去封装
3、有DevExpress控件,可以直接生成一些统计之类的界面
最近对DevExpress的Asp.net、SilverLight、htm5版本进行了体验,体验结果如下:
1、Asp.net, SilverLight两者编写一个界面的速度适中,但比起WinForm来还是更慢。
Asp.net不太好和Java融合,需要更换为Asp.net框架
SilverLight似乎可以和Java融合,但融合比较难,而且部署麻烦,需要浏览器安装插件
需要收费,出现版权问题时的代价会比较高
2、html5版本,最容易与java融合,编写代码程序会比WinForm、ASP.net更慢些。但与java的融合程度最高,但目前只有一些图形,没有见到表格之类的。暂不考虑
再加上我们目前只考虑用户使用我们安装的客户端的情况,所以不需要
版权问题:
1、只使用到DevExpress的WinForm版, 加上汉化大概1W多一点,(据了解Report及Chart也在这个版本中,但给用户自定义报表的编辑器好象需要另外买):
注:Report类似于水晶报表, Chart是图表控件,可以嵌入到Report里面。
2、服务器使用java开发,没什么问题
3、oracle问题,其他厂商也都有。而且我们可以考虑兼容mysql,那样就可以规避了
4、开发工具Visual Studio 2012 (专业版目前8000一套)和window (几百元一套)一样,中国普遍存在的问题。
5、其他的:暂未发现