反射和特性在SOA中的使用

组长给了个任务,需要了解SOA,眼一瞎,什么都不懂。幸好摆弄过百度API,加上百度了一个不错的文章,算有所了解了吧!

(一开始以为什么都没有,自己瞎捉摸,后来才知道原来已经有了一个demo,我也是醉了。)

不过自己写了个简单到不能再简单的,也不知道是对是错的小demo,然后再看别人的,也算是加深学习了。

用一般处理程序来做接口:

[Test(ClassType = typeof(TestSOABusiness))]
    public class TestHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            string usertype = context.Request.QueryString["usertype"];
            Type classtype = null;
            string value=string.Empty;
            Type t = this.GetType();
            object[] objAttrs = t.GetCustomAttributes(typeof(TestAttribute), true);
            foreach (object obj in objAttrs)
            {
                TestAttribute attr = obj as TestAttribute;
                if (attr != null)
                {
                   classtype = attr.ClassType;
                   break;
                }
            }

            switch(usertype)
            {
                case "GetMethodA":
                    {
                        MethodInfo mf1 = classtype.GetMethod(usertype, BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, null);
                        value = (string)mf1.Invoke(null, new object[] { usertype });
                        break;
                    }
                case "GetMethodB":
                    {
                        MethodInfo mf1 = classtype.GetMethod(usertype, BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(int) }, null);
                        value = (string)mf1.Invoke(null, new object[] { 2 });
                        break;
                    }
                default:
                    break;

            }
            context.Response.Write(value);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

自定义的方法和特性就不贴了。

ps:调用方法的参数实体也是可以利用反射和配置文件来完成的,一是麻烦,二是自己一开始也不会(现在也不怎么会,只是知道了大概的逻辑。。。)。

时间: 2024-09-17 08:40:39

反射和特性在SOA中的使用的相关文章

C#图解教程 第二十四章 反射和特性

反射和特性元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特性其他预定义特性有关应用特性的更多内容多个特性其他类型的目标全局特性自定义特性声明自定义特性使用特性的构造函数指定构造函数使用构造函数构造函数中的位置参数和命名参数限制特性的使用自定义特性的最佳实践访问特性使用IsDefined方法使用GetCustomAttributes方法 Note 类的元数据包含

.NET基础拾遗(4)委托、事件、反射与特性

Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 一.委托基础 1.1 简述委托的基本原理 委托这个概念对C++程序员来说并不陌生,因为它和C++中的函数指针非常类似,很多码农也喜欢称委托为安全的函数指针.无论这一说法是否正确,委托的的确确实现了和函数指针类似的功能,那就是提供了程序回调指定方法的机制. 在委托内部,包含了一个指向某个方法的指针(这一点上委托实现机制和C++的函数指针一致),为何称其

十七、C# 反射、特性和动态编程

反射.特性和动态编程 1.访问元数据 2.成员调用 3.泛型上的反射 4.自定义特性 5.特性构造器 6.具名参数 7.预定义特性 8.动态编程 特性(attribute)是在一个程序集中插入额外的元数据, 并将这些元数据同一个编程构造(比如类.方法或者属性)关联起来的一种方式. 反射 动态编程 一.反射 可以利用反射做下面这些事情. a.访问程序集中类型的元数据.其中包括像完整类型名称和成员名这样的构造, 以及对一个构造进行修饰的任何特性. b.使用元数据,在运行时动态调用一个类型的成员,而不

C#反射与特性(一):反射基础

目录 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 2. 程序集操作 2.1 获取 程序集对象(Assembly) 2.2 Assembly 使用 2.3 获取程序集的方式 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 在 <C# 7.0 本质论>中,关于这方面的知识在 <第十八章 反射.特性和动态编程>:在<C# 7.0 核心技术指南>中,这部分内容在<第19章 反射和元数据>. [图片来自 <C# 7.0

C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

反射以及Attribute在ORM中的应用 一. 反射什么是反射?简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等.反射有什么用呢?反射不但让你在运行是获取对象的信息,还提供运行时动态调用对象方法以及动态设置.获取属性等的能力.反射在ORM中有什么用呢?我这里所讨论的ORM实现是通过自定义Attribute的方式进行映射规则的描述的.但是我们并不知道具体哪个对象需要对应哪个表,并且这些对象是独立于我们的ORM框架的,所以我们只能通过自定义Attr

使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new RefTest()

.NET技术-1.0.使用反射、特性简化代码(验证Model类)

使用反射.特性简化代码 参考项目:利用反射验证Model类/AssemblyVerification 假设现在有一个学生类(Student) /// <summary> /// 学生类 /// </summary> public class Student { /// <summary> /// 名字 /// </summary> private string name; public string Name { get { return name; } s

java中的反射机制在Android开发中的用处

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.      然而在android中Google很多的类的某些方法不让第三方应用去调用,通过java反射机制能把这些隐藏方法获取出来并调用,三方应用上我们就很方便的去用这些方法.      例如我们需要安全的杀死某个应用的服务和进程调用ActivityManager.forceStopPack

SOA中springmvc中restful服务的数据权限加密方式分享

restful中数据权限加密方式有很多种,特别是针对于request json的方式加密,这里详细介绍了SOA中针对于get.post数据加密方式,保证数据传输中的安全性: Java代码 @Component("dataSignInterceptor") publicclass DataSignInterceptorimplements MethodInterceptor { @Autowired private SoaServiceConfigService soaServiceCo