Project Description
BF4Rcon.NET is a .NET library for Battlefield 4's remote server administration interface.

With this library, developers will have the ability to add BF4 server administration features to their applications, such as kicking and banning players. Then entire protocol, including commands and events, is to be wrapped by this project.

BF4Rcon.NET is written to be familiar to .NET programmers. It follows Microsoft's design guidelines and verifies code quality through static code analysis.

Usage
Check the How to Use Certain Features page for information on using the library. Also be sure to check the rest of the documentation pages.

Portability
Due to how the library is designed, many of the components have the potential to be portable. As a result, the highly reusable portions of the library support the Portable Class Library. These components are able to work on multiple platforms, such as .NET 4+, Silverlight 4+, Windows Phone 7.5+, and .NET for Windows Store apps.

How it works is that classes like RconClient, which depends on IRconConnection, can work on those platforms. However, the sockets on these platforms are all different. A different IRconConnection will be needed for each platform, but the portable classes will be able to use these non-portable implementations!

The only downside is that users will need to use the Microsoft.Bcl.Async package. This is because PCL unfortunately doesn't support the async/await features in .NET. Hopefully, in the future, this dependency can be removed.

Changes from BF3Rcon.NET
This library is to contain at least the same features as the BF3 library, but the entire project is written from scratch. This time, object-oriented design principles and test-driven development are being used to improve on all aspects of the library.

One major difference is that RconClient is no longer composed of classes like PlayerCollection. Users will need to create these objects on their own.

In addition, RconClient no longer manages connections. This is now the responsibility of an implementation of IRconConnection. Users will now need to create one of these and pass it to an RconClient. Both this and the previous change aren't very complicated, though.

The coolest change is probably the addition of the Task-based Asynchronous Pattern (async/await). Though profiling hasn't been done yet (or to be done ever :D), this implementation may have better performance. In general, though, users now have to ability to asynchronously send requests. In the last library, users would have to get the response in an event handler.

Last edited Dec 8, 2013 at 1:28 AM by Timiz0r, version 5