If the above deters you from developing your own CIM server then you will need to obtain one from the open source community or from commercial vendors . Questions you might like to ask about potential sources include the following:
What WBEM operations does the implementation provide? In particular, are the more recent features such as queries supported?
In which language is the code written? Does it lend itself to an embedded environment (if this is important to you)?
How does the implementation interface to providers? Is the CMPI supported? Is each provider executed in a different thread? Is a provider executed in an address space different from that of the WBEM server so that an error in the provider cannot cause the server to crash? Are providers dynamically linked as required? If so, are they automatically unlinked after a given time? If so, then can they be pinned in memory to reduce the overhead of having to save state?
How well has the implementation been adopted in the industry? A widely adopted implementation is likely to be better supported than one with little uptake. Is there a regular release schedule for the implementation and is the feature roadmap published in advance?
Is the code open source? If not, what guarantees does the supplier offer for continued support? If so, then what are the licencing conditions and are these acceptable to your company? If the product is not open source then does the vendor make the source available to you? If not, how many different processor/operating system/board combinations will the vendor support?
How easy is it to install? Does the package contain test cases which can be run to ensure that the installation has been successful?
What administration and developer tools are available?
What levels of security are provided with the implementation?
How much memory does the implementation require (particularly important if the code is to be implemented in an embedded device)?
What performance benchmarks are available for the implementation? A poorly designed repository interface, for example, can seriously impact the performance of an otherwise good implementation.