考虑两个.NET的DLL。第一个“application.dll”包含主要的业务逻辑和数据访问代码。第二,“webservice.dll”包括主要的WebMethods链接到的对象和方法与application.dll用于提供Web服务调用现有代码的目的。什么打破了.NET二进制文件(DLL)接口
(例如添加新的类,新的字段或方法添加到现有类等)可以或不可以进行什么样的变化,而不需要webservice.dll重新编译到application.dll?
考虑两个.NET的DLL。第一个“application.dll”包含主要的业务逻辑和数据访问代码。第二,“webservice.dll”包括主要的WebMethods链接到的对象和方法与application.dll用于提供Web服务调用现有代码的目的。什么打破了.NET二进制文件(DLL)接口
(例如添加新的类,新的字段或方法添加到现有类等)可以或不可以进行什么样的变化,而不需要webservice.dll重新编译到application.dll?
大多数事情都会好起来的;有些东西会打破它:
sealed
当它在第二DLLstruct
被继承,如果呼叫者使用按成员初始化,而不是构造函数初始化(删除包括将可访问性更改为非公开)
从技术上讲,该名称将打破它(名称和版本以及强命名集合中的关键标记)。否则,该框架将尝试加载和使用该DLL,这将工作或多或少罚款,直到它遇到不同的类型或方法签名,缺少类型等。但请注意,重新使用名称会直回到DLL地狱(或其问题)。
我建议阅读更多关于assembly versioning得到一个想法如何解决这些问题。
只要不调用新类,函数[在application.dll中添加],就可以对application.dll进行任何更改,而无需重新编译webservice.dll。 如果您想要使用webservice.dll中的任何application.dll变更,那么您必须重新编译该课程的webservice.dll问题。 dll被websrvice.dll使用,它会破坏你的代码在web服务中。
对接口的任何更改将被打破,虽然,对不对? – 2009-04-30 11:46:54
我在添加此评论时已经添加了接口和抽象方法;-p – 2009-04-30 11:48:06