This is what I know, let me know if you know otherwise. There are now 2 distinct GAC locations that you have to manage as of the .NET 4 Framework release.
The GAC was split into two, one for each CLR (2.0, 3.5 AND 4.0). The CLR version used for both .NET Framework 2.0 and .NET Framework 3.5 is CLR 2.0. To avoid issues between CLR 2.0 and CLR 4.0 , the GAC is now split into private GAC’s for each runtime. The main change is that CLR v2.0 applications now cannot see CLR v4.0 assemblies in the GAC.
In previous .NET versions, when I installed a .NET assembly into the GAC (using gacutil.exe or even drag and drop to the c:\windows\assembly directory), I could find it in the ‘C:\Windows\assembly’ path.
With .NET 4.0, GAC is now located in the 'C:\Windows\Microsoft.NET\assembly’ path.
In order to install a dll to the .NET 4 GAC it is necessary to use the gacutil found C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\GacUtil.exe In addition, you can no longer use the drag n' drop (in reality the drag n' drop really executed the gacutil via a windows explorer extension).
After you use the gacutil.exe -i {path to dll} you can view that it is indeed in the gac via gacutil -l (which will list all dlls in the gac). I used this command and piped the results to a text file via > out.txt which made it easier to find the recently added component.
I was not able to see my gac object in the directory for .net 4 (i.e. c:\windows\microsoft.net\assembly path). I am not sure why just yet. Ideas?
At this point, the object is in the local gac however if you are using vs.net 2010 it will still not show up in the list of references. To get the component to show up in the VS.NET list of references can add a registry entry to HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx At this point, the component is in the local GAC and is in the list of references to be used by vs.net.
Note, I did find that if I just added the path to the registry without adding it to the gac it was available to vs.net. So, because the component is listed via vs.net add references it does not necessarily mean it is in the gac.
What still confuses me is that I am still unable to view my recently added component in the .NET 4 directories above. Ideas?
WCF/ASP.Net Web Services are used for developing web services. Here is a list of differentiation between these two.
Feature
|
ASP.NET Web Service
|
WCF
|
Data Transformation
|
To and from Data Transition is done through XML Serializer
|
DataContractSerializer is used for data transition
|
File Extension
|
File extension is asmx
|
File extension is .svc
|
Webmethods vs DataContract Attributes
|
ASP.NET WebService uses Webmethods to translate .NET FW types in to XML.</SPAN< td>
|
The WCF uses the DataContractAttribute and DataMemeberAttribute to translate .NET FW types in to XML.
|
Limitations
|
Only Public fields or Properties of .NET types can be translated into XML.Only the classes which implement IEnumerable interface. ICollection interface can be serializable
|
Public/Private fields or properties of .NET types can be translated.
|
IDictionary Interface class
|
Classes that implement the IDictionary interface, such as Hash table can not be serialized.
|
The DataContractSerializer can translate the Hash Table into XML. Hence using WCF we can even translate HashTable into XML
|
Security
|
WCF is more secured than WebService due to ->
|
It is based on WS Standards. capable to run in any .NET executable, so it needs independent security capabilities.
Transfer security Responsible for providing message confidentiality, data integrity, and authentication of communicating parties. Authorization Responsible for providing a framework for making authorization decisions. Auditing Responsible for logging security-related events to the audit log
|
Binding
|
Web service supports only HTTP.
|
WCF supports multiple bindings HTTP,TCP,MSMQ,WS-HTTP etc
|
Messaging
|
ASP.Net web service uses only SOAP (Simple Object Access Protocol) for sending and receiving data. It uses Xml Schema to defines structure of message.
|
Windows Communication Foundation (WCF) can send message in any format. It uses SOAP for communication by default. It can use any other transport protocol for message transport .
|
Performance
|
Slower compared to WCF
|
The main advantage of the design of the DataContractSerializer is better performance over XML serialization
|
Fields / Properties
|
XMLSerialization does not indicate the which fields or properties of the type are serialized into XML
|
DataContratSerializer Explicitly shows the which fields or properties are serialized into XML
|
Exception handling
|
In ASP.NET Web services, Unhandled exceptions are returned to the client as SOAP faults.
|
In WCF Services, unhandled exceptions are not returned to clients as SOAP faults. A configuration setting is provided to have the unhandled exceptions returned to clients for the purpose of debugging.
|
Example
|
[WebService] public class Service : System.Web.Services.WebService { [WebMethod] public string Demo(string strDemog) { return strDemo; } }
|
[ServiceContract] public interface ITest { [OperationContract] string ShowMessage(string strDemo); } public class Service : ITest { public string Demo(string strDemo) { return strDemo; } }
|