首页 新闻 会员 周边

有没有对SVN和.net解决方案熟悉的?

0
悬赏园豆:30 [已解决问题] 解决于 2013-10-04 08:49

有没有对SVN和.net解决方案熟悉的?

有个解决方案想分配给多个人开发,主要是B/S的项目。分成3层架构。

1.多人开发不同的功能模块,相互之间看不到源码。

2.还有就是一些核心的代码也不希望开发人员看到。

怎么个解决方案呢?

 

如果能提供整套的解决办法,并提供技术支持的,也可以支付RMB。谢谢各位了~~

willieQ的主页 willieQ | 初学一级 | 园豆:62
提问于:2013-09-16 22:03
< >
分享
最佳答案
0

楼上的方法都不行,你们没考虑一个问题,就是开发人员在开发的使用时需要整个项目的代码或者库来运行的。代码通过 SVN 是可以设置权限的,如果限制某些人不能 checkout 部分代码文件,那么它要调试的话就必须有已经编译好的库,而 .Net 库又是用中间语言表示的,因此极易被反编译;如果做了混淆,虽然被反编译的难度加大了,但是同时开发成本也上升了,因为都是待开发的项目,你无法保证每个类库都是测试完备,同时你的开发人员水平有限,也编写不出高质量的代码,这样很多时候你需要从现有代码一直跟进到库的源代码才能发现问题,虽然可以用 PDB 来代替源码,但是我相信你的开发人员并没有这个能力使用 PDB 来调试程序。

B/S项目就更困难了,没有服务端和客户端的区别,甚至都不能简单的定义为服务和客户两个权限集来控制权限;特别是JS,它得嵌入页面,而调试牵扯面又太广。

那么这里只有两种可能,进程间通讯的项目,按照不同的进程划分权限;进程内通讯的项目,使用C++封装模块。

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2013-09-17 09:40

谢谢了~~程间通讯是什么?还用到C++啊!!越来越晕了~

willieQ | 园豆:62 (初学一级) | 2013-09-19 11:35

@willieQ: 进程是什么,知道吗?

Launcher | 园豆:45045 (高人七级) | 2013-09-22 08:48
其他回答(5)
0

不想让人看到的地方就封装成类库(最好进行一下混淆)提供就可以了呗。

不过说实话,这种做法带来的版本间的同步和Bug的定位及调试的麻烦是很大的。建议除了一些核心或变化不大的代码采取一下这种控制策略,非核心代码就别限制啦。

代码不是什么关键机密,让别人看估计都没多少人愿意看,需要控制一下别让人把代码拷贝出去了就可以了。

收获园豆:5
天方 | 园豆:5407 (大侠五级) | 2013-09-17 00:33

怎么控制拷贝呢?不可能24小时监控吧。

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2013-09-19 11:36
0

核心的模块,提供dll引用,不过你需要有能力保证提供的dll是具备稳定性的,不然团队的人开发起来相当郁闷。

至于svn,一般根据情况设置某些目录对于发者的权限(只读或写)

收获园豆:5
路过秋天 | 园豆:4787 (老鸟四级) | 2013-09-17 01:08

svn读写也控制不了拷贝出去吧~~

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2013-09-19 11:37
0

可以将项目分拆成几个solution,然后用nuget打包,建立一个nuget服务器,用nuget去更新各个包。用svn分别管理各个solution

收获园豆:5
sinhbv | 园豆:2579 (老鸟四级) | 2013-09-17 08:33

谢谢,我去了解一下nuget!

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2013-09-19 11:38
0

我也正好在找这方面的问题,有机会一起交流。

技术先锋 | 园豆:212 (菜鸟二级) | 2013-09-17 09:49

一起交流啊!!!

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2013-09-19 11:39
0

不同的人开发不同的模块 最后交由你自己组装。

模块之间通过接口调用,返回模拟数据。

收获园豆:5
Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-17 16:45

这样感觉会把原来的项目要重构~~~

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2013-09-19 11:40

@willieQ: 那你有时间的话,重构是好事。

不过重构要慎重!!!

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-22 10:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册