Coder Social home page Coder Social logo

prism's Introduction

This project is now archived. Main techniques are migrated to EmitToolbox, for name of Prism is the same to another famous UI library. In new project, the design is reworked to provide more flexibility and convenience to use.

Prism

Prism Framework is an AOP framework based on IL dynamic weaving, which provides interfaces and classes to generate proxy classes in run-time.

This project also contains some common mechanisms based on the Prism Framework, such as Decorating (Run-time Method Decorator) and Injecting (IoC).

Goals

This project is still under rapid development towards goals as below:

  • Convenient to use. This requires developers of this project to lower the complexity of its API.
  • High performance. All AOP implementations have efficiency loss in varying degrees. This project aims at reducing the RAM and time consumption of the proxy procedure.
  • Extensible to other scenarios. The Prism Framework is an AOP framework, and its designed to help developers to develop other techniques based on AOP, rather than let users directly use this framework, which might be hard.

Road Map

  • Decorating: A plugin which allows users to decorate (modify) the behavior of methods in run-time.
  • Injecting: A plugin which implements dependency injection (IoC) in proxy classes, which can significantly improve the performance.
  • Remoting: A plugin which provides remote procedure call (RPC) support by encoding and decoding invocation contexts; data transmission ability is not included.

If you have any ideas or suggestions, please open a new issue to let us know. Hereby allow us to express our heartfelt gratefulness for your help.

Current Status

Since the goals of Remoting plugin are achieved, the developer team will focus on bugs fixing and performance improvement for a while, until another plugin design is added to the road map.

Contributing

Since it is a open-source project, we appreciate and welcome contribution in any forms, including:

  • Bug reporting. Please report any bugs you met via issues.
  • Function suggestions. Please share your ideas or suggestion via issues, or email to our official email [email protected] or manager email [email protected] .
  • Pull requests. Please create pull requests in this repository, and we can continue the following procedure.
  • Plugins. You can submit your plugins as pull requests, or tell us the plugin repository address, and we are happy and grateful to add a link to your plugin.

Related Efforts

This framework is still under rapid development, thus its API may be unstable. If you are looking for mature frameworks, please allow us to recommend those production-ready projects for you:

AOP

Castle: A widely recognized AOP framework, also based on dynamic IL weaving.

PostSharp: A mature commercial AOP project, which is based on source weaving. This framework inject codes in the compiling stage as a MSBuild task.

IoC

Ninject: A widely used convenient IoC library. It is easy to use and it have many useful extensions.

Spring.NET: A .NET implementation of the famous Java framework Spring. It is a heavyweight yet comprehensive framework, including but not limited to AOP and IoC.

RPC

gRPC: A widely used high-performance RPC framework. It support a large range of programming languages and operating systems.

Serialization

Since the Serialization plugin will not be on the road map in the near future, you may need serialization tools to use along with our Remoting plugin.

protobuf-net: A C# wrapper of gRPC. It is designed to be convenient to use for C# developers. By simply add the 'ProtoContract' attribute to a class can make it serializable.

prism's People

Contributors

oldvincent avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.